Fix completion entry conversion to protocol format (#59410)

This commit is contained in:
Gabriela Araujo Britto
2024-07-24 12:59:15 -07:00
committed by GitHub
parent ec7ff812c1
commit 0c33c13b83
13 changed files with 881 additions and 279 deletions
+2
View File
@@ -2469,6 +2469,7 @@ export class Session<TMessage = string> implements EventSender {
isPackageJsonImport,
isImportStatementCompletion,
data,
commitCharacters,
} = entry;
const convertedSpan = replacementSpan ? toProtocolTextSpan(replacementSpan, scriptInfo) : undefined;
// Use `hasAction || undefined` to avoid serializing `false`.
@@ -2489,6 +2490,7 @@ export class Session<TMessage = string> implements EventSender {
isPackageJsonImport,
isImportStatementCompletion,
data,
commitCharacters,
};
}
});
@@ -0,0 +1,66 @@
// === Completions ===
=== /src/index.ts ===
// const a: "aa" | "bb" = "";
// ^
// | ----------------------------------------------------------------------
// | aa
// | bb
// | ----------------------------------------------------------------------
[
{
"marker": {
"fileName": "/src/index.ts",
"position": 24,
"name": ""
},
"item": {
"isGlobalCompletion": false,
"isMemberCompletion": false,
"isNewIdentifierLocation": false,
"entries": [
{
"name": "aa",
"kind": "string",
"kindModifiers": "",
"sortText": "11",
"replacementSpan": {
"start": 24,
"length": 0
},
"commitCharacters": [],
"displayParts": [
{
"text": "aa",
"kind": "text"
}
],
"tags": []
},
{
"name": "bb",
"kind": "string",
"kindModifiers": "",
"sortText": "11",
"replacementSpan": {
"start": 24,
"length": 0
},
"commitCharacters": [],
"displayParts": [
{
"text": "bb",
"kind": "text"
}
],
"tags": []
}
],
"defaultCommitCharacters": [
".",
",",
";"
]
}
}
]
@@ -764,7 +764,8 @@ Info seq [hh:mm:ss:mss] response:
"name": "BrowserRouter",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
}
],
"defaultCommitCharacters": [
@@ -713,13 +713,15 @@ Info seq [hh:mm:ss:mss] response:
"name": "exports",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "p1",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "escape",
@@ -719,13 +719,15 @@ Info seq [hh:mm:ss:mss] response:
"name": "exports",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "p1",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "escape",
@@ -0,0 +1,249 @@
currentDirectory:: / useCaseSensitiveFileNames: false
Info seq [hh:mm:ss:mss] Provided types map file "/typesMap.json" doesn't exist
//// [/lib.d.ts]
lib.d.ts-Text
//// [/lib.decorators.d.ts]
lib.decorators.d.ts-Text
//// [/lib.decorators.legacy.d.ts]
lib.decorators.legacy.d.ts-Text
//// [/src/index.ts]
const a: "aa" | "bb" = "";
Info seq [hh:mm:ss:mss] request:
{
"seq": 0,
"type": "request",
"arguments": {
"file": "/src/index.ts"
},
"command": "open"
}
Info seq [hh:mm:ss:mss] getConfigFileNameForFile:: File: /src/index.ts ProjectRootPath: undefined:: Result: undefined
Info seq [hh:mm:ss:mss] Starting updateGraphWorker: Project: /dev/null/inferredProject1*
Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /lib.d.ts 500 undefined WatchType: Closed Script info
Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /lib.decorators.d.ts 500 undefined WatchType: Closed Script info
Info seq [hh:mm:ss:mss] FileWatcher:: Added:: WatchInfo: /lib.decorators.legacy.d.ts 500 undefined WatchType: Closed Script info
Info seq [hh:mm:ss:mss] Finishing updateGraphWorker: Project: /dev/null/inferredProject1* projectStateVersion: 1 projectProgramVersion: 0 structureChanged: true structureIsReused:: Not Elapsed:: *ms
Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred)
Info seq [hh:mm:ss:mss] Files (4)
/lib.d.ts Text-1 lib.d.ts-Text
/lib.decorators.d.ts Text-1 lib.decorators.d.ts-Text
/lib.decorators.legacy.d.ts Text-1 lib.decorators.legacy.d.ts-Text
/src/index.ts SVC-1-0 "const a: \"aa\" | \"bb\" = \"\";"
../lib.d.ts
Default library for target 'es5'
../lib.decorators.d.ts
Library referenced via 'decorators' from file '../lib.d.ts'
../lib.decorators.legacy.d.ts
Library referenced via 'decorators.legacy' from file '../lib.d.ts'
index.ts
Root file specified for compilation
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Project '/dev/null/inferredProject1*' (Inferred)
Info seq [hh:mm:ss:mss] Files (4)
Info seq [hh:mm:ss:mss] -----------------------------------------------
Info seq [hh:mm:ss:mss] Open files:
Info seq [hh:mm:ss:mss] FileName: /src/index.ts ProjectRootPath: undefined
Info seq [hh:mm:ss:mss] Projects: /dev/null/inferredProject1*
Info seq [hh:mm:ss:mss] response:
{
"seq": 0,
"type": "response",
"command": "open",
"request_seq": 0,
"success": true,
"performanceData": {
"updateGraphDurationMs": *
}
}
After Request
watchedFiles::
/lib.d.ts: *new*
{"pollingInterval":500}
/lib.decorators.d.ts: *new*
{"pollingInterval":500}
/lib.decorators.legacy.d.ts: *new*
{"pollingInterval":500}
Projects::
/dev/null/inferredProject1* (Inferred) *new*
projectStateVersion: 1
projectProgramVersion: 1
ScriptInfos::
/lib.d.ts *new*
version: Text-1
containingProjects: 1
/dev/null/inferredProject1*
/lib.decorators.d.ts *new*
version: Text-1
containingProjects: 1
/dev/null/inferredProject1*
/lib.decorators.legacy.d.ts *new*
version: Text-1
containingProjects: 1
/dev/null/inferredProject1*
/src/index.ts (Open) *new*
version: SVC-1-0
containingProjects: 1
/dev/null/inferredProject1* *default*
Info seq [hh:mm:ss:mss] request:
{
"seq": 1,
"type": "request",
"arguments": {
"file": "/src/index.ts",
"line": 1,
"offset": 25
},
"command": "completionInfo"
}
Info seq [hh:mm:ss:mss] response:
{
"seq": 0,
"type": "response",
"command": "completionInfo",
"request_seq": 1,
"success": true,
"body": {
"isGlobalCompletion": false,
"isMemberCompletion": false,
"isNewIdentifierLocation": false,
"optionalReplacementSpan": {
"start": {
"line": 1,
"offset": 25
},
"end": {
"line": 1,
"offset": 25
}
},
"entries": [
{
"name": "aa",
"kind": "string",
"kindModifiers": "",
"sortText": "11",
"replacementSpan": {
"start": {
"line": 1,
"offset": 25
},
"end": {
"line": 1,
"offset": 25
}
},
"commitCharacters": []
},
{
"name": "bb",
"kind": "string",
"kindModifiers": "",
"sortText": "11",
"replacementSpan": {
"start": {
"line": 1,
"offset": 25
},
"end": {
"line": 1,
"offset": 25
}
},
"commitCharacters": []
}
],
"defaultCommitCharacters": [
".",
",",
";"
]
}
}
Info seq [hh:mm:ss:mss] request:
{
"seq": 2,
"type": "request",
"arguments": {
"file": "/src/index.ts",
"line": 1,
"offset": 25,
"entryNames": [
{
"name": "aa"
}
]
},
"command": "completionEntryDetails-full"
}
Info seq [hh:mm:ss:mss] response:
{
"seq": 0,
"type": "response",
"command": "completionEntryDetails-full",
"request_seq": 2,
"success": true,
"body": [
{
"name": "aa",
"kindModifiers": "",
"kind": "string",
"displayParts": [
{
"text": "aa",
"kind": "text"
}
],
"tags": []
}
]
}
Info seq [hh:mm:ss:mss] request:
{
"seq": 3,
"type": "request",
"arguments": {
"file": "/src/index.ts",
"line": 1,
"offset": 25,
"entryNames": [
{
"name": "bb"
}
]
},
"command": "completionEntryDetails-full"
}
Info seq [hh:mm:ss:mss] response:
{
"seq": 0,
"type": "response",
"command": "completionEntryDetails-full",
"request_seq": 3,
"success": true,
"body": [
{
"name": "bb",
"kindModifiers": "",
"kind": "string",
"displayParts": [
{
"text": "bb",
"kind": "text"
}
],
"tags": []
}
]
}
@@ -296,13 +296,15 @@ Info seq [hh:mm:ss:mss] response:
"name": "test",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "type",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "substr",
File diff suppressed because it is too large Load Diff
@@ -301,31 +301,36 @@ Info seq [hh:mm:ss:mss] response:
"name": "a",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "foo",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "my",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "MyType",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "yes",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "substr",
@@ -307,49 +307,57 @@ Info seq [hh:mm:ss:mss] response:
"name": "a",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "A",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "b",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "B",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "foo",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "my2",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "MyType",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "yes",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "substr",
@@ -416,49 +424,57 @@ Info seq [hh:mm:ss:mss] response:
"name": "a",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "A",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "b",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "B",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "foo",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "my2",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "MyType",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "yes",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
}
],
"defaultCommitCharacters": [
@@ -325,49 +325,57 @@ Info seq [hh:mm:ss:mss] response:
"name": "age",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "NumberLike",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "O",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "People",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "Q",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "T",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "x",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "x1",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "substr",
@@ -578,49 +586,57 @@ Info seq [hh:mm:ss:mss] response:
"name": "age",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "NumberLike",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "O",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "People",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "Q",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "T",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "x",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "x1",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "substr",
@@ -831,49 +847,57 @@ Info seq [hh:mm:ss:mss] response:
"name": "age",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "NumberLike",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "O",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "People",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "Q",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "T",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "x",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "x1",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
},
{
"name": "substr",
@@ -337,7 +337,8 @@ Info seq [hh:mm:ss:mss] response:
"name": "t",
"kind": "warning",
"kindModifiers": "",
"sortText": "18"
"sortText": "18",
"commitCharacters": []
}
],
"defaultCommitCharacters": [
@@ -0,0 +1,6 @@
/// <reference path="../fourslash.ts" />
// @Filename: /src/index.ts
//// const a: "aa" | "bb" = "/**/";
verify.baselineCompletions();