Skip to content

Commit 7a1635f

Browse files
authored
Merge pull request #11289 from Microsoft/vladima/fix-goto-impl
expose 'gotoImplementation' for VS
2 parents 571d1f7 + 1931ece commit 7a1635f

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

src/server/session.ts

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ namespace ts.server {
9393
export const Geterr = "geterr";
9494
export const GeterrForProject = "geterrForProject";
9595
export const Implementation = "implementation";
96+
export const ImplementationFull = "implementation-full";
9697
export const SemanticDiagnosticsSync = "semanticDiagnosticsSync";
9798
export const SyntacticDiagnosticsSync = "syntacticDiagnosticsSync";
9899
export const NavBar = "navbar";
@@ -421,19 +422,24 @@ namespace ts.server {
421422
});
422423
}
423424

424-
private getImplementation(args: protocol.FileLocationRequestArgs): protocol.FileSpan[] {
425+
private getImplementation(args: protocol.FileLocationRequestArgs, simplifiedResult: boolean): protocol.FileSpan[] | ImplementationLocation[] {
425426
const { file, project } = this.getFileAndProject(args);
426427
const scriptInfo = project.getScriptInfoForNormalizedPath(file);
427428
const position = this.getPosition(args, scriptInfo);
428429
const implementations = project.getLanguageService().getImplementationAtPosition(file, position);
429430
if (!implementations) {
430431
return [];
431432
}
432-
return implementations.map(impl => ({
433-
file: impl.fileName,
434-
start: scriptInfo.positionToLineOffset(impl.textSpan.start),
435-
end: scriptInfo.positionToLineOffset(ts.textSpanEnd(impl.textSpan))
436-
}));
433+
if (simplifiedResult) {
434+
return implementations.map(impl => ({
435+
file: impl.fileName,
436+
start: scriptInfo.positionToLineOffset(impl.textSpan.start),
437+
end: scriptInfo.positionToLineOffset(ts.textSpanEnd(impl.textSpan))
438+
}));
439+
}
440+
else {
441+
return implementations;
442+
}
437443
}
438444

439445
private getOccurrences(args: protocol.FileLocationRequestArgs): protocol.OccurrencesResponseItem[] {
@@ -1329,7 +1335,10 @@ namespace ts.server {
13291335
return this.requiredResponse(this.getTypeDefinition(request.arguments));
13301336
},
13311337
[CommandNames.Implementation]: (request: protocol.Request) => {
1332-
return this.requiredResponse(this.getImplementation(request.arguments));
1338+
return this.requiredResponse(this.getImplementation(request.arguments, /*simplifiedResult*/ true));
1339+
},
1340+
[CommandNames.ImplementationFull]: (request: protocol.Request) => {
1341+
return this.requiredResponse(this.getImplementation(request.arguments, /*simplifiedResult*/ false));
13331342
},
13341343
[CommandNames.References]: (request: protocol.FileLocationRequest) => {
13351344
return this.requiredResponse(this.getReferences(request.arguments, /*simplifiedResult*/ true));

0 commit comments

Comments
 (0)