Skip to content

Commit b467c64

Browse files
authored
resolve module aliases in hover (#820)
* resolve module aliases in hover * changelog
1 parent 59855be commit b467c64

File tree

4 files changed

+19
-7
lines changed

4 files changed

+19
-7
lines changed

CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212
1313
## master
1414

15+
#### :nail_care: Polish
16+
17+
- Resolve module aliases in hover. https://github.com/rescript-lang/rescript-vscode/pull/820
18+
1519
## 1.20.0
1620

1721
#### :rocket: New Feature

analysis/src/Hover.ml

+9-7
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ let showModuleTopLevel ~docstring ~isType ~name (topLevel : Module.item list) =
2727
in
2828
Some (doc ^ full)
2929

30-
let rec showModule ~docstring ~(file : File.t) ~name
30+
let rec showModule ~docstring ~(file : File.t) ~package ~name
3131
(declared : Module.t Declared.t option) =
3232
match declared with
3333
| None ->
@@ -41,10 +41,12 @@ let rec showModule ~docstring ~(file : File.t) ~name
4141
showModuleTopLevel ~docstring ~isType ~name items
4242
| Some ({item = Constraint (_moduleItem, moduleTypeItem)} as declared) ->
4343
(* show the interface *)
44-
showModule ~docstring ~file ~name
44+
showModule ~docstring ~file ~name ~package
4545
(Some {declared with item = moduleTypeItem})
46-
| Some {item = Ident path} ->
47-
Some ("Unable to resolve module reference " ^ Path.name path)
46+
| Some ({item = Ident path} as declared) -> (
47+
match References.resolveModuleReference ~file ~package declared with
48+
| None -> Some ("Unable to resolve module reference " ^ Path.name path)
49+
| Some (_, declared) -> showModule ~docstring ~file ~name ~package declared)
4850

4951
type extractedType = {
5052
name: string;
@@ -179,7 +181,7 @@ let newHover ~full:{file; package} ~supportsMarkdownLinks locItem =
179181
| Some d -> (d.name.txt, d.docstring)
180182
| None -> (file.moduleName, file.structure.docstring)
181183
in
182-
showModule ~docstring ~name ~file declared))
184+
showModule ~docstring ~name ~file declared ~package))
183185
| LModule (GlobalReference (moduleName, path, tip)) -> (
184186
match ProcessCmt.fileForModule ~package moduleName with
185187
| None -> None
@@ -199,14 +201,14 @@ let newHover ~full:{file; package} ~supportsMarkdownLinks locItem =
199201
| Some d -> (d.name.txt, d.docstring)
200202
| None -> (file.moduleName, file.structure.docstring)
201203
in
202-
showModule ~docstring ~name ~file declared))))
204+
showModule ~docstring ~name ~file ~package declared))))
203205
| LModule NotFound -> None
204206
| TopLevelModule name -> (
205207
match ProcessCmt.fileForModule ~package name with
206208
| None -> None
207209
| Some file ->
208210
showModule ~docstring:file.structure.docstring ~name:file.moduleName ~file
209-
None)
211+
~package None)
210212
| Typed (_, _, Definition (_, (Field _ | Constructor _))) -> None
211213
| Constant t ->
212214
Some

analysis/tests/src/Hover.res

+3
Original file line numberDiff line numberDiff line change
@@ -260,3 +260,6 @@ let coolVariant = CoolVariant
260260

261261
// switch x { | {someField} => someField }
262262
// ^hov
263+
264+
module Arr = Belt.Array
265+
// ^hov

analysis/tests/src/expected/Hover.res.txt

+3
Original file line numberDiff line numberDiff line change
@@ -261,3 +261,6 @@ ContextPath Value[x]
261261
Path x
262262
{"contents": {"kind": "markdown", "value": "```rescript\nbool\n```"}}
263263

264+
Hover src/Hover.res 263:8
265+
{"contents": {"kind": "markdown", "value": "\n [`Belt.Array`]()\n\n **mutable array**: Utilities functions\n\n```rescript\nmodule Array: {\n module Id\n module Array\n module SortArray\n module MutableQueue\n module MutableStack\n module List\n module Range\n module Set\n module Map\n module MutableSet\n module MutableMap\n module HashSet\n module HashMap\n module Option\n module Result\n module Int\n module Float\n}\n```"}}
266+

0 commit comments

Comments
 (0)