modified the service file
This commit is contained in:
parent
4ee0084fa1
commit
578013b65c
1 changed files with 22 additions and 6 deletions
|
@ -1467,33 +1467,49 @@ namespace ts {
|
||||||
}
|
}
|
||||||
|
|
||||||
const typeChecker = program.getTypeChecker();
|
const typeChecker = program.getTypeChecker();
|
||||||
const symbol = getSymbolAtLocationForQuickInfo(node, typeChecker);
|
const nodeForQuickInfo = getNodeForQuickInfo(node, typeChecker);
|
||||||
|
const symbol = getSymbolAtLocationForQuickInfo(nodeForQuickInfo, typeChecker);
|
||||||
|
|
||||||
if (!symbol || typeChecker.isUnknownSymbol(symbol)) {
|
if (!symbol || typeChecker.isUnknownSymbol(symbol)) {
|
||||||
const type = shouldGetType(sourceFile, node, position) ? typeChecker.getTypeAtLocation(node) : undefined;
|
const type = shouldGetType(sourceFile, nodeForQuickInfo, position) ? typeChecker.getTypeAtLocation(nodeForQuickInfo) : undefined;
|
||||||
return type && {
|
return type && {
|
||||||
kind: ScriptElementKind.unknown,
|
kind: ScriptElementKind.unknown,
|
||||||
kindModifiers: ScriptElementKindModifier.none,
|
kindModifiers: ScriptElementKindModifier.none,
|
||||||
textSpan: createTextSpanFromNode(node, sourceFile),
|
textSpan: createTextSpanFromNode(nodeForQuickInfo, sourceFile),
|
||||||
displayParts: typeChecker.runWithCancellationToken(cancellationToken, typeChecker => typeToDisplayParts(typeChecker, type, getContainerNode(node))),
|
displayParts: typeChecker.runWithCancellationToken(cancellationToken, typeChecker => typeToDisplayParts(typeChecker, type, getContainerNode(nodeForQuickInfo))),
|
||||||
documentation: type.symbol ? type.symbol.getDocumentationComment(typeChecker) : undefined,
|
documentation: type.symbol ? type.symbol.getDocumentationComment(typeChecker) : undefined,
|
||||||
tags: type.symbol ? type.symbol.getJsDocTags() : undefined
|
tags: type.symbol ? type.symbol.getJsDocTags() : undefined
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
const { symbolKind, displayParts, documentation, tags } = typeChecker.runWithCancellationToken(cancellationToken, typeChecker =>
|
const { symbolKind, displayParts, documentation, tags } = typeChecker.runWithCancellationToken(cancellationToken, typeChecker =>
|
||||||
SymbolDisplay.getSymbolDisplayPartsDocumentationAndSymbolKind(typeChecker, symbol, sourceFile, getContainerNode(node), node)
|
SymbolDisplay.getSymbolDisplayPartsDocumentationAndSymbolKind(typeChecker, symbol, sourceFile, getContainerNode(nodeForQuickInfo), nodeForQuickInfo)
|
||||||
);
|
);
|
||||||
return {
|
return {
|
||||||
kind: symbolKind,
|
kind: symbolKind,
|
||||||
kindModifiers: SymbolDisplay.getSymbolModifiers(symbol),
|
kindModifiers: SymbolDisplay.getSymbolModifiers(symbol),
|
||||||
textSpan: createTextSpanFromNode(node, sourceFile),
|
textSpan: createTextSpanFromNode(nodeForQuickInfo, sourceFile),
|
||||||
displayParts,
|
displayParts,
|
||||||
documentation,
|
documentation,
|
||||||
tags,
|
tags,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getNodeForQuickInfo(node: Node, typeChecker: TypeChecker): Node {
|
||||||
|
const firstParentNode = node.parent.getFirstToken();
|
||||||
|
const firstNodeSyntaxKind = firstParentNode ? firstParentNode.kind : undefined;
|
||||||
|
|
||||||
|
if (node.kind === SyntaxKind.NewKeyword || firstNodeSyntaxKind === SyntaxKind.NewKeyword) {
|
||||||
|
for (const singleNode of node.parent.getChildren()) {
|
||||||
|
const symbol = getSymbolAtLocationForQuickInfo(singleNode, typeChecker);
|
||||||
|
if (symbol) {
|
||||||
|
return singleNode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
|
||||||
function shouldGetType(sourceFile: SourceFile, node: Node, position: number): boolean {
|
function shouldGetType(sourceFile: SourceFile, node: Node, position: number): boolean {
|
||||||
switch (node.kind) {
|
switch (node.kind) {
|
||||||
case SyntaxKind.Identifier:
|
case SyntaxKind.Identifier:
|
||||||
|
|
Loading…
Reference in a new issue