diff --git a/analysis/src/NewCompletions.ml b/analysis/src/NewCompletions.ml index dc08a7877..9bbcac6dc 100644 --- a/analysis/src/NewCompletions.ml +++ b/analysis/src/NewCompletions.ml @@ -862,20 +862,6 @@ let findLocalCompletionsWithOpens ~pos ~(env : QueryEnv.t) ~prefix ~exact ~opens (* There's no local completion for fields *) [] -(* TODO filter out things that are defined after the current position *) -let resolveRawOpens ~env ~rawOpens ~package = - (* TODO Stdlib instead of Pervasives *) - let packageOpens = "Pervasives" :: package.opens in - Log.log ("Package opens " ^ String.concat " " packageOpens); - let opens = - resolveOpens ~env - ~previous: - (List.map QueryEnv.fromFile - (packageOpens |> Utils.filterMap (ProcessCmt.fileForModule ~package))) - (List.rev rawOpens) ~package - in - opens - let rec extractRecordType ~env ~package (t : Types.type_expr) = match t.desc with | Tlink t1 | Tsubst t1 | Tpoly (t1, []) -> extractRecordType ~env ~package t1 @@ -1132,15 +1118,21 @@ let rec getCompletionsForContextPath ~package ~opens ~rawOpens ~allFiles ~pos let getOpens ~rawOpens ~package ~env = Log.log - ("Opens folkz > " + ("Raw ppens: " ^ string_of_int (List.length rawOpens) ^ " " ^ String.concat " ... " (rawOpens |> List.map pathToString)); - let packageOpens = "Pervasives" :: package.opens in + let packageOpens = package.opens in Log.log ("Package opens " ^ String.concat " " packageOpens); - let resolvedOpens = resolveRawOpens ~env ~rawOpens ~package in + let resolvedOpens = + resolveOpens ~env + ~previous: + (List.map QueryEnv.fromFile + (packageOpens |> Utils.filterMap (ProcessCmt.fileForModule ~package))) + (List.rev rawOpens) ~package + in Log.log - ("Opens nows " + ("Resolved opens " ^ string_of_int (List.length resolvedOpens) ^ " " ^ String.concat " " diff --git a/analysis/src/SharedTypes.ml b/analysis/src/SharedTypes.ml index be54851e2..1588f38e0 100644 --- a/analysis/src/SharedTypes.ml +++ b/analysis/src/SharedTypes.ml @@ -225,6 +225,8 @@ module Completion = struct let create ~name ~kind ~env = {name; env; deprecated = None; docstring = []; kind} + (* https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_completion *) + (* https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#completionItemKind *) let kindToInt kind = match kind with | Module _ -> 9 diff --git a/analysis/tests/src/expected/Completion.res.txt b/analysis/tests/src/expected/Completion.res.txt index 5f288f606..e2139b10d 100644 --- a/analysis/tests/src/expected/Completion.res.txt +++ b/analysis/tests/src/expected/Completion.res.txt @@ -1308,12 +1308,6 @@ Completable: Cpath Value[na] "tags": [], "detail": "string", "documentation": null - }, { - "label": "nan", - "kind": 12, - "tags": [], - "detail": "float", - "documentation": null }] Complete tests/src/Completion.res 239:17 diff --git a/analysis/tests/src/expected/Debug.res.txt b/analysis/tests/src/expected/Debug.res.txt index 04726347c..68d4759fd 100644 --- a/analysis/tests/src/expected/Debug.res.txt +++ b/analysis/tests/src/expected/Debug.res.txt @@ -63,20 +63,16 @@ Complete tests/src/Debug.res 13:8 posCursor:[13:8] posNoWhite:[13:7] Found expr:[13:5->13:8] Pexp_ident eqN:[13:5->13:8] Completable: Cpath Value[eqN] -Opens folkz > 1 Js.place holder -Package opens Pervasives -Package opens Pervasives -fileForModule Impl cmt:tests/node_modules/rescript/lib/ocaml/pervasives.cmti res:tests/node_modules/rescript/lib/ocaml/pervasives.mli +Raw ppens: 1 Js.place holder +Package opens resolving open Js.place holder resolvePath path:Js.place holder Not local -resolvePath path:Js.place holder fileForModule Impl cmt:tests/node_modules/rescript/lib/ocaml/js.cmt res:tests/node_modules/rescript/lib/ocaml/js.ml resolvePath path:place holder -Opens nows 2 pervasives.mli js.ml +Resolved opens 1 js.ml findLocalCompletionsWithOpens uri:Debug.res pos:13:8 findAllCompletions uri:js.ml -findAllCompletions uri:pervasives.mli [{ "label": "eqNullable", "kind": 12, diff --git a/server/src/server.ts b/server/src/server.ts index 56d357d5a..664e37c64 100644 --- a/server/src/server.ts +++ b/server/src/server.ts @@ -428,6 +428,7 @@ function semanticTokens(msg: p.RequestMessage) { } function completion(msg: p.RequestMessage) { + // https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_completion let params = msg.params as p.ReferenceParams; let filePath = fileURLToPath(params.textDocument.uri); let extension = path.extname(params.textDocument.uri);