@@ -1467,33 +1467,41 @@ namespace ts {
1467
1467
}
1468
1468
1469
1469
const typeChecker = program . getTypeChecker ( ) ;
1470
- const symbol = getSymbolAtLocationForQuickInfo ( node , typeChecker ) ;
1470
+ const nodeForQuickInfo = getNodeForQuickInfo ( node ) ;
1471
+ const symbol = getSymbolAtLocationForQuickInfo ( nodeForQuickInfo , typeChecker ) ;
1471
1472
1472
1473
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 ;
1474
1475
return type && {
1475
1476
kind : ScriptElementKind . unknown ,
1476
1477
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 ) ) ) ,
1479
1480
documentation : type . symbol ? type . symbol . getDocumentationComment ( typeChecker ) : undefined ,
1480
1481
tags : type . symbol ? type . symbol . getJsDocTags ( ) : undefined
1481
1482
} ;
1482
1483
}
1483
1484
1484
1485
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 )
1486
1487
) ;
1487
1488
return {
1488
1489
kind : symbolKind ,
1489
1490
kindModifiers : SymbolDisplay . getSymbolModifiers ( symbol ) ,
1490
- textSpan : createTextSpanFromNode ( node , sourceFile ) ,
1491
+ textSpan : createTextSpanFromNode ( nodeForQuickInfo , sourceFile ) ,
1491
1492
displayParts,
1492
1493
documentation,
1493
1494
tags,
1494
1495
} ;
1495
1496
}
1496
1497
1498
+ function getNodeForQuickInfo ( node : Node ) : Node {
1499
+ if ( isNewExpression ( node . parent ) && node . pos === node . parent . pos ) {
1500
+ return node . parent . expression ;
1501
+ }
1502
+ return node ;
1503
+ }
1504
+
1497
1505
function shouldGetType ( sourceFile : SourceFile , node : Node , position : number ) : boolean {
1498
1506
switch ( node . kind ) {
1499
1507
case SyntaxKind . Identifier :
0 commit comments