Skip to content

Commit 3facc3e

Browse files
authored
Merge pull request #10813 from microsoftsam/master
Surfacing method to get Completion Symbol
2 parents 81a60c4 + f8b11fb commit 3facc3e

File tree

5 files changed

+30
-0
lines changed

5 files changed

+30
-0
lines changed

src/harness/harnessLanguageService.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -408,6 +408,9 @@ namespace Harness.LanguageService {
408408
getCompletionEntryDetails(fileName: string, position: number, entryName: string): ts.CompletionEntryDetails {
409409
return unwrapJSONCallResult(this.shim.getCompletionEntryDetails(fileName, position, entryName));
410410
}
411+
getCompletionEntrySymbol(fileName: string, position: number, entryName: string): ts.Symbol {
412+
throw new Error("getCompletionEntrySymbol not implemented across the shim layer.");
413+
}
411414
getQuickInfoAtPosition(fileName: string, position: number): ts.QuickInfo {
412415
return unwrapJSONCallResult(this.shim.getQuickInfoAtPosition(fileName, position));
413416
}

src/server/client.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,10 @@ namespace ts.server {
246246
return response.body[0];
247247
}
248248

249+
getCompletionEntrySymbol(fileName: string, position: number, entryName: string): Symbol {
250+
throw new Error("Not Implemented Yet.");
251+
}
252+
249253
getNavigateToItems(searchValue: string): NavigateToItem[] {
250254
const args: protocol.NavtoRequestArgs = {
251255
searchValue,

src/services/completions.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -736,6 +736,22 @@ namespace ts.Completions {
736736
return undefined;
737737
}
738738

739+
export function getCompletionEntrySymbol(typeChecker: TypeChecker, log: (message: string) => void, compilerOptions: CompilerOptions, sourceFile: SourceFile, position: number, entryName: string): Symbol {
740+
// Compute all the completion symbols again.
741+
const completionData = getCompletionData(typeChecker, log, sourceFile, position);
742+
if (completionData) {
743+
const { symbols, location } = completionData;
744+
745+
// Find the symbol with the matching entry name.
746+
// We don't need to perform character checks here because we're only comparing the
747+
// name against 'entryName' (which is known to be good), not building a new
748+
// completion entry.
749+
return forEach(symbols, s => getCompletionEntryDisplayNameForSymbol(typeChecker, s, compilerOptions.target, /*performCharacterChecks*/ false, location) === entryName ? s : undefined);
750+
}
751+
752+
return undefined;
753+
}
754+
739755
function getCompletionData(typeChecker: TypeChecker, log: (message: string) => void, sourceFile: SourceFile, position: number) {
740756
const isJavaScriptFile = isSourceFileJavaScript(sourceFile);
741757

src/services/services.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1206,6 +1206,11 @@ namespace ts {
12061206
return Completions.getCompletionEntryDetails(program.getTypeChecker(), log, program.getCompilerOptions(), getValidSourceFile(fileName), position, entryName);
12071207
}
12081208

1209+
function getCompletionEntrySymbol(fileName: string, position: number, entryName: string): Symbol {
1210+
synchronizeHostData();
1211+
return Completions.getCompletionEntrySymbol(program.getTypeChecker(), log, program.getCompilerOptions(), getValidSourceFile(fileName), position, entryName);
1212+
}
1213+
12091214
function getQuickInfoAtPosition(fileName: string, position: number): QuickInfo {
12101215
synchronizeHostData();
12111216

@@ -1768,6 +1773,7 @@ namespace ts {
17681773
getEncodedSemanticClassifications,
17691774
getCompletionsAtPosition,
17701775
getCompletionEntryDetails,
1776+
getCompletionEntrySymbol,
17711777
getSignatureHelpItems,
17721778
getQuickInfoAtPosition,
17731779
getDefinitionAtPosition,

src/services/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ namespace ts {
194194

195195
getCompletionsAtPosition(fileName: string, position: number): CompletionInfo;
196196
getCompletionEntryDetails(fileName: string, position: number, entryName: string): CompletionEntryDetails;
197+
getCompletionEntrySymbol(fileName: string, position: number, entryName: string): Symbol;
197198

198199
getQuickInfoAtPosition(fileName: string, position: number): QuickInfo;
199200

0 commit comments

Comments
 (0)