From 6ddf611fcfba74213329cdcb4d7a3144f8c1b069 Mon Sep 17 00:00:00 2001 From: Amirali Esmaeili Date: Wed, 26 May 2021 05:33:43 +0430 Subject: [PATCH 01/14] Fix references to file modules --- analysis/src/References.ml | 29 +++++++++++++++++------ analysis/tests/src/expected/Cross.res.txt | 3 ++- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/analysis/src/References.ml b/analysis/src/References.ml index 3da82433e..b313b9044 100644 --- a/analysis/src/References.ml +++ b/analysis/src/References.ml @@ -459,15 +459,30 @@ let forLocalStamp ~full:{file; extra; package} stamp tip = let allReferencesForLocItem ~full:({file; package} as full) locItem = match locItem.locType with | TopLevelModule moduleName -> - let locs = - match Hashtbl.find_opt full.extra.fileReferences moduleName with + let otherModulesReferences = + package.localModules + |> Utils.filterMap (fun name -> + match ProcessCmt.fileForModule ~package name with + | None -> None + | Some file -> ProcessCmt.getFullFromCmt ~uri:file.uri) + |> List.map (fun full -> + match Hashtbl.find_opt full.extra.fileReferences moduleName with + | None -> [] + | Some locs -> + locs + |> List.map (fun loc -> + (Uri2.fromPath loc.Location.loc_start.pos_fname, [loc]))) + |> List.flatten + in + let targetModuleReference = + match Hashtbl.find_opt package.pathsForModule moduleName with | None -> [] - | Some locs -> - locs - |> List.map (fun loc -> - (Uri2.fromPath loc.Location.loc_start.pos_fname, [loc])) + | Some paths -> ( + match SharedTypes.getSrc paths with + | None -> [] + | Some src -> [(Uri2.fromPath src, [Utils.topLoc src])]) in - locs + List.append targetModuleReference otherModulesReferences | Typed (_, _, NotFound) | LModule NotFound | Constant _ -> [] | TypeDefinition (_, _, stamp) -> forLocalStamp ~full stamp Type | Typed (_, _, (LocalReference (stamp, tip) | Definition (stamp, tip))) diff --git a/analysis/tests/src/expected/Cross.res.txt b/analysis/tests/src/expected/Cross.res.txt index 63f400742..fbce959f9 100644 --- a/analysis/tests/src/expected/Cross.res.txt +++ b/analysis/tests/src/expected/Cross.res.txt @@ -3,6 +3,7 @@ References tests/src/Cross.res 0:17 {"uri": "Cross.res", "range": {"start": {"line": 0, "character": 15}, "end": {"line": 0, "character": 25}}}, {"uri": "Cross.res", "range": {"start": {"line": 3, "character": 16}, "end": {"line": 3, "character": 26}}}, {"uri": "Cross.res", "range": {"start": {"line": 6, "character": 13}, "end": {"line": 6, "character": 23}}}, -{"uri": "Cross.res", "range": {"start": {"line": 8, "character": 16}, "end": {"line": 8, "character": 26}}} +{"uri": "Cross.res", "range": {"start": {"line": 8, "character": 16}, "end": {"line": 8, "character": 26}}}, +{"uri": "References.res", "range": {"start": {"line": 0, "character": 0}, "end": {"line": 0, "character": 0}}} ] From a328945474fb13786ff7d979dc375a4f98a68cb2 Mon Sep 17 00:00:00 2001 From: Amirali Esmaeili Date: Wed, 26 May 2021 17:26:53 +0430 Subject: [PATCH 02/14] Fix reference to interfaces --- analysis/src/References.ml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/analysis/src/References.ml b/analysis/src/References.ml index b313b9044..45ee775ff 100644 --- a/analysis/src/References.ml +++ b/analysis/src/References.ml @@ -474,15 +474,19 @@ let allReferencesForLocItem ~full:({file; package} as full) locItem = (Uri2.fromPath loc.Location.loc_start.pos_fname, [loc]))) |> List.flatten in - let targetModuleReference = + let targetModuleReferences = match Hashtbl.find_opt package.pathsForModule moduleName with | None -> [] | Some paths -> ( - match SharedTypes.getSrc paths with - | None -> [] - | Some src -> [(Uri2.fromPath src, [Utils.topLoc src])]) + let moduleSrcToRef src = (Uri2.fromPath src, [Utils.topLoc src]) in + match paths with + | Impl (_, None) -> [] + | Impl (_, Some src) -> [moduleSrcToRef src] + | Intf (_, srci) -> [moduleSrcToRef srci] + | IntfAndImpl (_, srci, _, src) -> + [moduleSrcToRef srci; moduleSrcToRef src]) in - List.append targetModuleReference otherModulesReferences + List.append targetModuleReferences otherModulesReferences | Typed (_, _, NotFound) | LModule NotFound | Constant _ -> [] | TypeDefinition (_, _, stamp) -> forLocalStamp ~full stamp Type | Typed (_, _, (LocalReference (stamp, tip) | Definition (stamp, tip))) From f15a8380e807df8e2efd7e11255ab2ecbf264ae3 Mon Sep 17 00:00:00 2001 From: Amirali Esmaeili Date: Wed, 26 May 2021 23:57:53 +0430 Subject: [PATCH 03/14] Add support for file renames --- server/src/server.ts | 32 +++++++++++++++++++++++++------- server/src/utils.ts | 8 ++++++++ 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/server/src/server.ts b/server/src/server.ts index d6e72584b..81330412f 100644 --- a/server/src/server.ts +++ b/server/src/server.ts @@ -15,7 +15,7 @@ import * as utils from "./utils"; import * as c from "./constants"; import * as chokidar from "chokidar"; import { assert } from "console"; -import { fileURLToPath } from "url"; +import { fileURLToPath, pathToFileURL } from "url"; import { ChildProcess } from "child_process"; import { WorkspaceEdit } from "vscode-languageserver"; import { TextEdit } from "vscode-languageserver-types"; @@ -294,16 +294,34 @@ function rename(msg: p.RequestMessage) { if (locations === null) { result = null; } else { - let changes: { [uri: string]: TextEdit[] } = {}; + let textEdits: { [uri: string]: TextEdit[] } = {}; + let documentChanges: (p.RenameFile | p.TextDocumentEdit)[] = []; + locations.forEach(({ uri, range }) => { - let textEdit: TextEdit = { range, newText: params.newName }; - if (uri in changes) { - changes[uri].push(textEdit); + if (utils.isRangeTopOfFile(range)) { + let filePath = fileURLToPath(uri); + let newFilePath = `${path.dirname(filePath)}/${params.newName}${path.extname(filePath)}`; + let newUri = pathToFileURL(newFilePath).href; + let rename: p.RenameFile = { kind: "rename", oldUri: uri, newUri }; + documentChanges.push(rename); } else { - changes[uri] = [textEdit]; + let textEdit: TextEdit = { range, newText: params.newName }; + if (uri in textEdits) { + textEdits[uri].push(textEdit); + } else { + textEdits[uri] = [textEdit]; + } } }); - result = { changes }; + + Object.entries(textEdits) + .forEach(([uri, edits]) => { + let textDocumentEdit = { textDocument: { uri, version: null }, edits }; + documentChanges.push(textDocumentEdit); + }); + + + result = { documentChanges }; } let response: m.ResponseMessage = { jsonrpc: c.jsonrpcVersion, diff --git a/server/src/utils.ts b/server/src/utils.ts index 2c6d236f9..b32fd80a6 100644 --- a/server/src/utils.ts +++ b/server/src/utils.ts @@ -476,3 +476,11 @@ export let parseCompilerLogOutput = ( return { done, result }; }; + +export let isRangeTopOfFile = (range: p.Range) => + [ + range.start.character, + range.start.line, + range.end.character, + range.end.line + ].every(n => n === 0); From 13a09b39ba3f6b4b0d4eb8a0c011599caac97903 Mon Sep 17 00:00:00 2001 From: Cristiano Calcagno Date: Sun, 30 May 2021 04:54:34 +0200 Subject: [PATCH 04/14] Fix build after rebase. --- analysis/src/References.ml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/analysis/src/References.ml b/analysis/src/References.ml index 45ee775ff..348f788eb 100644 --- a/analysis/src/References.ml +++ b/analysis/src/References.ml @@ -460,7 +460,7 @@ let allReferencesForLocItem ~full:({file; package} as full) locItem = match locItem.locType with | TopLevelModule moduleName -> let otherModulesReferences = - package.localModules + package.projectFiles |> Utils.filterMap (fun name -> match ProcessCmt.fileForModule ~package name with | None -> None @@ -480,11 +480,9 @@ let allReferencesForLocItem ~full:({file; package} as full) locItem = | Some paths -> ( let moduleSrcToRef src = (Uri2.fromPath src, [Utils.topLoc src]) in match paths with - | Impl (_, None) -> [] - | Impl (_, Some src) -> [moduleSrcToRef src] - | Intf (_, srci) -> [moduleSrcToRef srci] - | IntfAndImpl (_, srci, _, src) -> - [moduleSrcToRef srci; moduleSrcToRef src]) + | Impl {res} -> [moduleSrcToRef res] + | IntfAndImpl {resi; res} -> [moduleSrcToRef resi; moduleSrcToRef res] + | Namespace _ -> []) in List.append targetModuleReferences otherModulesReferences | Typed (_, _, NotFound) | LModule NotFound | Constant _ -> [] From f8802ba91d8071eb7e31301cbe0a0e39b536edd6 Mon Sep 17 00:00:00 2001 From: Cristiano Calcagno Date: Sun, 30 May 2021 04:59:23 +0200 Subject: [PATCH 05/14] Refactor getSrc --- analysis/src/References.ml | 7 ++----- analysis/src/SharedTypes.ml | 6 ++++++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/analysis/src/References.ml b/analysis/src/References.ml index 348f788eb..43095c8a0 100644 --- a/analysis/src/References.ml +++ b/analysis/src/References.ml @@ -477,12 +477,9 @@ let allReferencesForLocItem ~full:({file; package} as full) locItem = let targetModuleReferences = match Hashtbl.find_opt package.pathsForModule moduleName with | None -> [] - | Some paths -> ( + | Some paths -> let moduleSrcToRef src = (Uri2.fromPath src, [Utils.topLoc src]) in - match paths with - | Impl {res} -> [moduleSrcToRef res] - | IntfAndImpl {resi; res} -> [moduleSrcToRef resi; moduleSrcToRef res] - | Namespace _ -> []) + getSrc paths |> List.map moduleSrcToRef in List.append targetModuleReferences otherModulesReferences | Typed (_, _, NotFound) | LModule NotFound | Constant _ -> [] diff --git a/analysis/src/SharedTypes.ml b/analysis/src/SharedTypes.ml index ca5ebeddf..948996527 100644 --- a/analysis/src/SharedTypes.ml +++ b/analysis/src/SharedTypes.ml @@ -130,6 +130,12 @@ let showPaths paths = | IntfAndImpl {cmti; resi; cmt; res} -> Printf.sprintf "IntfAndImpl(%s, %s, %s, %s)" cmti resi cmt res +let getSrc p = + match p with + | Impl {res} -> [res] + | Namespace _ -> [] + | IntfAndImpl {resi; res} -> [resi; res] + let getUri p = match p with | Impl {res} -> Uri2.fromPath res From 96ef240e00cf1bcf2a5772ae09aecc19426701bc Mon Sep 17 00:00:00 2001 From: Amirali Esmaeili Date: Sat, 5 Jun 2021 03:25:54 +0430 Subject: [PATCH 06/14] Add rename command --- analysis/src/Cli.ml | 12 +++++-- analysis/src/Commands.ml | 72 ++++++++++++++++++++++++++++++++++++++++ analysis/src/Protocol.ml | 47 +++++++++++++++++++++++++- analysis/src/Utils.ml | 6 ++++ 4 files changed, 134 insertions(+), 3 deletions(-) diff --git a/analysis/src/Cli.ml b/analysis/src/Cli.ml index 6b9edc32b..ce982dafc 100644 --- a/analysis/src/Cli.ml +++ b/analysis/src/Cli.ml @@ -8,6 +8,7 @@ API examples: ./rescript-editor-analysis.exe documentSymbol src/Foo.res ./rescript-editor-analysis.exe hover src/MyFile.res 10 2 ./rescript-editor-analysis.exe references src/MyFile.res 10 2 + ./rescript-editor-analysis.exe rename src/MyFile.res 10 2 foo Dev-time examples: ./rescript-editor-analysis.exe dump src/MyFile.res src/MyFile2.res @@ -38,6 +39,10 @@ Options: ./rescript-editor-analysis.exe references src/MyFile.res 10 2 + rename: rename all appearances of item in MyFile.res at line 10 column 2 with foo: + + ./rescript-editor-analysis.exe rename src/MyFile.res 10 2 foo + dump: for debugging, show all definitions and hovers for MyFile.res and MyFile.res: ./rescript-editor-analysis.exe dump src/Foo.res src/MyFile.res @@ -50,8 +55,8 @@ Options: let main () = match Array.to_list Sys.argv with | [_; "completion"; path; line; col; currentFile] -> - Commands.completion ~path ~line:(int_of_string line) ~col:(int_of_string col) - ~currentFile + Commands.completion ~path ~line:(int_of_string line) + ~col:(int_of_string col) ~currentFile | [_; "definition"; path; line; col] -> Commands.definition ~path ~line:(int_of_string line) ~col:(int_of_string col) @@ -62,6 +67,9 @@ let main () = | [_; "references"; path; line; col] -> Commands.references ~path ~line:(int_of_string line) ~col:(int_of_string col) + | [_; "rename"; path; line; col; newName] -> + Commands.rename ~path ~line:(int_of_string line) ~col:(int_of_string col) + ~newName | [_; "test"; path] -> Commands.test ~path | args when List.mem "-h" args || List.mem "--help" args -> prerr_endline help | _ -> diff --git a/analysis/src/Commands.ml b/analysis/src/Commands.ml index d2e0dd544..667f98bef 100644 --- a/analysis/src/Commands.ml +++ b/analysis/src/Commands.ml @@ -176,6 +176,78 @@ let documentSymbol ~path = in print_endline ("[\n" ^ (allSymbols |> String.concat ",\n") ^ "\n]") +let rename ~path ~line ~col ~newName = + let uri = Uri2.fromPath path in + let result = + match ProcessCmt.getFullFromCmt ~uri with + | None -> Protocol.null + | Some full -> ( + let pos = Utils.protocolLineColToCmtLoc ~line ~col in + match References.locItemForPos ~full pos with + | None -> Protocol.null + | Some locItem -> + let allReferences = References.allReferencesForLocItem ~full locItem in + let referencesToToplevelModules, referencesToItems = + allReferences + |> List.fold_left + (fun acc (uri2, references) -> + (references |> List.map (fun loc -> (uri2, loc))) @ acc) + [] + |> List.partition (fun (_, loc) -> Utils.isTopLoc loc) + in + let fileRenames = + referencesToToplevelModules + |> List.map (fun (uri, _) -> + let path = Uri2.toPath uri in + let dir = Filename.dirname path in + let ext = Filename.extension path in + let sep = Filename.dir_sep in + let newPath = dir ^ sep ^ newName ^ ext in + let newUri = Uri2.fromPath newPath in + Protocol. + { + kind = `rename; + oldUri = uri |> Uri2.toString; + newUri = newUri |> Uri2.toString; + }) + in + let textDocumentEdits = + let module StringMap = Misc.StringMap in + let textEditsByUri = + referencesToItems + |> List.map (fun (uri, loc) -> (Uri2.toString uri, loc)) + |> List.fold_left + (fun acc (uri, loc) -> + let textEdit = + Protocol. + {range = Utils.cmtLocToRange loc; newText = newName} + in + match StringMap.find_opt uri acc with + | None -> StringMap.add uri [textEdit] acc + | Some prevEdits -> + StringMap.add uri (textEdit :: prevEdits) acc) + StringMap.empty + in + StringMap.fold + (fun uri edits acc -> + let textDocumentEdit = + Protocol.{textDocument = {uri; version = None}; edits} + in + textDocumentEdit :: acc) + textEditsByUri [] + in + let fileRenamesString = + fileRenames |> List.map Protocol.stringifyRenameFile + in + let textDocumentEditsString = + textDocumentEdits |> List.map Protocol.stringifyTextDocumentEdit + in + "[\n" + ^ (fileRenamesString @ textDocumentEditsString |> String.concat ",\n") + ^ "\n]") + in + print_endline result + let test ~path = Uri2.stripPath := true; match Files.readFile path with diff --git a/analysis/src/Protocol.ml b/analysis/src/Protocol.ml index 021ca46b7..8289d02f2 100644 --- a/analysis/src/Protocol.ml +++ b/analysis/src/Protocol.ml @@ -18,6 +18,20 @@ type location = {uri : string; range : range} type documentSymbolItem = {name : string; kind : int; location : location} +type renameFile = {kind : [`rename]; oldUri : string; newUri : string} + +type textEdit = {range : range; newText : string} + +type optionalVersionedTextDocumentIdentifier = { + version : int option; + uri : string; +} + +type textDocumentEdit = { + textDocument : optionalVersionedTextDocumentIdentifier; + edits : textEdit list; +} + let null = "null" let array l = "[" ^ String.concat ", " l ^ "]" @@ -52,7 +66,7 @@ let stringifyCompletionItem c = let stringifyHover h = Printf.sprintf {|{"contents": "%s"}|} (Json.escape h.contents) -let stringifyLocation h = +let stringifyLocation (h : location) = Printf.sprintf {|{"uri": "%s", "range": %s}|} (Json.escape h.uri) (stringifyRange h.range) @@ -65,3 +79,34 @@ let stringifyDocumentSymbolItem i = }|} (Json.escape i.name) i.kind (stringifyLocation i.location) + +let stringifyRenameFile rf = + Printf.sprintf {|{ + "kind": "rename", + "oldUri": "%s", + "newUri": "%s" +}|} + (Json.escape rf.oldUri) (Json.escape rf.newUri) + +let stringifyTextEdit te = + Printf.sprintf {|{ + "range": %s, + "newText": "%s" + }|} + (stringifyRange te.range) (Json.escape te.newText) + +let stringifyoptionalVersionedTextDocumentIdentifier td = + Printf.sprintf {|{ + "version": %s, + "uri": "%s" + }|} + (match td.version with None -> null | Some v -> string_of_int v) + (Json.escape td.uri) + +let stringifyTextDocumentEdit tde = + Printf.sprintf {|{ + "textDocument": %s, + "edits": %s + }|} + (stringifyoptionalVersionedTextDocumentIdentifier tde.textDocument) + (tde.edits |> List.map stringifyTextEdit |> array) diff --git a/analysis/src/Utils.ml b/analysis/src/Utils.ml index d56632619..767d8714d 100644 --- a/analysis/src/Utils.ml +++ b/analysis/src/Utils.ml @@ -7,6 +7,12 @@ let topLoc fname = loc_ghost = false; } +let isTopLoc (loc : Warnings.loc) = + let isTopPos (pos : Lexing.position) = + pos.pos_lnum = 1 && pos.pos_bol = 0 && pos.pos_cnum = 0 + in + isTopPos loc.loc_start && isTopPos loc.loc_end && loc.loc_ghost = false + (** * `startsWith(string, prefix)` * true if the string starts with the prefix From e31cf55e5ae3d55962e86385fd23ea7d679997d5 Mon Sep 17 00:00:00 2001 From: Amirali Esmaeili Date: Sat, 5 Jun 2021 03:29:18 +0430 Subject: [PATCH 07/14] Make dce analyzer happy --- analysis/src/Protocol.ml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/analysis/src/Protocol.ml b/analysis/src/Protocol.ml index 8289d02f2..f93d9e090 100644 --- a/analysis/src/Protocol.ml +++ b/analysis/src/Protocol.ml @@ -82,10 +82,11 @@ let stringifyDocumentSymbolItem i = let stringifyRenameFile rf = Printf.sprintf {|{ - "kind": "rename", + "kind": "%s", "oldUri": "%s", "newUri": "%s" }|} + (match rf.kind with `rename -> "rename") (Json.escape rf.oldUri) (Json.escape rf.newUri) let stringifyTextEdit te = From 53344ce0d182a684fb4ad1b26dc63b5496a6ac00 Mon Sep 17 00:00:00 2001 From: Amirali Esmaeili Date: Sat, 5 Jun 2021 03:39:47 +0430 Subject: [PATCH 08/14] Add tests --- analysis/tests/src/Cross.res | 10 ++++++++++ analysis/tests/src/ReferencesWithInterface.res | 2 ++ analysis/tests/src/ReferencesWithInterface.resi | 2 ++ analysis/tests/src/expected/Cross.res.txt | 10 ++++++++++ .../tests/src/expected/ReferencesWithInterface.res.txt | 9 +++++++++ .../src/expected/ReferencesWithInterface.resi.txt | 9 +++++++++ 6 files changed, 42 insertions(+) create mode 100644 analysis/tests/src/ReferencesWithInterface.res create mode 100644 analysis/tests/src/ReferencesWithInterface.resi create mode 100644 analysis/tests/src/expected/ReferencesWithInterface.res.txt create mode 100644 analysis/tests/src/expected/ReferencesWithInterface.resi.txt diff --git a/analysis/tests/src/Cross.res b/analysis/tests/src/Cross.res index 489f5ae0b..d427b7d12 100644 --- a/analysis/tests/src/Cross.res +++ b/analysis/tests/src/Cross.res @@ -7,3 +7,13 @@ let crossRef2 = References.x module Ref = References let crossRef3 = References.x + + +let crossRefWithInterface = ReferencesWithInterface.x +// ^ref + +let crossRefWithInterface2 = ReferencesWithInterface.x + +module RefWithInterface = ReferencesWithInterface + +let crossRefWithInterface3 = ReferencesWithInterface.x diff --git a/analysis/tests/src/ReferencesWithInterface.res b/analysis/tests/src/ReferencesWithInterface.res new file mode 100644 index 000000000..54b4b8b16 --- /dev/null +++ b/analysis/tests/src/ReferencesWithInterface.res @@ -0,0 +1,2 @@ +let x = 2 +// ^ref diff --git a/analysis/tests/src/ReferencesWithInterface.resi b/analysis/tests/src/ReferencesWithInterface.resi new file mode 100644 index 000000000..765cf3c6d --- /dev/null +++ b/analysis/tests/src/ReferencesWithInterface.resi @@ -0,0 +1,2 @@ +let x: int +// ^ref diff --git a/analysis/tests/src/expected/Cross.res.txt b/analysis/tests/src/expected/Cross.res.txt index fbce959f9..23690b5d2 100644 --- a/analysis/tests/src/expected/Cross.res.txt +++ b/analysis/tests/src/expected/Cross.res.txt @@ -7,3 +7,13 @@ References tests/src/Cross.res 0:17 {"uri": "References.res", "range": {"start": {"line": 0, "character": 0}, "end": {"line": 0, "character": 0}}} ] +References tests/src/Cross.res 11:31 +[ +{"uri": "Cross.res", "range": {"start": {"line": 11, "character": 28}, "end": {"line": 11, "character": 51}}}, +{"uri": "Cross.res", "range": {"start": {"line": 14, "character": 29}, "end": {"line": 14, "character": 52}}}, +{"uri": "Cross.res", "range": {"start": {"line": 16, "character": 26}, "end": {"line": 16, "character": 49}}}, +{"uri": "Cross.res", "range": {"start": {"line": 18, "character": 29}, "end": {"line": 18, "character": 52}}}, +{"uri": "ReferencesWithInterface.res", "range": {"start": {"line": 0, "character": 0}, "end": {"line": 0, "character": 0}}}, +{"uri": "ReferencesWithInterface.resi", "range": {"start": {"line": 0, "character": 0}, "end": {"line": 0, "character": 0}}} +] + diff --git a/analysis/tests/src/expected/ReferencesWithInterface.res.txt b/analysis/tests/src/expected/ReferencesWithInterface.res.txt new file mode 100644 index 000000000..2a077a83f --- /dev/null +++ b/analysis/tests/src/expected/ReferencesWithInterface.res.txt @@ -0,0 +1,9 @@ +References tests/src/ReferencesWithInterface.res 0:4 +[ +{"uri": "Cross.res", "range": {"start": {"line": 18, "character": 53}, "end": {"line": 18, "character": 54}}}, +{"uri": "Cross.res", "range": {"start": {"line": 14, "character": 53}, "end": {"line": 14, "character": 54}}}, +{"uri": "Cross.res", "range": {"start": {"line": 11, "character": 52}, "end": {"line": 11, "character": 53}}}, +{"uri": "ReferencesWithInterface.resi", "range": {"start": {"line": 0, "character": 4}, "end": {"line": 0, "character": 5}}}, +{"uri": "ReferencesWithInterface.res", "range": {"start": {"line": 0, "character": 4}, "end": {"line": 0, "character": 5}}} +] + diff --git a/analysis/tests/src/expected/ReferencesWithInterface.resi.txt b/analysis/tests/src/expected/ReferencesWithInterface.resi.txt new file mode 100644 index 000000000..e7f7db246 --- /dev/null +++ b/analysis/tests/src/expected/ReferencesWithInterface.resi.txt @@ -0,0 +1,9 @@ +References tests/src/ReferencesWithInterface.resi 0:4 +[ +{"uri": "Cross.res", "range": {"start": {"line": 18, "character": 53}, "end": {"line": 18, "character": 54}}}, +{"uri": "Cross.res", "range": {"start": {"line": 14, "character": 53}, "end": {"line": 14, "character": 54}}}, +{"uri": "Cross.res", "range": {"start": {"line": 11, "character": 52}, "end": {"line": 11, "character": 53}}}, +{"uri": "ReferencesWithInterface.res", "range": {"start": {"line": 0, "character": 4}, "end": {"line": 0, "character": 5}}}, +{"uri": "ReferencesWithInterface.resi", "range": {"start": {"line": 0, "character": 4}, "end": {"line": 0, "character": 5}}} +] + From 871cc40f531e8ddb3b31d8595914f28b455d5f2c Mon Sep 17 00:00:00 2001 From: Cristiano Calcagno Date: Sat, 5 Jun 2021 04:33:59 +0200 Subject: [PATCH 09/14] Use a set for the references to a file. --- analysis/src/ProcessCmt.ml | 12 ++++++------ analysis/src/References.ml | 2 +- analysis/src/SharedTypes.ml | 8 +++++++- analysis/tests/src/expected/Cross.res.txt | 12 ++++++------ 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/analysis/src/ProcessCmt.ml b/analysis/src/ProcessCmt.ml index e5b372827..e13e000bc 100644 --- a/analysis/src/ProcessCmt.ml +++ b/analysis/src/ProcessCmt.ml @@ -734,12 +734,12 @@ struct else [])) let addFileReference moduleName loc = - Hashtbl.replace extra.fileReferences moduleName - (loc - :: - (if Hashtbl.mem extra.fileReferences moduleName then - Hashtbl.find extra.fileReferences moduleName - else [])) + let newLocs = + match Hashtbl.find_opt extra.fileReferences moduleName with + | Some oldLocs -> LocationSet.add loc oldLocs + | None -> LocationSet.singleton loc + in + Hashtbl.replace extra.fileReferences moduleName newLocs let env = QueryEnv.fromFile Collector.file diff --git a/analysis/src/References.ml b/analysis/src/References.ml index 43095c8a0..f5d7593c6 100644 --- a/analysis/src/References.ml +++ b/analysis/src/References.ml @@ -469,7 +469,7 @@ let allReferencesForLocItem ~full:({file; package} as full) locItem = match Hashtbl.find_opt full.extra.fileReferences moduleName with | None -> [] | Some locs -> - locs + locs |> LocationSet.elements |> List.map (fun loc -> (Uri2.fromPath loc.Location.loc_start.pos_fname, [loc]))) |> List.flatten diff --git a/analysis/src/SharedTypes.ml b/analysis/src/SharedTypes.ml index 948996527..9fd2c2730 100644 --- a/analysis/src/SharedTypes.ml +++ b/analysis/src/SharedTypes.ml @@ -200,10 +200,16 @@ type openTracker = { mutable used : (path * tip * Location.t) list; } +module LocationSet = Set.Make (struct + include Location + + let compare = compare (* polymorphic compare should be OK *) +end) + type extra = { internalReferences : (int, Location.t list) Hashtbl.t; externalReferences : (string, (path * tip * Location.t) list) Hashtbl.t; - fileReferences : (string, Location.t list) Hashtbl.t; + fileReferences : (string, LocationSet.t) Hashtbl.t; mutable locItems : locItem list; (* This is the "open location", like the location... or maybe the >> location of the open ident maybe *) diff --git a/analysis/tests/src/expected/Cross.res.txt b/analysis/tests/src/expected/Cross.res.txt index 23690b5d2..82d8d20af 100644 --- a/analysis/tests/src/expected/Cross.res.txt +++ b/analysis/tests/src/expected/Cross.res.txt @@ -1,18 +1,18 @@ References tests/src/Cross.res 0:17 [ -{"uri": "Cross.res", "range": {"start": {"line": 0, "character": 15}, "end": {"line": 0, "character": 25}}}, -{"uri": "Cross.res", "range": {"start": {"line": 3, "character": 16}, "end": {"line": 3, "character": 26}}}, -{"uri": "Cross.res", "range": {"start": {"line": 6, "character": 13}, "end": {"line": 6, "character": 23}}}, {"uri": "Cross.res", "range": {"start": {"line": 8, "character": 16}, "end": {"line": 8, "character": 26}}}, +{"uri": "Cross.res", "range": {"start": {"line": 6, "character": 13}, "end": {"line": 6, "character": 23}}}, +{"uri": "Cross.res", "range": {"start": {"line": 3, "character": 16}, "end": {"line": 3, "character": 26}}}, +{"uri": "Cross.res", "range": {"start": {"line": 0, "character": 15}, "end": {"line": 0, "character": 25}}}, {"uri": "References.res", "range": {"start": {"line": 0, "character": 0}, "end": {"line": 0, "character": 0}}} ] References tests/src/Cross.res 11:31 [ -{"uri": "Cross.res", "range": {"start": {"line": 11, "character": 28}, "end": {"line": 11, "character": 51}}}, -{"uri": "Cross.res", "range": {"start": {"line": 14, "character": 29}, "end": {"line": 14, "character": 52}}}, -{"uri": "Cross.res", "range": {"start": {"line": 16, "character": 26}, "end": {"line": 16, "character": 49}}}, {"uri": "Cross.res", "range": {"start": {"line": 18, "character": 29}, "end": {"line": 18, "character": 52}}}, +{"uri": "Cross.res", "range": {"start": {"line": 16, "character": 26}, "end": {"line": 16, "character": 49}}}, +{"uri": "Cross.res", "range": {"start": {"line": 14, "character": 29}, "end": {"line": 14, "character": 52}}}, +{"uri": "Cross.res", "range": {"start": {"line": 11, "character": 28}, "end": {"line": 11, "character": 51}}}, {"uri": "ReferencesWithInterface.res", "range": {"start": {"line": 0, "character": 0}, "end": {"line": 0, "character": 0}}}, {"uri": "ReferencesWithInterface.resi", "range": {"start": {"line": 0, "character": 0}, "end": {"line": 0, "character": 0}}} ] From 77d4be667f8967fc5d3ff76a38f4e41e1471930b Mon Sep 17 00:00:00 2001 From: Cristiano Calcagno Date: Sat, 5 Jun 2021 04:42:58 +0200 Subject: [PATCH 10/14] tweak tests --- analysis/tests/src/ReferencesWithInterface.resi | 3 +++ analysis/tests/src/expected/ReferencesWithInterface.res.txt | 2 +- analysis/tests/src/expected/ReferencesWithInterface.resi.txt | 4 ++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/analysis/tests/src/ReferencesWithInterface.resi b/analysis/tests/src/ReferencesWithInterface.resi index 765cf3c6d..57dc6b819 100644 --- a/analysis/tests/src/ReferencesWithInterface.resi +++ b/analysis/tests/src/ReferencesWithInterface.resi @@ -1,2 +1,5 @@ + + + let x: int // ^ref diff --git a/analysis/tests/src/expected/ReferencesWithInterface.res.txt b/analysis/tests/src/expected/ReferencesWithInterface.res.txt index 2a077a83f..2372f686b 100644 --- a/analysis/tests/src/expected/ReferencesWithInterface.res.txt +++ b/analysis/tests/src/expected/ReferencesWithInterface.res.txt @@ -3,7 +3,7 @@ References tests/src/ReferencesWithInterface.res 0:4 {"uri": "Cross.res", "range": {"start": {"line": 18, "character": 53}, "end": {"line": 18, "character": 54}}}, {"uri": "Cross.res", "range": {"start": {"line": 14, "character": 53}, "end": {"line": 14, "character": 54}}}, {"uri": "Cross.res", "range": {"start": {"line": 11, "character": 52}, "end": {"line": 11, "character": 53}}}, -{"uri": "ReferencesWithInterface.resi", "range": {"start": {"line": 0, "character": 4}, "end": {"line": 0, "character": 5}}}, +{"uri": "ReferencesWithInterface.resi", "range": {"start": {"line": 3, "character": 4}, "end": {"line": 3, "character": 5}}}, {"uri": "ReferencesWithInterface.res", "range": {"start": {"line": 0, "character": 4}, "end": {"line": 0, "character": 5}}} ] diff --git a/analysis/tests/src/expected/ReferencesWithInterface.resi.txt b/analysis/tests/src/expected/ReferencesWithInterface.resi.txt index e7f7db246..5f96d5af6 100644 --- a/analysis/tests/src/expected/ReferencesWithInterface.resi.txt +++ b/analysis/tests/src/expected/ReferencesWithInterface.resi.txt @@ -1,9 +1,9 @@ -References tests/src/ReferencesWithInterface.resi 0:4 +References tests/src/ReferencesWithInterface.resi 3:4 [ {"uri": "Cross.res", "range": {"start": {"line": 18, "character": 53}, "end": {"line": 18, "character": 54}}}, {"uri": "Cross.res", "range": {"start": {"line": 14, "character": 53}, "end": {"line": 14, "character": 54}}}, {"uri": "Cross.res", "range": {"start": {"line": 11, "character": 52}, "end": {"line": 11, "character": 53}}}, {"uri": "ReferencesWithInterface.res", "range": {"start": {"line": 0, "character": 4}, "end": {"line": 0, "character": 5}}}, -{"uri": "ReferencesWithInterface.resi", "range": {"start": {"line": 0, "character": 4}, "end": {"line": 0, "character": 5}}} +{"uri": "ReferencesWithInterface.resi", "range": {"start": {"line": 3, "character": 4}, "end": {"line": 3, "character": 5}}} ] From 750209b96f51ef4b21f7eb9107885ea502477595 Mon Sep 17 00:00:00 2001 From: Cristiano Calcagno Date: Sat, 5 Jun 2021 05:33:01 +0200 Subject: [PATCH 11/14] dump test --- analysis/src/Packages.ml | 1 + analysis/src/References.ml | 8 +++-- analysis/tests/src/expected/Auto.res.txt | 1 + .../tests/src/expected/Completion.res.txt | 19 ++++++++++++ analysis/tests/src/expected/Cross.res.txt | 28 +++++++++++++++++ .../tests/src/expected/Definition.res.txt | 4 +++ analysis/tests/src/expected/Div.res.txt | 2 ++ analysis/tests/src/expected/Fragment.res.txt | 2 ++ analysis/tests/src/expected/Hover.res.txt | 18 +++++++++++ analysis/tests/src/expected/Jsx.res.txt | 16 ++++++++++ analysis/tests/src/expected/Jsx.resi.txt | 4 +++ analysis/tests/src/expected/Patterns.res.txt | 5 +++ .../tests/src/expected/RecModules.res.txt | 2 ++ .../src/expected/RecordCompletion.res.txt | 2 ++ .../tests/src/expected/References.res.txt | 31 +++++++++++++++++++ .../expected/ReferencesWithInterface.res.txt | 29 +++++++++++++++++ .../expected/ReferencesWithInterface.resi.txt | 29 +++++++++++++++++ 17 files changed, 199 insertions(+), 2 deletions(-) diff --git a/analysis/src/Packages.ml b/analysis/src/Packages.ml index d095503b7..755e0d90d 100644 --- a/analysis/src/Packages.ml +++ b/analysis/src/Packages.ml @@ -105,6 +105,7 @@ let findRoot ~uri packagesByRoot = loop (Filename.dirname path) let getPackage ~uri = + prerr_endline ("getPackage " ^ Uri2.toString uri); let open SharedTypes in if Hashtbl.mem state.rootForUri uri then Ok (Hashtbl.find state.packagesByRoot (Hashtbl.find state.rootForUri uri)) diff --git a/analysis/src/References.ml b/analysis/src/References.ml index f5d7593c6..6731a7f68 100644 --- a/analysis/src/References.ml +++ b/analysis/src/References.ml @@ -393,7 +393,7 @@ let forLocalStamp ~full:{file; extra; package} stamp tip = match Hashtbl.find_opt extra.internalReferences localStamp with | None -> [] | Some local -> - maybeLog ("Checking externals: " ^ string_of_int stamp); + prerr_endline ("Checking externals: " ^ string_of_int stamp); let externals = match declaredForTip ~stamps:env.file.stamps stamp tip with | None -> [] @@ -427,7 +427,10 @@ let forLocalStamp ~full:{file; extra; package} stamp tip = let thisModuleName = file.moduleName in let externals = package.projectFiles - |> List.filter (fun name -> name <> file.moduleName) + |> List.filter (fun name -> + + prerr_endline ("filter " ^ name ^ " " ^ file.moduleName ); + name <> file.moduleName) |> Utils.filterMap (fun name -> match ProcessCmt.fileForModule ~package name with | None -> None @@ -486,6 +489,7 @@ let allReferencesForLocItem ~full:({file; package} as full) locItem = | TypeDefinition (_, _, stamp) -> forLocalStamp ~full stamp Type | Typed (_, _, (LocalReference (stamp, tip) | Definition (stamp, tip))) | LModule (LocalReference (stamp, tip) | Definition (stamp, tip)) -> + prerr_endline ("LocalRef"); maybeLog ("Finding references for " ^ Uri2.toString file.uri ^ " and stamp " ^ string_of_int stamp ^ " and tip " ^ tipToString tip); diff --git a/analysis/tests/src/expected/Auto.res.txt b/analysis/tests/src/expected/Auto.res.txt index f82058d6b..acb9dc1b4 100644 --- a/analysis/tests/src/expected/Auto.res.txt +++ b/analysis/tests/src/expected/Auto.res.txt @@ -1,3 +1,4 @@ Hover tests/src/Auto.res 2:13 +getPackage Auto.res {"contents": "```rescript\n(Belt.List.t<'a>, 'a => 'b) => Belt.List.t<'b>\n```\n\n\n `map xs f`\n\n **return** the list obtained by applying `f` to each element of `xs`\n\n ```\n map [1;2] (fun x-> x + 1) = [3;4]\n ```\n"} diff --git a/analysis/tests/src/expected/Completion.res.txt b/analysis/tests/src/expected/Completion.res.txt index bb6439279..31eaef1d9 100644 --- a/analysis/tests/src/expected/Completion.res.txt +++ b/analysis/tests/src/expected/Completion.res.txt @@ -1,4 +1,5 @@ Complete tests/src/Completion.res 0:2 +getPackage Completion.res [{ "label": "mapReverse", "kind": 12, @@ -68,6 +69,7 @@ Complete tests/src/Completion.res 0:2 }] Complete tests/src/Completion.res 1:2 +getPackage Completion.res [{ "label": "Floatarray", "kind": 9, @@ -287,6 +289,7 @@ Complete tests/src/Completion.res 1:2 }] Complete tests/src/Completion.res 2:2 +getPackage Completion.res [{ "label": "mapi", "kind": 12, @@ -338,6 +341,7 @@ Complete tests/src/Completion.res 2:2 }] Complete tests/src/Completion.res 12:2 +getPackage Completion.res [{ "label": "customDouble", "kind": 12, @@ -347,6 +351,7 @@ Complete tests/src/Completion.res 12:2 }] Complete tests/src/Completion.res 19:2 +getPackage Completion.res [{ "label": "age", "kind": 4, @@ -362,6 +367,7 @@ Complete tests/src/Completion.res 19:2 }] Complete tests/src/Completion.res 21:2 +getPackage Completion.res [{ "label": "Js.Array2.mapi", "kind": 12, @@ -377,6 +383,7 @@ Complete tests/src/Completion.res 21:2 }] Complete tests/src/Completion.res 23:2 +getPackage Completion.res [{ "label": "Js.String2.toUpperCase", "kind": 12, @@ -386,6 +393,7 @@ Complete tests/src/Completion.res 23:2 }] Complete tests/src/Completion.res 27:2 +getPackage Completion.res [{ "label": "Belt.Option.eqU", "kind": 12, @@ -401,6 +409,7 @@ Complete tests/src/Completion.res 27:2 }] Complete tests/src/Completion.res 36:2 +getPackage Completion.res [{ "label": "ForAuto.abc", "kind": 12, @@ -416,6 +425,7 @@ Complete tests/src/Completion.res 36:2 }] Complete tests/src/Completion.res 38:2 +getPackage Completion.res [{ "label": "unsafeGet", "kind": 12, @@ -431,6 +441,7 @@ Complete tests/src/Completion.res 38:2 }] Complete tests/src/Completion.res 50:2 +getPackage Completion.res [{ "label": "zzz", "kind": 12, @@ -440,6 +451,7 @@ Complete tests/src/Completion.res 50:2 }] Complete tests/src/Completion.res 52:2 +getPackage Completion.res [{ "label": "zoo", "kind": 4, @@ -455,6 +467,7 @@ Complete tests/src/Completion.res 52:2 }] DocumentSymbol tests/src/Completion.res +getPackage Completion.res [ { "name": "MyList", @@ -539,6 +552,7 @@ DocumentSymbol tests/src/Completion.res ] Complete tests/src/Completion.res 56:2 +getPackage Completion.res [{ "label": "react.component", "kind": 4, @@ -548,6 +562,7 @@ Complete tests/src/Completion.res 56:2 }] Complete tests/src/Completion.res 58:2 +getPackage Completion.res [{ "label": "component", "kind": 4, @@ -557,6 +572,7 @@ Complete tests/src/Completion.res 58:2 }] Complete tests/src/Completion.res 60:2 +getPackage Completion.res [{ "label": "age", "kind": 4, @@ -566,6 +582,7 @@ Complete tests/src/Completion.res 60:2 }] Complete tests/src/Completion.res 62:2 +getPackage Completion.res [{ "label": "name", "kind": 4, @@ -575,6 +592,7 @@ Complete tests/src/Completion.res 62:2 }] Complete tests/src/Completion.res 64:2 +getPackage Completion.res [{ "label": "name", "kind": 4, @@ -584,6 +602,7 @@ Complete tests/src/Completion.res 64:2 }] Complete tests/src/Completion.res 67:2 +getPackage Completion.res [{ "label": "age", "kind": 4, diff --git a/analysis/tests/src/expected/Cross.res.txt b/analysis/tests/src/expected/Cross.res.txt index 82d8d20af..ecf7db7ba 100644 --- a/analysis/tests/src/expected/Cross.res.txt +++ b/analysis/tests/src/expected/Cross.res.txt @@ -1,4 +1,18 @@ References tests/src/Cross.res 0:17 +getPackage Cross.res +getPackage Div.res +getPackage Definition.res +getPackage Auto.res +getPackage RecModules.res +getPackage Hover.res +getPackage Completion.res +getPackage Cross.res +getPackage Patterns.res +getPackage RecordCompletion.res +getPackage Jsx.resi +getPackage References.res +getPackage Fragment.res +getPackage ReferencesWithInterface.resi [ {"uri": "Cross.res", "range": {"start": {"line": 8, "character": 16}, "end": {"line": 8, "character": 26}}}, {"uri": "Cross.res", "range": {"start": {"line": 6, "character": 13}, "end": {"line": 6, "character": 23}}}, @@ -8,6 +22,20 @@ References tests/src/Cross.res 0:17 ] References tests/src/Cross.res 11:31 +getPackage Cross.res +getPackage Div.res +getPackage Definition.res +getPackage Auto.res +getPackage RecModules.res +getPackage Hover.res +getPackage Completion.res +getPackage Cross.res +getPackage Patterns.res +getPackage RecordCompletion.res +getPackage Jsx.resi +getPackage References.res +getPackage Fragment.res +getPackage ReferencesWithInterface.resi [ {"uri": "Cross.res", "range": {"start": {"line": 18, "character": 29}, "end": {"line": 18, "character": 52}}}, {"uri": "Cross.res", "range": {"start": {"line": 16, "character": 26}, "end": {"line": 16, "character": 49}}}, diff --git a/analysis/tests/src/expected/Definition.res.txt b/analysis/tests/src/expected/Definition.res.txt index d88c9782a..83a87745c 100644 --- a/analysis/tests/src/expected/Definition.res.txt +++ b/analysis/tests/src/expected/Definition.res.txt @@ -1,12 +1,16 @@ Definition tests/src/Definition.res 2:8 +getPackage Definition.res {"uri": "Definition.res", "range": {"start": {"line": 0, "character": 4}, "end": {"line": 0, "character": 6}}} Definition tests/src/Definition.res 10:23 +getPackage Definition.res {"uri": "Definition.res", "range": {"start": {"line": 6, "character": 7}, "end": {"line": 6, "character": 13}}} Hover tests/src/Definition.res 14:14 +getPackage Definition.res {"contents": "```rescript\n('a => 'b, list<'a>) => list<'b>\n```\n\n [List.map f [a1; ...; an]] applies function [f] to [a1, ..., an],\n and builds the list [[f a1; ...; f an]]\n with the results returned by [f]. Not tail-recursive. "} Hover tests/src/Definition.res 18:14 +getPackage Definition.res {"contents": "```rescript\n(Belt.List.t<'a>, 'a => 'b) => Belt.List.t<'b>\n```\n\n\n `map xs f`\n\n **return** the list obtained by applying `f` to each element of `xs`\n\n ```\n map [1;2] (fun x-> x + 1) = [3;4]\n ```\n"} diff --git a/analysis/tests/src/expected/Div.res.txt b/analysis/tests/src/expected/Div.res.txt index 095c7d795..990e936b6 100644 --- a/analysis/tests/src/expected/Div.res.txt +++ b/analysis/tests/src/expected/Div.res.txt @@ -1,7 +1,9 @@ Hover tests/src/Div.res 1:10 +getPackage Div.res {"contents": "```rescript\n(\n string,\n ~?props: ReactDOMRe.domProps,\n array,\n) => React.element\n```"} Complete tests/src/Div.res 3:3 +getPackage Div.res [{ "label": "dangerouslySetInnerHTML", "kind": 4, diff --git a/analysis/tests/src/expected/Fragment.res.txt b/analysis/tests/src/expected/Fragment.res.txt index e3ba9a7fa..d6c9cec93 100644 --- a/analysis/tests/src/expected/Fragment.res.txt +++ b/analysis/tests/src/expected/Fragment.res.txt @@ -1,6 +1,8 @@ Hover tests/src/Fragment.res 6:19 +getPackage Fragment.res {"contents": "```rescript\n{\"children\": 'children} => 'children\n```"} Hover tests/src/Fragment.res 9:56 +getPackage Fragment.res null diff --git a/analysis/tests/src/expected/Hover.res.txt b/analysis/tests/src/expected/Hover.res.txt index eb3c16e32..e5476508b 100644 --- a/analysis/tests/src/expected/Hover.res.txt +++ b/analysis/tests/src/expected/Hover.res.txt @@ -1,54 +1,72 @@ Hover tests/src/Hover.res 0:4 +getPackage Hover.res {"contents": "```rescript\nint\n```"} Hover tests/src/Hover.res 3:5 +getPackage Hover.res {"contents": "```rescript\ntype t = (int, float)\n```"} Hover tests/src/Hover.res 6:7 +getPackage Hover.res {"contents": "```rescript\nmodule Id = {\n type x = int\n}\n```"} Hover tests/src/Hover.res 19:11 +getPackage Hover.res {"contents": "\nThis module is commented\n```rescript\nmodule Dep = {\n let customDouble: int => int\n}\n```"} Hover tests/src/Hover.res 22:11 +getPackage Hover.res {"contents": "```rescript\nint => int\n```\n\nSome doc comment"} Hover tests/src/Hover.res 26:6 +getPackage Hover.res {"contents": "```rescript\nint\n```"} Hover tests/src/Hover.res 33:4 +getPackage Hover.res {"contents": "```rescript\nunit => int\n```\n\nDoc comment for functionWithTypeAnnotation"} Hover tests/src/Hover.res 37:13 +getPackage Hover.res {"contents": "```rescript\nstring\n```"} Hover tests/src/Hover.res 41:13 +getPackage Hover.res {"contents": "```rescript\nstring\n```"} Hover tests/src/Hover.res 44:10 +getPackage Hover.res {"contents": "```rescript\nint\n```"} Hover tests/src/Hover.res 47:13 +getPackage Hover.res {"contents": "```rescript\nmodule Logger = {\n let log: string => unit\n}\n```"} Hover tests/src/Hover.res 52:7 +getPackage Hover.res {"contents": "```rescript\nmodule Logger = {\n let log: string => unit\n}\n```"} Definition tests/src/Hover.res 58:14 +getPackage Hover.res {"uri": "Hover.res", "range": {"start": {"line": 47, "character": 12}, "end": {"line": 47, "character": 18}}} Hover tests/src/Hover.res 62:9 +getPackage Hover.res {"contents": "```rescript\nmodule IdDefinedTwice = {\n let y: int\n let _x: int\n}\n```"} Hover tests/src/Hover.res 71:7 +getPackage Hover.res {"contents": "```rescript\nmodule A = {\n let x: int\n}\n```"} Hover tests/src/Hover.res 74:7 +getPackage Hover.res {"contents": "```rescript\nmodule A = {\n let x: int\n}\n```"} Hover tests/src/Hover.res 84:10 +getPackage Hover.res {"contents": "```rescript\n{\"children\": React.element} => React.element\n```"} Hover tests/src/Hover.res 87:10 +getPackage Hover.res {"contents": "```rescript\n{\"children\": React.element} => React.element\n```"} diff --git a/analysis/tests/src/expected/Jsx.res.txt b/analysis/tests/src/expected/Jsx.res.txt index c1e03a8ec..ab58ce96c 100644 --- a/analysis/tests/src/expected/Jsx.res.txt +++ b/analysis/tests/src/expected/Jsx.res.txt @@ -1,7 +1,9 @@ Definition tests/src/Jsx.res 5:9 +getPackage Jsx.res {"uri": "Jsx.res", "range": {"start": {"line": 2, "character": 6}, "end": {"line": 2, "character": 10}}} Complete tests/src/Jsx.res 7:2 +getPackage Jsx.res [{ "label": "first", "kind": 4, @@ -23,6 +25,7 @@ Complete tests/src/Jsx.res 7:2 }] Complete tests/src/Jsx.res 9:2 +getPackage Jsx.res [{ "label": "first", "kind": 4, @@ -44,6 +47,7 @@ Complete tests/src/Jsx.res 9:2 }] Complete tests/src/Jsx.res 11:2 +getPackage Jsx.res [{ "label": "second", "kind": 4, @@ -71,6 +75,7 @@ Complete tests/src/Jsx.res 11:2 }] Complete tests/src/Jsx.res 18:2 +getPackage Jsx.res [{ "label": "key", "kind": 4, @@ -80,6 +85,7 @@ Complete tests/src/Jsx.res 18:2 }] Complete tests/src/Jsx.res 20:2 +getPackage Jsx.res [{ "label": "key", "kind": 4, @@ -89,6 +95,7 @@ Complete tests/src/Jsx.res 20:2 }] Complete tests/src/Jsx.res 22:2 +getPackage Jsx.res [{ "label": "key", "kind": 4, @@ -98,6 +105,7 @@ Complete tests/src/Jsx.res 22:2 }] Complete tests/src/Jsx.res 24:2 +getPackage Jsx.res [{ "label": "key", "kind": 4, @@ -107,6 +115,7 @@ Complete tests/src/Jsx.res 24:2 }] Complete tests/src/Jsx.res 26:2 +getPackage Jsx.res [{ "label": "key", "kind": 4, @@ -116,6 +125,7 @@ Complete tests/src/Jsx.res 26:2 }] Complete tests/src/Jsx.res 28:2 +getPackage Jsx.res [{ "label": "key", "kind": 4, @@ -125,6 +135,7 @@ Complete tests/src/Jsx.res 28:2 }] Complete tests/src/Jsx.res 30:2 +getPackage Jsx.res [{ "label": "key", "kind": 4, @@ -134,6 +145,7 @@ Complete tests/src/Jsx.res 30:2 }] Complete tests/src/Jsx.res 32:2 +getPackage Jsx.res [{ "label": "key", "kind": 4, @@ -143,6 +155,7 @@ Complete tests/src/Jsx.res 32:2 }] Complete tests/src/Jsx.res 34:2 +getPackage Jsx.res [{ "label": "key", "kind": 4, @@ -152,6 +165,7 @@ Complete tests/src/Jsx.res 34:2 }] Complete tests/src/Jsx.res 36:2 +getPackage Jsx.res [{ "label": "key", "kind": 4, @@ -161,6 +175,7 @@ Complete tests/src/Jsx.res 36:2 }] Complete tests/src/Jsx.res 38:2 +getPackage Jsx.res [{ "label": "key", "kind": 4, @@ -170,6 +185,7 @@ Complete tests/src/Jsx.res 38:2 }] Complete tests/src/Jsx.res 40:2 +getPackage Jsx.res [{ "label": "key", "kind": 4, diff --git a/analysis/tests/src/expected/Jsx.resi.txt b/analysis/tests/src/expected/Jsx.resi.txt index deac2dbe9..73ee10d96 100644 --- a/analysis/tests/src/expected/Jsx.resi.txt +++ b/analysis/tests/src/expected/Jsx.resi.txt @@ -1,6 +1,10 @@ Hover tests/src/Jsx.resi 1:4 +getPackage Jsx.resi +getPackage Jsx.res {"contents": "```rescript\n(~first: string, ~?key: string, unit) => {\"first\": string}\n```"} Hover tests/src/Jsx.resi 4:4 +getPackage Jsx.resi +getPackage Jsx.res {"contents": "```rescript\nint\n```"} diff --git a/analysis/tests/src/expected/Patterns.res.txt b/analysis/tests/src/expected/Patterns.res.txt index e0e13a62b..c607f255b 100644 --- a/analysis/tests/src/expected/Patterns.res.txt +++ b/analysis/tests/src/expected/Patterns.res.txt @@ -1,15 +1,20 @@ Definition tests/src/Patterns.res 20:10 +getPackage Patterns.res {"uri": "Patterns.res", "range": {"start": {"line": 3, "character": 7}, "end": {"line": 3, "character": 10}}} Definition tests/src/Patterns.res 25:11 +getPackage Patterns.res {"uri": "Patterns.res", "range": {"start": {"line": 9, "character": 7}, "end": {"line": 9, "character": 11}}} Definition tests/src/Patterns.res 28:11 +getPackage Patterns.res {"uri": "Patterns.res", "range": {"start": {"line": 11, "character": 7}, "end": {"line": 11, "character": 8}}} Definition tests/src/Patterns.res 31:11 +getPackage Patterns.res {"uri": "Patterns.res", "range": {"start": {"line": 15, "character": 9}, "end": {"line": 15, "character": 11}}} Definition tests/src/Patterns.res 34:11 +getPackage Patterns.res {"uri": "Patterns.res", "range": {"start": {"line": 17, "character": 11}, "end": {"line": 17, "character": 16}}} diff --git a/analysis/tests/src/expected/RecModules.res.txt b/analysis/tests/src/expected/RecModules.res.txt index 80168487c..5830f79b1 100644 --- a/analysis/tests/src/expected/RecModules.res.txt +++ b/analysis/tests/src/expected/RecModules.res.txt @@ -1,6 +1,8 @@ Hover tests/src/RecModules.res 18:12 +getPackage RecModules.res {"contents": "```rescript\nmodule C = {\n type t\n let createA: t => A.t\n}\n```"} Hover tests/src/RecModules.res 20:12 +getPackage RecModules.res {"contents": "```rescript\nmodule A = {\n type t\n let child: t => B.t\n}\n```"} diff --git a/analysis/tests/src/expected/RecordCompletion.res.txt b/analysis/tests/src/expected/RecordCompletion.res.txt index eca2e8d1c..f72d1aa79 100644 --- a/analysis/tests/src/expected/RecordCompletion.res.txt +++ b/analysis/tests/src/expected/RecordCompletion.res.txt @@ -1,4 +1,5 @@ Complete tests/src/RecordCompletion.res 7:3 +getPackage RecordCompletion.res [{ "label": "Js.Array2.mapi", "kind": 12, @@ -14,6 +15,7 @@ Complete tests/src/RecordCompletion.res 7:3 }] Complete tests/src/RecordCompletion.res 9:3 +getPackage RecordCompletion.res [{ "label": "Js.Array2.mapi", "kind": 12, diff --git a/analysis/tests/src/expected/References.res.txt b/analysis/tests/src/expected/References.res.txt index 1411ee486..b0bd617ba 100644 --- a/analysis/tests/src/expected/References.res.txt +++ b/analysis/tests/src/expected/References.res.txt @@ -1,4 +1,32 @@ References tests/src/References.res 0:4 +getPackage References.res +LocalRef +Checking externals: 1002 +filter Div References +filter Definition References +filter Auto References +filter RecModules References +filter Hover References +filter Completion References +filter Cross References +filter Patterns References +filter RecordCompletion References +filter Jsx References +filter References References +filter Fragment References +filter ReferencesWithInterface References +getPackage Div.res +getPackage Definition.res +getPackage Auto.res +getPackage RecModules.res +getPackage Hover.res +getPackage Completion.res +getPackage Cross.res +getPackage Patterns.res +getPackage RecordCompletion.res +getPackage Jsx.resi +getPackage Fragment.res +getPackage ReferencesWithInterface.resi [ {"uri": "Cross.res", "range": {"start": {"line": 8, "character": 27}, "end": {"line": 8, "character": 28}}}, {"uri": "Cross.res", "range": {"start": {"line": 3, "character": 27}, "end": {"line": 3, "character": 28}}}, @@ -9,6 +37,9 @@ References tests/src/References.res 0:4 ] References tests/src/References.res 9:19 +getPackage References.res +LocalRef +Checking externals: 1007 [ {"uri": "References.res", "range": {"start": {"line": 9, "character": 19}, "end": {"line": 9, "character": 21}}}, {"uri": "References.res", "range": {"start": {"line": 9, "character": 12}, "end": {"line": 9, "character": 14}}} diff --git a/analysis/tests/src/expected/ReferencesWithInterface.res.txt b/analysis/tests/src/expected/ReferencesWithInterface.res.txt index 2372f686b..19bf42474 100644 --- a/analysis/tests/src/expected/ReferencesWithInterface.res.txt +++ b/analysis/tests/src/expected/ReferencesWithInterface.res.txt @@ -1,4 +1,33 @@ References tests/src/ReferencesWithInterface.res 0:4 +getPackage ReferencesWithInterface.res +LocalRef +Checking externals: 1002 +getPackage ReferencesWithInterface.resi +filter Div ReferencesWithInterface +filter Definition ReferencesWithInterface +filter Auto ReferencesWithInterface +filter RecModules ReferencesWithInterface +filter Hover ReferencesWithInterface +filter Completion ReferencesWithInterface +filter Cross ReferencesWithInterface +filter Patterns ReferencesWithInterface +filter RecordCompletion ReferencesWithInterface +filter Jsx ReferencesWithInterface +filter References ReferencesWithInterface +filter Fragment ReferencesWithInterface +filter ReferencesWithInterface ReferencesWithInterface +getPackage Div.res +getPackage Definition.res +getPackage Auto.res +getPackage RecModules.res +getPackage Hover.res +getPackage Completion.res +getPackage Cross.res +getPackage Patterns.res +getPackage RecordCompletion.res +getPackage Jsx.resi +getPackage References.res +getPackage Fragment.res [ {"uri": "Cross.res", "range": {"start": {"line": 18, "character": 53}, "end": {"line": 18, "character": 54}}}, {"uri": "Cross.res", "range": {"start": {"line": 14, "character": 53}, "end": {"line": 14, "character": 54}}}, diff --git a/analysis/tests/src/expected/ReferencesWithInterface.resi.txt b/analysis/tests/src/expected/ReferencesWithInterface.resi.txt index 5f96d5af6..2bed71432 100644 --- a/analysis/tests/src/expected/ReferencesWithInterface.resi.txt +++ b/analysis/tests/src/expected/ReferencesWithInterface.resi.txt @@ -1,4 +1,33 @@ References tests/src/ReferencesWithInterface.resi 3:4 +getPackage ReferencesWithInterface.resi +LocalRef +Checking externals: 1002 +getPackage ReferencesWithInterface.res +filter Div ReferencesWithInterface +filter Definition ReferencesWithInterface +filter Auto ReferencesWithInterface +filter RecModules ReferencesWithInterface +filter Hover ReferencesWithInterface +filter Completion ReferencesWithInterface +filter Cross ReferencesWithInterface +filter Patterns ReferencesWithInterface +filter RecordCompletion ReferencesWithInterface +filter Jsx ReferencesWithInterface +filter References ReferencesWithInterface +filter Fragment ReferencesWithInterface +filter ReferencesWithInterface ReferencesWithInterface +getPackage Div.res +getPackage Definition.res +getPackage Auto.res +getPackage RecModules.res +getPackage Hover.res +getPackage Completion.res +getPackage Cross.res +getPackage Patterns.res +getPackage RecordCompletion.res +getPackage Jsx.resi +getPackage References.res +getPackage Fragment.res [ {"uri": "Cross.res", "range": {"start": {"line": 18, "character": 53}, "end": {"line": 18, "character": 54}}}, {"uri": "Cross.res", "range": {"start": {"line": 14, "character": 53}, "end": {"line": 14, "character": 54}}}, From dde00b71e1e30f97ea4721b6604a59a76639b8ac Mon Sep 17 00:00:00 2001 From: Cristiano Calcagno Date: Sat, 5 Jun 2021 05:43:57 +0200 Subject: [PATCH 12/14] Make projectFiles and dependenciesFile a set. --- analysis/src/NewCompletions.ml | 6 +++-- analysis/src/Packages.ml | 8 +++++-- analysis/src/References.ml | 11 ++++----- analysis/src/SharedTypes.ml | 6 +++-- analysis/tests/src/expected/Cross.res.txt | 24 +++++++++---------- .../tests/src/expected/References.res.txt | 24 +++++++++---------- .../expected/ReferencesWithInterface.res.txt | 24 +++++++++---------- .../expected/ReferencesWithInterface.resi.txt | 24 +++++++++---------- 8 files changed, 67 insertions(+), 60 deletions(-) diff --git a/analysis/src/NewCompletions.ml b/analysis/src/NewCompletions.ml index bbec85cc9..97e81b5ed 100644 --- a/analysis/src/NewCompletions.ml +++ b/analysis/src/NewCompletions.ml @@ -773,7 +773,7 @@ let getItems ~full ~package ~rawOpens ~allFiles ~pos ~parts = in (* TODO complete the namespaced name too *) let localModuleNames = - allFiles + allFiles |> FileSet.elements |> Utils.filterMap (fun name -> if Utils.startsWith name suffix && not (String.contains name '-') then Some {(emptyDeclared name) with item = FileModule name} @@ -1148,7 +1148,9 @@ let computeCompletions ~uri ~textOpt ~pos = | Some full -> let rawOpens = PartialParser.findOpens text offset in let package = full.package in - let allFiles = package.projectFiles @ package.dependenciesFiles in + let allFiles = + FileSet.union package.projectFiles package.dependenciesFiles + in let findItems ~exact parts = let items = getItems ~full ~package ~rawOpens ~allFiles ~pos ~parts diff --git a/analysis/src/Packages.ml b/analysis/src/Packages.ml index 755e0d90d..0fd04ad08 100644 --- a/analysis/src/Packages.ml +++ b/analysis/src/Packages.ml @@ -84,8 +84,12 @@ let newBsPackage rootPath = Log.log ("Opens from bsconfig: " ^ (opens |> String.concat " ")); { SharedTypes.rootPath; - projectFiles = projectFilesAndPaths |> List.map fst; - dependenciesFiles = dependenciesFilesAndPaths |> List.map fst; + projectFiles = + projectFilesAndPaths |> List.map fst + |> SharedTypes.FileSet.of_list; + dependenciesFiles = + dependenciesFilesAndPaths |> List.map fst + |> SharedTypes.FileSet.of_list; pathsForModule; opens; namespace; diff --git a/analysis/src/References.ml b/analysis/src/References.ml index 6731a7f68..5ea8a897b 100644 --- a/analysis/src/References.ml +++ b/analysis/src/References.ml @@ -426,11 +426,10 @@ let forLocalStamp ~full:{file; extra; package} stamp tip = maybeLog ("Now checking path " ^ pathToString path); let thisModuleName = file.moduleName in let externals = - package.projectFiles + package.projectFiles |> FileSet.elements |> List.filter (fun name -> - - prerr_endline ("filter " ^ name ^ " " ^ file.moduleName ); - name <> file.moduleName) + prerr_endline ("filter " ^ name ^ " " ^ file.moduleName); + name <> file.moduleName) |> Utils.filterMap (fun name -> match ProcessCmt.fileForModule ~package name with | None -> None @@ -463,7 +462,7 @@ let allReferencesForLocItem ~full:({file; package} as full) locItem = match locItem.locType with | TopLevelModule moduleName -> let otherModulesReferences = - package.projectFiles + package.projectFiles |> FileSet.elements |> Utils.filterMap (fun name -> match ProcessCmt.fileForModule ~package name with | None -> None @@ -489,7 +488,7 @@ let allReferencesForLocItem ~full:({file; package} as full) locItem = | TypeDefinition (_, _, stamp) -> forLocalStamp ~full stamp Type | Typed (_, _, (LocalReference (stamp, tip) | Definition (stamp, tip))) | LModule (LocalReference (stamp, tip) | Definition (stamp, tip)) -> - prerr_endline ("LocalRef"); + prerr_endline "LocalRef"; maybeLog ("Finding references for " ^ Uri2.toString file.uri ^ " and stamp " ^ string_of_int stamp ^ " and tip " ^ tipToString tip); diff --git a/analysis/src/SharedTypes.ml b/analysis/src/SharedTypes.ml index 9fd2c2730..a5c25b1b6 100644 --- a/analysis/src/SharedTypes.ml +++ b/analysis/src/SharedTypes.ml @@ -219,10 +219,12 @@ type extra = { type file = string +module FileSet = Set.Make (String) + type package = { rootPath : filePath; - projectFiles : file list; - dependenciesFiles : file list; + projectFiles : FileSet.t; + dependenciesFiles : FileSet.t; pathsForModule : (file, paths) Hashtbl.t; namespace : string option; opens : string list; diff --git a/analysis/tests/src/expected/Cross.res.txt b/analysis/tests/src/expected/Cross.res.txt index ecf7db7ba..ade6f310e 100644 --- a/analysis/tests/src/expected/Cross.res.txt +++ b/analysis/tests/src/expected/Cross.res.txt @@ -1,17 +1,17 @@ References tests/src/Cross.res 0:17 getPackage Cross.res -getPackage Div.res -getPackage Definition.res getPackage Auto.res -getPackage RecModules.res -getPackage Hover.res getPackage Completion.res getPackage Cross.res +getPackage Definition.res +getPackage Div.res +getPackage Fragment.res +getPackage Hover.res +getPackage Jsx.resi getPackage Patterns.res +getPackage RecModules.res getPackage RecordCompletion.res -getPackage Jsx.resi getPackage References.res -getPackage Fragment.res getPackage ReferencesWithInterface.resi [ {"uri": "Cross.res", "range": {"start": {"line": 8, "character": 16}, "end": {"line": 8, "character": 26}}}, @@ -23,18 +23,18 @@ getPackage ReferencesWithInterface.resi References tests/src/Cross.res 11:31 getPackage Cross.res -getPackage Div.res -getPackage Definition.res getPackage Auto.res -getPackage RecModules.res -getPackage Hover.res getPackage Completion.res getPackage Cross.res +getPackage Definition.res +getPackage Div.res +getPackage Fragment.res +getPackage Hover.res +getPackage Jsx.resi getPackage Patterns.res +getPackage RecModules.res getPackage RecordCompletion.res -getPackage Jsx.resi getPackage References.res -getPackage Fragment.res getPackage ReferencesWithInterface.resi [ {"uri": "Cross.res", "range": {"start": {"line": 18, "character": 29}, "end": {"line": 18, "character": 52}}}, diff --git a/analysis/tests/src/expected/References.res.txt b/analysis/tests/src/expected/References.res.txt index b0bd617ba..e6859daa5 100644 --- a/analysis/tests/src/expected/References.res.txt +++ b/analysis/tests/src/expected/References.res.txt @@ -2,30 +2,30 @@ References tests/src/References.res 0:4 getPackage References.res LocalRef Checking externals: 1002 -filter Div References -filter Definition References filter Auto References -filter RecModules References -filter Hover References filter Completion References filter Cross References +filter Definition References +filter Div References +filter Fragment References +filter Hover References +filter Jsx References filter Patterns References +filter RecModules References filter RecordCompletion References -filter Jsx References filter References References -filter Fragment References filter ReferencesWithInterface References -getPackage Div.res -getPackage Definition.res getPackage Auto.res -getPackage RecModules.res -getPackage Hover.res getPackage Completion.res getPackage Cross.res +getPackage Definition.res +getPackage Div.res +getPackage Fragment.res +getPackage Hover.res +getPackage Jsx.resi getPackage Patterns.res +getPackage RecModules.res getPackage RecordCompletion.res -getPackage Jsx.resi -getPackage Fragment.res getPackage ReferencesWithInterface.resi [ {"uri": "Cross.res", "range": {"start": {"line": 8, "character": 27}, "end": {"line": 8, "character": 28}}}, diff --git a/analysis/tests/src/expected/ReferencesWithInterface.res.txt b/analysis/tests/src/expected/ReferencesWithInterface.res.txt index 19bf42474..f6dd35a47 100644 --- a/analysis/tests/src/expected/ReferencesWithInterface.res.txt +++ b/analysis/tests/src/expected/ReferencesWithInterface.res.txt @@ -3,31 +3,31 @@ getPackage ReferencesWithInterface.res LocalRef Checking externals: 1002 getPackage ReferencesWithInterface.resi -filter Div ReferencesWithInterface -filter Definition ReferencesWithInterface filter Auto ReferencesWithInterface -filter RecModules ReferencesWithInterface -filter Hover ReferencesWithInterface filter Completion ReferencesWithInterface filter Cross ReferencesWithInterface +filter Definition ReferencesWithInterface +filter Div ReferencesWithInterface +filter Fragment ReferencesWithInterface +filter Hover ReferencesWithInterface +filter Jsx ReferencesWithInterface filter Patterns ReferencesWithInterface +filter RecModules ReferencesWithInterface filter RecordCompletion ReferencesWithInterface -filter Jsx ReferencesWithInterface filter References ReferencesWithInterface -filter Fragment ReferencesWithInterface filter ReferencesWithInterface ReferencesWithInterface -getPackage Div.res -getPackage Definition.res getPackage Auto.res -getPackage RecModules.res -getPackage Hover.res getPackage Completion.res getPackage Cross.res +getPackage Definition.res +getPackage Div.res +getPackage Fragment.res +getPackage Hover.res +getPackage Jsx.resi getPackage Patterns.res +getPackage RecModules.res getPackage RecordCompletion.res -getPackage Jsx.resi getPackage References.res -getPackage Fragment.res [ {"uri": "Cross.res", "range": {"start": {"line": 18, "character": 53}, "end": {"line": 18, "character": 54}}}, {"uri": "Cross.res", "range": {"start": {"line": 14, "character": 53}, "end": {"line": 14, "character": 54}}}, diff --git a/analysis/tests/src/expected/ReferencesWithInterface.resi.txt b/analysis/tests/src/expected/ReferencesWithInterface.resi.txt index 2bed71432..971f9efb3 100644 --- a/analysis/tests/src/expected/ReferencesWithInterface.resi.txt +++ b/analysis/tests/src/expected/ReferencesWithInterface.resi.txt @@ -3,31 +3,31 @@ getPackage ReferencesWithInterface.resi LocalRef Checking externals: 1002 getPackage ReferencesWithInterface.res -filter Div ReferencesWithInterface -filter Definition ReferencesWithInterface filter Auto ReferencesWithInterface -filter RecModules ReferencesWithInterface -filter Hover ReferencesWithInterface filter Completion ReferencesWithInterface filter Cross ReferencesWithInterface +filter Definition ReferencesWithInterface +filter Div ReferencesWithInterface +filter Fragment ReferencesWithInterface +filter Hover ReferencesWithInterface +filter Jsx ReferencesWithInterface filter Patterns ReferencesWithInterface +filter RecModules ReferencesWithInterface filter RecordCompletion ReferencesWithInterface -filter Jsx ReferencesWithInterface filter References ReferencesWithInterface -filter Fragment ReferencesWithInterface filter ReferencesWithInterface ReferencesWithInterface -getPackage Div.res -getPackage Definition.res getPackage Auto.res -getPackage RecModules.res -getPackage Hover.res getPackage Completion.res getPackage Cross.res +getPackage Definition.res +getPackage Div.res +getPackage Fragment.res +getPackage Hover.res +getPackage Jsx.resi getPackage Patterns.res +getPackage RecModules.res getPackage RecordCompletion.res -getPackage Jsx.resi getPackage References.res -getPackage Fragment.res [ {"uri": "Cross.res", "range": {"start": {"line": 18, "character": 53}, "end": {"line": 18, "character": 54}}}, {"uri": "Cross.res", "range": {"start": {"line": 14, "character": 53}, "end": {"line": 14, "character": 54}}}, From 379d82a0dd2c41d9b5ae3a5ef2e18bb07b96b908 Mon Sep 17 00:00:00 2001 From: Cristiano Calcagno Date: Sat, 5 Jun 2021 05:57:27 +0200 Subject: [PATCH 13/14] more debug --- analysis/src/References.ml | 9 +++++++++ analysis/tests/src/expected/Hover.res.txt | 6 ++++++ analysis/tests/src/expected/Jsx.resi.txt | 10 ++++++++++ analysis/tests/src/expected/References.res.txt | 5 +++++ .../tests/src/expected/ReferencesWithInterface.res.txt | 6 ++++++ .../src/expected/ReferencesWithInterface.resi.txt | 7 +++++++ 6 files changed, 43 insertions(+) diff --git a/analysis/src/References.ml b/analysis/src/References.ml index 5ea8a897b..3b1d411bd 100644 --- a/analysis/src/References.ml +++ b/analysis/src/References.ml @@ -183,19 +183,26 @@ let declaredForExportedTip ~(stamps : stamps) ~(exported : exported) name tip = Hashtbl.find_opt stamps.modules stamp |?>> fun x -> {x with item = ()} let alternateDeclared ~(file : File.t) ~package declared tip = + prerr_endline "alternateDeclared"; match Hashtbl.find_opt package.pathsForModule file.moduleName with | None -> None | Some paths -> ( + prerr_endline "found paths"; maybeLog ("paths for " ^ file.moduleName); match paths with | IntfAndImpl {resi; res} -> ( + prerr_endline "both intf and impl"; maybeLog "Have both!!"; let resiUri = Uri2.fromPath resi in let resUri = Uri2.fromPath res in + prerr_endline + ("resiUri:" ^ Uri2.toString resiUri ^ " file.uri:" + ^ Uri2.toString file.uri); if resiUri = file.uri then match ProcessCmt.getFullFromCmt ~uri:resUri with | None -> None | Some {file; extra} -> ( + prerr_endline "found Full"; match declaredForExportedTip ~stamps:file.stamps ~exported:file.contents.exported declared.name.txt tip @@ -398,8 +405,10 @@ let forLocalStamp ~full:{file; extra; package} stamp tip = match declaredForTip ~stamps:env.file.stamps stamp tip with | None -> [] | Some declared -> + prerr_endline "found declared"; if isVisible declared then ( let alternativeReferences = + prerr_endline "alternativeReferences"; match alternateDeclared ~package ~file declared tip with | None -> [] | Some (file, extra, {stamp}) -> ( diff --git a/analysis/tests/src/expected/Hover.res.txt b/analysis/tests/src/expected/Hover.res.txt index e5476508b..180edbde5 100644 --- a/analysis/tests/src/expected/Hover.res.txt +++ b/analysis/tests/src/expected/Hover.res.txt @@ -1,5 +1,7 @@ Hover tests/src/Hover.res 0:4 getPackage Hover.res +alternateDeclared +found paths {"contents": "```rescript\nint\n```"} Hover tests/src/Hover.res 3:5 @@ -20,10 +22,14 @@ getPackage Hover.res Hover tests/src/Hover.res 26:6 getPackage Hover.res +alternateDeclared +found paths {"contents": "```rescript\nint\n```"} Hover tests/src/Hover.res 33:4 getPackage Hover.res +alternateDeclared +found paths {"contents": "```rescript\nunit => int\n```\n\nDoc comment for functionWithTypeAnnotation"} Hover tests/src/Hover.res 37:13 diff --git a/analysis/tests/src/expected/Jsx.resi.txt b/analysis/tests/src/expected/Jsx.resi.txt index 73ee10d96..f92695dcf 100644 --- a/analysis/tests/src/expected/Jsx.resi.txt +++ b/analysis/tests/src/expected/Jsx.resi.txt @@ -1,10 +1,20 @@ Hover tests/src/Jsx.resi 1:4 getPackage Jsx.resi +alternateDeclared +found paths +both intf and impl +resiUri:Jsx.resi file.uri:Jsx.resi getPackage Jsx.res +found Full {"contents": "```rescript\n(~first: string, ~?key: string, unit) => {\"first\": string}\n```"} Hover tests/src/Jsx.resi 4:4 getPackage Jsx.resi +alternateDeclared +found paths +both intf and impl +resiUri:Jsx.resi file.uri:Jsx.resi getPackage Jsx.res +found Full {"contents": "```rescript\nint\n```"} diff --git a/analysis/tests/src/expected/References.res.txt b/analysis/tests/src/expected/References.res.txt index e6859daa5..447266b6b 100644 --- a/analysis/tests/src/expected/References.res.txt +++ b/analysis/tests/src/expected/References.res.txt @@ -2,6 +2,10 @@ References tests/src/References.res 0:4 getPackage References.res LocalRef Checking externals: 1002 +found declared +alternativeReferences +alternateDeclared +found paths filter Auto References filter Completion References filter Cross References @@ -40,6 +44,7 @@ References tests/src/References.res 9:19 getPackage References.res LocalRef Checking externals: 1007 +found declared [ {"uri": "References.res", "range": {"start": {"line": 9, "character": 19}, "end": {"line": 9, "character": 21}}}, {"uri": "References.res", "range": {"start": {"line": 9, "character": 12}, "end": {"line": 9, "character": 14}}} diff --git a/analysis/tests/src/expected/ReferencesWithInterface.res.txt b/analysis/tests/src/expected/ReferencesWithInterface.res.txt index f6dd35a47..4e77cd9f1 100644 --- a/analysis/tests/src/expected/ReferencesWithInterface.res.txt +++ b/analysis/tests/src/expected/ReferencesWithInterface.res.txt @@ -2,6 +2,12 @@ References tests/src/ReferencesWithInterface.res 0:4 getPackage ReferencesWithInterface.res LocalRef Checking externals: 1002 +found declared +alternativeReferences +alternateDeclared +found paths +both intf and impl +resiUri:ReferencesWithInterface.resi file.uri:ReferencesWithInterface.res getPackage ReferencesWithInterface.resi filter Auto ReferencesWithInterface filter Completion ReferencesWithInterface diff --git a/analysis/tests/src/expected/ReferencesWithInterface.resi.txt b/analysis/tests/src/expected/ReferencesWithInterface.resi.txt index 971f9efb3..1e3e7028b 100644 --- a/analysis/tests/src/expected/ReferencesWithInterface.resi.txt +++ b/analysis/tests/src/expected/ReferencesWithInterface.resi.txt @@ -2,7 +2,14 @@ References tests/src/ReferencesWithInterface.resi 3:4 getPackage ReferencesWithInterface.resi LocalRef Checking externals: 1002 +found declared +alternativeReferences +alternateDeclared +found paths +both intf and impl +resiUri:ReferencesWithInterface.resi file.uri:ReferencesWithInterface.resi getPackage ReferencesWithInterface.res +found Full filter Auto ReferencesWithInterface filter Completion ReferencesWithInterface filter Cross ReferencesWithInterface From 816fac150fc065fcc64fde23b568d68946a61612 Mon Sep 17 00:00:00 2001 From: Cristiano Calcagno Date: Sat, 5 Jun 2021 06:06:45 +0200 Subject: [PATCH 14/14] remove debug --- analysis/src/Packages.ml | 1 - analysis/src/References.ml | 15 +------- analysis/tests/src/expected/Auto.res.txt | 1 - .../tests/src/expected/Completion.res.txt | 19 ---------- analysis/tests/src/expected/Cross.res.txt | 28 --------------- .../tests/src/expected/Definition.res.txt | 4 --- analysis/tests/src/expected/Div.res.txt | 2 -- analysis/tests/src/expected/Fragment.res.txt | 2 -- analysis/tests/src/expected/Hover.res.txt | 24 ------------- analysis/tests/src/expected/Jsx.res.txt | 16 --------- analysis/tests/src/expected/Jsx.resi.txt | 14 -------- analysis/tests/src/expected/Patterns.res.txt | 5 --- .../tests/src/expected/RecModules.res.txt | 2 -- .../src/expected/RecordCompletion.res.txt | 2 -- .../tests/src/expected/References.res.txt | 36 ------------------- .../expected/ReferencesWithInterface.res.txt | 35 ------------------ .../expected/ReferencesWithInterface.resi.txt | 36 ------------------- 17 files changed, 1 insertion(+), 241 deletions(-) diff --git a/analysis/src/Packages.ml b/analysis/src/Packages.ml index 0fd04ad08..7401d71f0 100644 --- a/analysis/src/Packages.ml +++ b/analysis/src/Packages.ml @@ -109,7 +109,6 @@ let findRoot ~uri packagesByRoot = loop (Filename.dirname path) let getPackage ~uri = - prerr_endline ("getPackage " ^ Uri2.toString uri); let open SharedTypes in if Hashtbl.mem state.rootForUri uri then Ok (Hashtbl.find state.packagesByRoot (Hashtbl.find state.rootForUri uri)) diff --git a/analysis/src/References.ml b/analysis/src/References.ml index 3b1d411bd..d6738a551 100644 --- a/analysis/src/References.ml +++ b/analysis/src/References.ml @@ -183,26 +183,19 @@ let declaredForExportedTip ~(stamps : stamps) ~(exported : exported) name tip = Hashtbl.find_opt stamps.modules stamp |?>> fun x -> {x with item = ()} let alternateDeclared ~(file : File.t) ~package declared tip = - prerr_endline "alternateDeclared"; match Hashtbl.find_opt package.pathsForModule file.moduleName with | None -> None | Some paths -> ( - prerr_endline "found paths"; maybeLog ("paths for " ^ file.moduleName); match paths with | IntfAndImpl {resi; res} -> ( - prerr_endline "both intf and impl"; maybeLog "Have both!!"; let resiUri = Uri2.fromPath resi in let resUri = Uri2.fromPath res in - prerr_endline - ("resiUri:" ^ Uri2.toString resiUri ^ " file.uri:" - ^ Uri2.toString file.uri); if resiUri = file.uri then match ProcessCmt.getFullFromCmt ~uri:resUri with | None -> None | Some {file; extra} -> ( - prerr_endline "found Full"; match declaredForExportedTip ~stamps:file.stamps ~exported:file.contents.exported declared.name.txt tip @@ -400,15 +393,12 @@ let forLocalStamp ~full:{file; extra; package} stamp tip = match Hashtbl.find_opt extra.internalReferences localStamp with | None -> [] | Some local -> - prerr_endline ("Checking externals: " ^ string_of_int stamp); let externals = match declaredForTip ~stamps:env.file.stamps stamp tip with | None -> [] | Some declared -> - prerr_endline "found declared"; if isVisible declared then ( let alternativeReferences = - prerr_endline "alternativeReferences"; match alternateDeclared ~package ~file declared tip with | None -> [] | Some (file, extra, {stamp}) -> ( @@ -436,9 +426,7 @@ let forLocalStamp ~full:{file; extra; package} stamp tip = let thisModuleName = file.moduleName in let externals = package.projectFiles |> FileSet.elements - |> List.filter (fun name -> - prerr_endline ("filter " ^ name ^ " " ^ file.moduleName); - name <> file.moduleName) + |> List.filter (fun name -> name <> file.moduleName) |> Utils.filterMap (fun name -> match ProcessCmt.fileForModule ~package name with | None -> None @@ -497,7 +485,6 @@ let allReferencesForLocItem ~full:({file; package} as full) locItem = | TypeDefinition (_, _, stamp) -> forLocalStamp ~full stamp Type | Typed (_, _, (LocalReference (stamp, tip) | Definition (stamp, tip))) | LModule (LocalReference (stamp, tip) | Definition (stamp, tip)) -> - prerr_endline "LocalRef"; maybeLog ("Finding references for " ^ Uri2.toString file.uri ^ " and stamp " ^ string_of_int stamp ^ " and tip " ^ tipToString tip); diff --git a/analysis/tests/src/expected/Auto.res.txt b/analysis/tests/src/expected/Auto.res.txt index acb9dc1b4..f82058d6b 100644 --- a/analysis/tests/src/expected/Auto.res.txt +++ b/analysis/tests/src/expected/Auto.res.txt @@ -1,4 +1,3 @@ Hover tests/src/Auto.res 2:13 -getPackage Auto.res {"contents": "```rescript\n(Belt.List.t<'a>, 'a => 'b) => Belt.List.t<'b>\n```\n\n\n `map xs f`\n\n **return** the list obtained by applying `f` to each element of `xs`\n\n ```\n map [1;2] (fun x-> x + 1) = [3;4]\n ```\n"} diff --git a/analysis/tests/src/expected/Completion.res.txt b/analysis/tests/src/expected/Completion.res.txt index 31eaef1d9..bb6439279 100644 --- a/analysis/tests/src/expected/Completion.res.txt +++ b/analysis/tests/src/expected/Completion.res.txt @@ -1,5 +1,4 @@ Complete tests/src/Completion.res 0:2 -getPackage Completion.res [{ "label": "mapReverse", "kind": 12, @@ -69,7 +68,6 @@ getPackage Completion.res }] Complete tests/src/Completion.res 1:2 -getPackage Completion.res [{ "label": "Floatarray", "kind": 9, @@ -289,7 +287,6 @@ getPackage Completion.res }] Complete tests/src/Completion.res 2:2 -getPackage Completion.res [{ "label": "mapi", "kind": 12, @@ -341,7 +338,6 @@ getPackage Completion.res }] Complete tests/src/Completion.res 12:2 -getPackage Completion.res [{ "label": "customDouble", "kind": 12, @@ -351,7 +347,6 @@ getPackage Completion.res }] Complete tests/src/Completion.res 19:2 -getPackage Completion.res [{ "label": "age", "kind": 4, @@ -367,7 +362,6 @@ getPackage Completion.res }] Complete tests/src/Completion.res 21:2 -getPackage Completion.res [{ "label": "Js.Array2.mapi", "kind": 12, @@ -383,7 +377,6 @@ getPackage Completion.res }] Complete tests/src/Completion.res 23:2 -getPackage Completion.res [{ "label": "Js.String2.toUpperCase", "kind": 12, @@ -393,7 +386,6 @@ getPackage Completion.res }] Complete tests/src/Completion.res 27:2 -getPackage Completion.res [{ "label": "Belt.Option.eqU", "kind": 12, @@ -409,7 +401,6 @@ getPackage Completion.res }] Complete tests/src/Completion.res 36:2 -getPackage Completion.res [{ "label": "ForAuto.abc", "kind": 12, @@ -425,7 +416,6 @@ getPackage Completion.res }] Complete tests/src/Completion.res 38:2 -getPackage Completion.res [{ "label": "unsafeGet", "kind": 12, @@ -441,7 +431,6 @@ getPackage Completion.res }] Complete tests/src/Completion.res 50:2 -getPackage Completion.res [{ "label": "zzz", "kind": 12, @@ -451,7 +440,6 @@ getPackage Completion.res }] Complete tests/src/Completion.res 52:2 -getPackage Completion.res [{ "label": "zoo", "kind": 4, @@ -467,7 +455,6 @@ getPackage Completion.res }] DocumentSymbol tests/src/Completion.res -getPackage Completion.res [ { "name": "MyList", @@ -552,7 +539,6 @@ getPackage Completion.res ] Complete tests/src/Completion.res 56:2 -getPackage Completion.res [{ "label": "react.component", "kind": 4, @@ -562,7 +548,6 @@ getPackage Completion.res }] Complete tests/src/Completion.res 58:2 -getPackage Completion.res [{ "label": "component", "kind": 4, @@ -572,7 +557,6 @@ getPackage Completion.res }] Complete tests/src/Completion.res 60:2 -getPackage Completion.res [{ "label": "age", "kind": 4, @@ -582,7 +566,6 @@ getPackage Completion.res }] Complete tests/src/Completion.res 62:2 -getPackage Completion.res [{ "label": "name", "kind": 4, @@ -592,7 +575,6 @@ getPackage Completion.res }] Complete tests/src/Completion.res 64:2 -getPackage Completion.res [{ "label": "name", "kind": 4, @@ -602,7 +584,6 @@ getPackage Completion.res }] Complete tests/src/Completion.res 67:2 -getPackage Completion.res [{ "label": "age", "kind": 4, diff --git a/analysis/tests/src/expected/Cross.res.txt b/analysis/tests/src/expected/Cross.res.txt index ade6f310e..82d8d20af 100644 --- a/analysis/tests/src/expected/Cross.res.txt +++ b/analysis/tests/src/expected/Cross.res.txt @@ -1,18 +1,4 @@ References tests/src/Cross.res 0:17 -getPackage Cross.res -getPackage Auto.res -getPackage Completion.res -getPackage Cross.res -getPackage Definition.res -getPackage Div.res -getPackage Fragment.res -getPackage Hover.res -getPackage Jsx.resi -getPackage Patterns.res -getPackage RecModules.res -getPackage RecordCompletion.res -getPackage References.res -getPackage ReferencesWithInterface.resi [ {"uri": "Cross.res", "range": {"start": {"line": 8, "character": 16}, "end": {"line": 8, "character": 26}}}, {"uri": "Cross.res", "range": {"start": {"line": 6, "character": 13}, "end": {"line": 6, "character": 23}}}, @@ -22,20 +8,6 @@ getPackage ReferencesWithInterface.resi ] References tests/src/Cross.res 11:31 -getPackage Cross.res -getPackage Auto.res -getPackage Completion.res -getPackage Cross.res -getPackage Definition.res -getPackage Div.res -getPackage Fragment.res -getPackage Hover.res -getPackage Jsx.resi -getPackage Patterns.res -getPackage RecModules.res -getPackage RecordCompletion.res -getPackage References.res -getPackage ReferencesWithInterface.resi [ {"uri": "Cross.res", "range": {"start": {"line": 18, "character": 29}, "end": {"line": 18, "character": 52}}}, {"uri": "Cross.res", "range": {"start": {"line": 16, "character": 26}, "end": {"line": 16, "character": 49}}}, diff --git a/analysis/tests/src/expected/Definition.res.txt b/analysis/tests/src/expected/Definition.res.txt index 83a87745c..d88c9782a 100644 --- a/analysis/tests/src/expected/Definition.res.txt +++ b/analysis/tests/src/expected/Definition.res.txt @@ -1,16 +1,12 @@ Definition tests/src/Definition.res 2:8 -getPackage Definition.res {"uri": "Definition.res", "range": {"start": {"line": 0, "character": 4}, "end": {"line": 0, "character": 6}}} Definition tests/src/Definition.res 10:23 -getPackage Definition.res {"uri": "Definition.res", "range": {"start": {"line": 6, "character": 7}, "end": {"line": 6, "character": 13}}} Hover tests/src/Definition.res 14:14 -getPackage Definition.res {"contents": "```rescript\n('a => 'b, list<'a>) => list<'b>\n```\n\n [List.map f [a1; ...; an]] applies function [f] to [a1, ..., an],\n and builds the list [[f a1; ...; f an]]\n with the results returned by [f]. Not tail-recursive. "} Hover tests/src/Definition.res 18:14 -getPackage Definition.res {"contents": "```rescript\n(Belt.List.t<'a>, 'a => 'b) => Belt.List.t<'b>\n```\n\n\n `map xs f`\n\n **return** the list obtained by applying `f` to each element of `xs`\n\n ```\n map [1;2] (fun x-> x + 1) = [3;4]\n ```\n"} diff --git a/analysis/tests/src/expected/Div.res.txt b/analysis/tests/src/expected/Div.res.txt index 990e936b6..095c7d795 100644 --- a/analysis/tests/src/expected/Div.res.txt +++ b/analysis/tests/src/expected/Div.res.txt @@ -1,9 +1,7 @@ Hover tests/src/Div.res 1:10 -getPackage Div.res {"contents": "```rescript\n(\n string,\n ~?props: ReactDOMRe.domProps,\n array,\n) => React.element\n```"} Complete tests/src/Div.res 3:3 -getPackage Div.res [{ "label": "dangerouslySetInnerHTML", "kind": 4, diff --git a/analysis/tests/src/expected/Fragment.res.txt b/analysis/tests/src/expected/Fragment.res.txt index d6c9cec93..e3ba9a7fa 100644 --- a/analysis/tests/src/expected/Fragment.res.txt +++ b/analysis/tests/src/expected/Fragment.res.txt @@ -1,8 +1,6 @@ Hover tests/src/Fragment.res 6:19 -getPackage Fragment.res {"contents": "```rescript\n{\"children\": 'children} => 'children\n```"} Hover tests/src/Fragment.res 9:56 -getPackage Fragment.res null diff --git a/analysis/tests/src/expected/Hover.res.txt b/analysis/tests/src/expected/Hover.res.txt index 180edbde5..eb3c16e32 100644 --- a/analysis/tests/src/expected/Hover.res.txt +++ b/analysis/tests/src/expected/Hover.res.txt @@ -1,78 +1,54 @@ Hover tests/src/Hover.res 0:4 -getPackage Hover.res -alternateDeclared -found paths {"contents": "```rescript\nint\n```"} Hover tests/src/Hover.res 3:5 -getPackage Hover.res {"contents": "```rescript\ntype t = (int, float)\n```"} Hover tests/src/Hover.res 6:7 -getPackage Hover.res {"contents": "```rescript\nmodule Id = {\n type x = int\n}\n```"} Hover tests/src/Hover.res 19:11 -getPackage Hover.res {"contents": "\nThis module is commented\n```rescript\nmodule Dep = {\n let customDouble: int => int\n}\n```"} Hover tests/src/Hover.res 22:11 -getPackage Hover.res {"contents": "```rescript\nint => int\n```\n\nSome doc comment"} Hover tests/src/Hover.res 26:6 -getPackage Hover.res -alternateDeclared -found paths {"contents": "```rescript\nint\n```"} Hover tests/src/Hover.res 33:4 -getPackage Hover.res -alternateDeclared -found paths {"contents": "```rescript\nunit => int\n```\n\nDoc comment for functionWithTypeAnnotation"} Hover tests/src/Hover.res 37:13 -getPackage Hover.res {"contents": "```rescript\nstring\n```"} Hover tests/src/Hover.res 41:13 -getPackage Hover.res {"contents": "```rescript\nstring\n```"} Hover tests/src/Hover.res 44:10 -getPackage Hover.res {"contents": "```rescript\nint\n```"} Hover tests/src/Hover.res 47:13 -getPackage Hover.res {"contents": "```rescript\nmodule Logger = {\n let log: string => unit\n}\n```"} Hover tests/src/Hover.res 52:7 -getPackage Hover.res {"contents": "```rescript\nmodule Logger = {\n let log: string => unit\n}\n```"} Definition tests/src/Hover.res 58:14 -getPackage Hover.res {"uri": "Hover.res", "range": {"start": {"line": 47, "character": 12}, "end": {"line": 47, "character": 18}}} Hover tests/src/Hover.res 62:9 -getPackage Hover.res {"contents": "```rescript\nmodule IdDefinedTwice = {\n let y: int\n let _x: int\n}\n```"} Hover tests/src/Hover.res 71:7 -getPackage Hover.res {"contents": "```rescript\nmodule A = {\n let x: int\n}\n```"} Hover tests/src/Hover.res 74:7 -getPackage Hover.res {"contents": "```rescript\nmodule A = {\n let x: int\n}\n```"} Hover tests/src/Hover.res 84:10 -getPackage Hover.res {"contents": "```rescript\n{\"children\": React.element} => React.element\n```"} Hover tests/src/Hover.res 87:10 -getPackage Hover.res {"contents": "```rescript\n{\"children\": React.element} => React.element\n```"} diff --git a/analysis/tests/src/expected/Jsx.res.txt b/analysis/tests/src/expected/Jsx.res.txt index ab58ce96c..c1e03a8ec 100644 --- a/analysis/tests/src/expected/Jsx.res.txt +++ b/analysis/tests/src/expected/Jsx.res.txt @@ -1,9 +1,7 @@ Definition tests/src/Jsx.res 5:9 -getPackage Jsx.res {"uri": "Jsx.res", "range": {"start": {"line": 2, "character": 6}, "end": {"line": 2, "character": 10}}} Complete tests/src/Jsx.res 7:2 -getPackage Jsx.res [{ "label": "first", "kind": 4, @@ -25,7 +23,6 @@ getPackage Jsx.res }] Complete tests/src/Jsx.res 9:2 -getPackage Jsx.res [{ "label": "first", "kind": 4, @@ -47,7 +44,6 @@ getPackage Jsx.res }] Complete tests/src/Jsx.res 11:2 -getPackage Jsx.res [{ "label": "second", "kind": 4, @@ -75,7 +71,6 @@ getPackage Jsx.res }] Complete tests/src/Jsx.res 18:2 -getPackage Jsx.res [{ "label": "key", "kind": 4, @@ -85,7 +80,6 @@ getPackage Jsx.res }] Complete tests/src/Jsx.res 20:2 -getPackage Jsx.res [{ "label": "key", "kind": 4, @@ -95,7 +89,6 @@ getPackage Jsx.res }] Complete tests/src/Jsx.res 22:2 -getPackage Jsx.res [{ "label": "key", "kind": 4, @@ -105,7 +98,6 @@ getPackage Jsx.res }] Complete tests/src/Jsx.res 24:2 -getPackage Jsx.res [{ "label": "key", "kind": 4, @@ -115,7 +107,6 @@ getPackage Jsx.res }] Complete tests/src/Jsx.res 26:2 -getPackage Jsx.res [{ "label": "key", "kind": 4, @@ -125,7 +116,6 @@ getPackage Jsx.res }] Complete tests/src/Jsx.res 28:2 -getPackage Jsx.res [{ "label": "key", "kind": 4, @@ -135,7 +125,6 @@ getPackage Jsx.res }] Complete tests/src/Jsx.res 30:2 -getPackage Jsx.res [{ "label": "key", "kind": 4, @@ -145,7 +134,6 @@ getPackage Jsx.res }] Complete tests/src/Jsx.res 32:2 -getPackage Jsx.res [{ "label": "key", "kind": 4, @@ -155,7 +143,6 @@ getPackage Jsx.res }] Complete tests/src/Jsx.res 34:2 -getPackage Jsx.res [{ "label": "key", "kind": 4, @@ -165,7 +152,6 @@ getPackage Jsx.res }] Complete tests/src/Jsx.res 36:2 -getPackage Jsx.res [{ "label": "key", "kind": 4, @@ -175,7 +161,6 @@ getPackage Jsx.res }] Complete tests/src/Jsx.res 38:2 -getPackage Jsx.res [{ "label": "key", "kind": 4, @@ -185,7 +170,6 @@ getPackage Jsx.res }] Complete tests/src/Jsx.res 40:2 -getPackage Jsx.res [{ "label": "key", "kind": 4, diff --git a/analysis/tests/src/expected/Jsx.resi.txt b/analysis/tests/src/expected/Jsx.resi.txt index f92695dcf..deac2dbe9 100644 --- a/analysis/tests/src/expected/Jsx.resi.txt +++ b/analysis/tests/src/expected/Jsx.resi.txt @@ -1,20 +1,6 @@ Hover tests/src/Jsx.resi 1:4 -getPackage Jsx.resi -alternateDeclared -found paths -both intf and impl -resiUri:Jsx.resi file.uri:Jsx.resi -getPackage Jsx.res -found Full {"contents": "```rescript\n(~first: string, ~?key: string, unit) => {\"first\": string}\n```"} Hover tests/src/Jsx.resi 4:4 -getPackage Jsx.resi -alternateDeclared -found paths -both intf and impl -resiUri:Jsx.resi file.uri:Jsx.resi -getPackage Jsx.res -found Full {"contents": "```rescript\nint\n```"} diff --git a/analysis/tests/src/expected/Patterns.res.txt b/analysis/tests/src/expected/Patterns.res.txt index c607f255b..e0e13a62b 100644 --- a/analysis/tests/src/expected/Patterns.res.txt +++ b/analysis/tests/src/expected/Patterns.res.txt @@ -1,20 +1,15 @@ Definition tests/src/Patterns.res 20:10 -getPackage Patterns.res {"uri": "Patterns.res", "range": {"start": {"line": 3, "character": 7}, "end": {"line": 3, "character": 10}}} Definition tests/src/Patterns.res 25:11 -getPackage Patterns.res {"uri": "Patterns.res", "range": {"start": {"line": 9, "character": 7}, "end": {"line": 9, "character": 11}}} Definition tests/src/Patterns.res 28:11 -getPackage Patterns.res {"uri": "Patterns.res", "range": {"start": {"line": 11, "character": 7}, "end": {"line": 11, "character": 8}}} Definition tests/src/Patterns.res 31:11 -getPackage Patterns.res {"uri": "Patterns.res", "range": {"start": {"line": 15, "character": 9}, "end": {"line": 15, "character": 11}}} Definition tests/src/Patterns.res 34:11 -getPackage Patterns.res {"uri": "Patterns.res", "range": {"start": {"line": 17, "character": 11}, "end": {"line": 17, "character": 16}}} diff --git a/analysis/tests/src/expected/RecModules.res.txt b/analysis/tests/src/expected/RecModules.res.txt index 5830f79b1..80168487c 100644 --- a/analysis/tests/src/expected/RecModules.res.txt +++ b/analysis/tests/src/expected/RecModules.res.txt @@ -1,8 +1,6 @@ Hover tests/src/RecModules.res 18:12 -getPackage RecModules.res {"contents": "```rescript\nmodule C = {\n type t\n let createA: t => A.t\n}\n```"} Hover tests/src/RecModules.res 20:12 -getPackage RecModules.res {"contents": "```rescript\nmodule A = {\n type t\n let child: t => B.t\n}\n```"} diff --git a/analysis/tests/src/expected/RecordCompletion.res.txt b/analysis/tests/src/expected/RecordCompletion.res.txt index f72d1aa79..eca2e8d1c 100644 --- a/analysis/tests/src/expected/RecordCompletion.res.txt +++ b/analysis/tests/src/expected/RecordCompletion.res.txt @@ -1,5 +1,4 @@ Complete tests/src/RecordCompletion.res 7:3 -getPackage RecordCompletion.res [{ "label": "Js.Array2.mapi", "kind": 12, @@ -15,7 +14,6 @@ getPackage RecordCompletion.res }] Complete tests/src/RecordCompletion.res 9:3 -getPackage RecordCompletion.res [{ "label": "Js.Array2.mapi", "kind": 12, diff --git a/analysis/tests/src/expected/References.res.txt b/analysis/tests/src/expected/References.res.txt index 447266b6b..1411ee486 100644 --- a/analysis/tests/src/expected/References.res.txt +++ b/analysis/tests/src/expected/References.res.txt @@ -1,36 +1,4 @@ References tests/src/References.res 0:4 -getPackage References.res -LocalRef -Checking externals: 1002 -found declared -alternativeReferences -alternateDeclared -found paths -filter Auto References -filter Completion References -filter Cross References -filter Definition References -filter Div References -filter Fragment References -filter Hover References -filter Jsx References -filter Patterns References -filter RecModules References -filter RecordCompletion References -filter References References -filter ReferencesWithInterface References -getPackage Auto.res -getPackage Completion.res -getPackage Cross.res -getPackage Definition.res -getPackage Div.res -getPackage Fragment.res -getPackage Hover.res -getPackage Jsx.resi -getPackage Patterns.res -getPackage RecModules.res -getPackage RecordCompletion.res -getPackage ReferencesWithInterface.resi [ {"uri": "Cross.res", "range": {"start": {"line": 8, "character": 27}, "end": {"line": 8, "character": 28}}}, {"uri": "Cross.res", "range": {"start": {"line": 3, "character": 27}, "end": {"line": 3, "character": 28}}}, @@ -41,10 +9,6 @@ getPackage ReferencesWithInterface.resi ] References tests/src/References.res 9:19 -getPackage References.res -LocalRef -Checking externals: 1007 -found declared [ {"uri": "References.res", "range": {"start": {"line": 9, "character": 19}, "end": {"line": 9, "character": 21}}}, {"uri": "References.res", "range": {"start": {"line": 9, "character": 12}, "end": {"line": 9, "character": 14}}} diff --git a/analysis/tests/src/expected/ReferencesWithInterface.res.txt b/analysis/tests/src/expected/ReferencesWithInterface.res.txt index 4e77cd9f1..2372f686b 100644 --- a/analysis/tests/src/expected/ReferencesWithInterface.res.txt +++ b/analysis/tests/src/expected/ReferencesWithInterface.res.txt @@ -1,39 +1,4 @@ References tests/src/ReferencesWithInterface.res 0:4 -getPackage ReferencesWithInterface.res -LocalRef -Checking externals: 1002 -found declared -alternativeReferences -alternateDeclared -found paths -both intf and impl -resiUri:ReferencesWithInterface.resi file.uri:ReferencesWithInterface.res -getPackage ReferencesWithInterface.resi -filter Auto ReferencesWithInterface -filter Completion ReferencesWithInterface -filter Cross ReferencesWithInterface -filter Definition ReferencesWithInterface -filter Div ReferencesWithInterface -filter Fragment ReferencesWithInterface -filter Hover ReferencesWithInterface -filter Jsx ReferencesWithInterface -filter Patterns ReferencesWithInterface -filter RecModules ReferencesWithInterface -filter RecordCompletion ReferencesWithInterface -filter References ReferencesWithInterface -filter ReferencesWithInterface ReferencesWithInterface -getPackage Auto.res -getPackage Completion.res -getPackage Cross.res -getPackage Definition.res -getPackage Div.res -getPackage Fragment.res -getPackage Hover.res -getPackage Jsx.resi -getPackage Patterns.res -getPackage RecModules.res -getPackage RecordCompletion.res -getPackage References.res [ {"uri": "Cross.res", "range": {"start": {"line": 18, "character": 53}, "end": {"line": 18, "character": 54}}}, {"uri": "Cross.res", "range": {"start": {"line": 14, "character": 53}, "end": {"line": 14, "character": 54}}}, diff --git a/analysis/tests/src/expected/ReferencesWithInterface.resi.txt b/analysis/tests/src/expected/ReferencesWithInterface.resi.txt index 1e3e7028b..5f96d5af6 100644 --- a/analysis/tests/src/expected/ReferencesWithInterface.resi.txt +++ b/analysis/tests/src/expected/ReferencesWithInterface.resi.txt @@ -1,40 +1,4 @@ References tests/src/ReferencesWithInterface.resi 3:4 -getPackage ReferencesWithInterface.resi -LocalRef -Checking externals: 1002 -found declared -alternativeReferences -alternateDeclared -found paths -both intf and impl -resiUri:ReferencesWithInterface.resi file.uri:ReferencesWithInterface.resi -getPackage ReferencesWithInterface.res -found Full -filter Auto ReferencesWithInterface -filter Completion ReferencesWithInterface -filter Cross ReferencesWithInterface -filter Definition ReferencesWithInterface -filter Div ReferencesWithInterface -filter Fragment ReferencesWithInterface -filter Hover ReferencesWithInterface -filter Jsx ReferencesWithInterface -filter Patterns ReferencesWithInterface -filter RecModules ReferencesWithInterface -filter RecordCompletion ReferencesWithInterface -filter References ReferencesWithInterface -filter ReferencesWithInterface ReferencesWithInterface -getPackage Auto.res -getPackage Completion.res -getPackage Cross.res -getPackage Definition.res -getPackage Div.res -getPackage Fragment.res -getPackage Hover.res -getPackage Jsx.resi -getPackage Patterns.res -getPackage RecModules.res -getPackage RecordCompletion.res -getPackage References.res [ {"uri": "Cross.res", "range": {"start": {"line": 18, "character": 53}, "end": {"line": 18, "character": 54}}}, {"uri": "Cross.res", "range": {"start": {"line": 14, "character": 53}, "end": {"line": 14, "character": 54}}},