@@ -2,12 +2,19 @@ let digConstructor = (~env, ~getModule, path) => {
2
2
switch (Query . resolveFromCompilerPath(~env, ~getModule, path)) {
3
3
| ` Not_found => None
4
4
| ` Stamp (stamp ) =>
5
- let %opt t = Hashtbl.find_opt(env.file.stamps.types, stamp);
6
- Some ((env , t ));
5
+ switch (Hashtbl . find_opt(env. file. stamps. types, stamp)) {
6
+ | None => None
7
+ | Some (t ) => Some ((env, t))
8
+ }
7
9
| ` Exported (env , name ) =>
8
- let %opt stamp = Hashtbl.find_opt(env.exported.types, name);
9
- let %opt t = Hashtbl.find_opt(env.file.stamps.types, stamp);
10
- Some ((env , t ));
10
+ switch (Hashtbl . find_opt(env. exported. types, name)) {
11
+ | None => None
12
+ | Some (stamp ) =>
13
+ switch (Hashtbl . find_opt(env. file. stamps. types, stamp)) {
14
+ | None => None
15
+ | Some (t ) => Some ((env, t))
16
+ }
17
+ }
11
18
| _ => None
12
19
};
13
20
};
@@ -67,38 +74,60 @@ let newHover = (~file: SharedTypes.file, ~getModule, loc) => {
67
74
Some (codeBlock(typeDef));
68
75
| LModule (Definition (stamp , _tip ))
69
76
| LModule (LocalReference (stamp , _tip )) =>
70
- let %opt md = Hashtbl.find_opt(file.stamps.modules, stamp);
71
- let %opt (file, declared) =
72
- References . resolveModuleReference (~file , ~getModule , md );
73
- let (name , docstring ) =
74
- switch (declared) {
75
- | Some (d ) => (d. name. txt, d. docstring)
76
- | None => (file. moduleName, file. contents. docstring)
77
- };
78
- showModule(~docstring, ~name, ~file, declared);
77
+ switch (Hashtbl . find_opt(file. stamps. modules, stamp)) {
78
+ | None => None
79
+ | Some (md ) =>
80
+ switch (References . resolveModuleReference(~file, ~getModule, md)) {
81
+ | None => None
82
+ | Some ((file , declared )) =>
83
+ let (name , docstring ) =
84
+ switch (declared) {
85
+ | Some (d ) => (d. name. txt, d. docstring)
86
+ | None => (file. moduleName, file. contents. docstring)
87
+ };
88
+ showModule(~docstring, ~name, ~file, declared);
89
+ }
90
+ }
79
91
| LModule (GlobalReference (moduleName , path , tip )) =>
80
- let %opt file = getModule(moduleName);
81
- let env = Query . fileEnv(file);
82
- let %opt (env, name) = Query.resolvePath(~env, ~path, ~getModule);
83
- let %opt stamp = Query.exportedForTip(~env, name, tip);
84
- let %opt md = Hashtbl.find_opt(file.stamps.modules, stamp);
85
- let %opt (file, declared) =
86
- References . resolveModuleReference (~file , ~getModule , md );
87
- let (name , docstring ) =
88
- switch (declared) {
89
- | Some (d ) => (d. name. txt, d. docstring)
90
- | None => (file. moduleName, file. contents. docstring)
92
+ switch (getModule(moduleName)) {
93
+ | None => None
94
+ | Some (file ) =>
95
+ let env = Query . fileEnv(file);
96
+ switch (Query . resolvePath(~env, ~path, ~getModule)) {
97
+ | None => None
98
+ | Some ((env , name )) =>
99
+ switch (Query . exportedForTip(~env, name, tip)) {
100
+ | None => None
101
+ | Some (stamp ) =>
102
+ switch (Hashtbl . find_opt(file. stamps. modules, stamp)) {
103
+ | None => None
104
+ | Some (md ) =>
105
+ switch (References . resolveModuleReference(~file, ~getModule, md)) {
106
+ | None => None
107
+ | Some ((file , declared )) =>
108
+ let (name , docstring ) =
109
+ switch (declared) {
110
+ | Some (d ) => (d. name. txt, d. docstring)
111
+ | None => (file. moduleName, file. contents. docstring)
112
+ };
113
+ showModule(~docstring, ~name, ~file, declared);
114
+ }
115
+ }
116
+ }
91
117
};
92
- showModule(~docstring , ~name , ~file , declared) ;
118
+ }
93
119
| LModule (NotFound ) => None
94
120
| TopLevelModule (name ) =>
95
- let %opt file = getModule(name);
96
- showModule (
97
- ~docstring =file .contents .docstring ,
98
- ~name =file .moduleName ,
99
- ~file ,
100
- None ,
101
- );
121
+ switch (getModule(name)) {
122
+ | None => None
123
+ | Some (file ) =>
124
+ showModule(
125
+ ~docstring= file. contents. docstring,
126
+ ~name= file. moduleName,
127
+ ~file,
128
+ None ,
129
+ )
130
+ }
102
131
| Typed (_ , Definition (_ , Field (_ ) | Constructor (_ ))) => None
103
132
| Constant (t ) =>
104
133
Some (
@@ -117,15 +146,20 @@ let newHover = (~file: SharedTypes.file, ~getModule, loc) => {
117
146
let typeString = codeBlock(typ |> Shared . typeToString);
118
147
let extraTypeInfo = {
119
148
let env = Query . fileEnv(file);
120
- let %opt path = typ |> Shared.digConstructor;
121
- let %opt (_env, {docstring, name: {txt}, item: {decl}}) =
122
- digConstructor (~env , ~getModule , path );
123
- let isUncurriedInternal =
124
- Utils . startsWith(Path . name(path), "Js.Fn.arity" );
125
- if (isUncurriedInternal) {
126
- None ;
127
- } else {
128
- Some ((decl |> Shared . declToString(txt), docstring));
149
+ switch (typ |> Shared . digConstructor) {
150
+ | None => None
151
+ | Some (path ) =>
152
+ switch (digConstructor(~env, ~getModule, path)) {
153
+ | None => None
154
+ | Some ((_env , {docstring, name: {txt}, item: {decl}})) =>
155
+ let isUncurriedInternal =
156
+ Utils . startsWith(Path . name(path), "Js.Fn.arity" );
157
+ if (isUncurriedInternal) {
158
+ None ;
159
+ } else {
160
+ Some ((decl |> Shared . declToString(txt), docstring));
161
+ };
162
+ }
129
163
};
130
164
};
131
165
let (typeString , docstring ) =
0 commit comments