diff --git a/CHANGELOG.md b/CHANGELOG.md index 8970dcacb..d972b6fbb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,8 @@ - Fix issue where code analysis would not track types in inner modules across implementations and interfaces https://github.com/rescript-association/reanalyze/issues/186 +- Fix issue with references to elements defined in an interface file https://github.com/rescript-lang/rescript-vscode/pull/646 + ## v1.8.2 #### :rocket: New Feature diff --git a/analysis/src/ProcessCmt.ml b/analysis/src/ProcessCmt.ml index 9cee20165..2318f148f 100644 --- a/analysis/src/ProcessCmt.ml +++ b/analysis/src/ProcessCmt.ml @@ -19,7 +19,7 @@ let rec forTypeSignatureItem ~(env : SharedTypes.Env.t) ~(exported : Exported.t) let oldDeclared = Stamps.findValue env.stamps stamp in let declared = addDeclared - ~name:(Location.mknoloc (Ident.name ident)) + ~name:(Location.mkloc (Ident.name ident) loc) ~extent:loc ~stamp ~env ~item val_attributes (Exported.add exported Exported.Value) Stamps.addValue @@ -107,7 +107,7 @@ let rec forTypeSignatureItem ~(env : SharedTypes.Env.t) ~(exported : Exported.t) let declared = addDeclared ~extent:md_loc ~item:(forTypeModule env md_type) - ~name:(Location.mknoloc (Ident.name ident)) + ~name:(Location.mkloc (Ident.name ident) md_loc) ~stamp:(Ident.binding_time ident) ~env md_attributes (Exported.add exported Exported.Module) Stamps.addModule diff --git a/analysis/tests/src/References.res b/analysis/tests/src/References.res index 6ef69c6ab..959a7b235 100644 --- a/analysis/tests/src/References.res +++ b/analysis/tests/src/References.res @@ -9,3 +9,14 @@ let c = x let foo = (~xx) => xx + 1 // ^ref + +module M: { + let aa: int +} = { + let aa = 10 +} + +let bb = M.aa +let cc = bb +let dd = M.aa +// ^ref \ No newline at end of file diff --git a/analysis/tests/src/expected/Hover.res.txt b/analysis/tests/src/expected/Hover.res.txt index 3eb902317..b1a12b118 100644 --- a/analysis/tests/src/expected/Hover.res.txt +++ b/analysis/tests/src/expected/Hover.res.txt @@ -14,6 +14,8 @@ Hover src/Hover.res 22:11 {"contents": {"kind": "markdown", "value": "```rescript\nint => int\n```\n\nSome doc comment"}} Hover src/Hover.res 26:6 +getLocItem #8: heuristic for JSX with at most one child +heuristic for: [makeProps, make, createElement], give the loc of `make` {"contents": {"kind": "markdown", "value": "```rescript\nint\n```"}} Hover src/Hover.res 33:4 diff --git a/analysis/tests/src/expected/References.res.txt b/analysis/tests/src/expected/References.res.txt index 64c02fb92..ceaaeafb0 100644 --- a/analysis/tests/src/expected/References.res.txt +++ b/analysis/tests/src/expected/References.res.txt @@ -14,3 +14,10 @@ References src/References.res 9:19 {"uri": "References.res", "range": {"start": {"line": 9, "character": 19}, "end": {"line": 9, "character": 21}}} ] +References src/References.res 20:12 +[ +{"uri": "References.res", "range": {"start": {"line": 13, "character": 2}, "end": {"line": 13, "character": 13}}}, +{"uri": "References.res", "range": {"start": {"line": 18, "character": 11}, "end": {"line": 18, "character": 13}}}, +{"uri": "References.res", "range": {"start": {"line": 20, "character": 11}, "end": {"line": 20, "character": 13}}} +] +