Skip to content

Commit

Permalink
Add '(approximate)' to the beginning of quick info requests in Partia…
Browse files Browse the repository at this point in the history
…lSemantic mode (#40061)

* Add '(approximate)' to the beginning of quick info requests.

* Use 'approximation' instead of 'approximate'.
  • Loading branch information
DanielRosenwasser committed Aug 15, 2020
1 parent 1030455 commit 5f5dac0
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 2 deletions.
13 changes: 11 additions & 2 deletions src/services/services.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1587,7 +1587,9 @@ namespace ts {
kind: ScriptElementKind.unknown,
kindModifiers: ScriptElementKindModifier.none,
textSpan: createTextSpanFromNode(nodeForQuickInfo, sourceFile),
displayParts: typeChecker.runWithCancellationToken(cancellationToken, typeChecker => typeToDisplayParts(typeChecker, type, getContainerNode(nodeForQuickInfo))),
displayParts: prefixWithApproximation(
typeChecker.runWithCancellationToken(cancellationToken, typeChecker => typeToDisplayParts(typeChecker, type, getContainerNode(nodeForQuickInfo)))
),
documentation: type.symbol ? type.symbol.getDocumentationComment(typeChecker) : undefined,
tags: type.symbol ? type.symbol.getJsDocTags() : undefined
};
Expand All @@ -1600,7 +1602,7 @@ namespace ts {
kind: symbolKind,
kindModifiers: SymbolDisplay.getSymbolModifiers(symbol),
textSpan: createTextSpanFromNode(nodeForQuickInfo, sourceFile),
displayParts,
displayParts: prefixWithApproximation(displayParts),
documentation,
tags,
};
Expand Down Expand Up @@ -1630,6 +1632,13 @@ namespace ts {
}
}

function prefixWithApproximation(displayParts: SymbolDisplayPart[]): SymbolDisplayPart[] {
if (languageServiceMode === LanguageServiceMode.Semantic) {
return displayParts;
}
return [textPart("(approximation)"), spacePart(), ...displayParts];
}

/// Goto definition
function getDefinitionAtPosition(fileName: string, position: number): readonly DefinitionInfo[] | undefined {
synchronizeHostData();
Expand Down
16 changes: 16 additions & 0 deletions src/testRunner/unittests/tsserver/partialSemanticServer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,22 @@ import { something } from "something";
return { host, session, file1, file2, file3, something, configFile };
}

it("adds '(approximation)' to the description of quick info", () => {
const file: File = {
path: `${tscWatch.projectRoot}/foo.ts`,
content: "export const foo = 100;"
};
const host = createServerHost([file]);
const session = createSession(host, { serverMode: LanguageServiceMode.PartialSemantic, useSingleInferredProject: true });
openFilesForSession([file], session);
const response = session.executeCommandSeq<protocol.QuickInfoRequest>({
command: protocol.CommandTypes.Quickinfo,
arguments: protocolFileLocationFromSubstring(file, "foo"),
}).response as protocol.QuickInfoResponseBody;

assert(stringContainsAt(response.displayString, "(approximation)", 0));
});

it("open files are added to inferred project even if config file is present and semantic operations succeed", () => {
const { host, session, file1, file2 } = setup();
const service = session.getProjectService();
Expand Down

0 comments on commit 5f5dac0

Please sign in to comment.