Skip to content

Commit 578013b

Browse files
committed
modified the service file
1 parent 4ee0084 commit 578013b

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

src/services/services.ts

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1467,33 +1467,49 @@ namespace ts {
14671467
}
14681468

14691469
const typeChecker = program.getTypeChecker();
1470-
const symbol = getSymbolAtLocationForQuickInfo(node, typeChecker);
1470+
const nodeForQuickInfo = getNodeForQuickInfo(node, typeChecker);
1471+
const symbol = getSymbolAtLocationForQuickInfo(nodeForQuickInfo, typeChecker);
14711472

14721473
if (!symbol || typeChecker.isUnknownSymbol(symbol)) {
1473-
const type = shouldGetType(sourceFile, node, position) ? typeChecker.getTypeAtLocation(node) : undefined;
1474+
const type = shouldGetType(sourceFile, nodeForQuickInfo, position) ? typeChecker.getTypeAtLocation(nodeForQuickInfo) : undefined;
14741475
return type && {
14751476
kind: ScriptElementKind.unknown,
14761477
kindModifiers: ScriptElementKindModifier.none,
1477-
textSpan: createTextSpanFromNode(node, sourceFile),
1478-
displayParts: typeChecker.runWithCancellationToken(cancellationToken, typeChecker => typeToDisplayParts(typeChecker, type, getContainerNode(node))),
1478+
textSpan: createTextSpanFromNode(nodeForQuickInfo, sourceFile),
1479+
displayParts: typeChecker.runWithCancellationToken(cancellationToken, typeChecker => typeToDisplayParts(typeChecker, type, getContainerNode(nodeForQuickInfo))),
14791480
documentation: type.symbol ? type.symbol.getDocumentationComment(typeChecker) : undefined,
14801481
tags: type.symbol ? type.symbol.getJsDocTags() : undefined
14811482
};
14821483
}
14831484

14841485
const { symbolKind, displayParts, documentation, tags } = typeChecker.runWithCancellationToken(cancellationToken, typeChecker =>
1485-
SymbolDisplay.getSymbolDisplayPartsDocumentationAndSymbolKind(typeChecker, symbol, sourceFile, getContainerNode(node), node)
1486+
SymbolDisplay.getSymbolDisplayPartsDocumentationAndSymbolKind(typeChecker, symbol, sourceFile, getContainerNode(nodeForQuickInfo), nodeForQuickInfo)
14861487
);
14871488
return {
14881489
kind: symbolKind,
14891490
kindModifiers: SymbolDisplay.getSymbolModifiers(symbol),
1490-
textSpan: createTextSpanFromNode(node, sourceFile),
1491+
textSpan: createTextSpanFromNode(nodeForQuickInfo, sourceFile),
14911492
displayParts,
14921493
documentation,
14931494
tags,
14941495
};
14951496
}
14961497

1498+
function getNodeForQuickInfo(node: Node, typeChecker: TypeChecker): Node {
1499+
const firstParentNode = node.parent.getFirstToken();
1500+
const firstNodeSyntaxKind = firstParentNode ? firstParentNode.kind : undefined;
1501+
1502+
if (node.kind === SyntaxKind.NewKeyword || firstNodeSyntaxKind === SyntaxKind.NewKeyword) {
1503+
for (const singleNode of node.parent.getChildren()) {
1504+
const symbol = getSymbolAtLocationForQuickInfo(singleNode, typeChecker);
1505+
if (symbol) {
1506+
return singleNode;
1507+
}
1508+
}
1509+
}
1510+
return node;
1511+
}
1512+
14971513
function shouldGetType(sourceFile: SourceFile, node: Node, position: number): boolean {
14981514
switch (node.kind) {
14991515
case SyntaxKind.Identifier:

0 commit comments

Comments
 (0)