From 13c6298284100fc0ccba90b6291723c4a2cb2497 Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Wed, 1 Nov 2017 14:18:39 -0700 Subject: [PATCH 1/2] Support quick info at `function` and `=>` locations --- src/services/symbolDisplay.ts | 6 +++-- .../fourslash/quickInfoFunctionKeyword.ts | 7 +++++ .../fourslash/quickInfoInvalidLocations.ts | 26 +++++++++---------- 3 files changed, 24 insertions(+), 15 deletions(-) create mode 100644 tests/cases/fourslash/quickInfoFunctionKeyword.ts diff --git a/src/services/symbolDisplay.ts b/src/services/symbolDisplay.ts index d210a04551377..0465ec2aa70db 100644 --- a/src/services/symbolDisplay.ts +++ b/src/services/symbolDisplay.ts @@ -489,8 +489,10 @@ namespace ts.SymbolDisplay { addNewLineIfDisplayPartsExist(); if (symbolKind) { pushTypePart(symbolKind); - displayParts.push(spacePart()); - addFullSymbolName(symbol); + if (!some(symbol.declarations, d => isArrowFunction(d) || (isFunctionExpression(d) || isClassExpression(d)) && !d.name)) { + displayParts.push(spacePart()); + addFullSymbolName(symbol); + } } } diff --git a/tests/cases/fourslash/quickInfoFunctionKeyword.ts b/tests/cases/fourslash/quickInfoFunctionKeyword.ts new file mode 100644 index 0000000000000..d593aa679d49d --- /dev/null +++ b/tests/cases/fourslash/quickInfoFunctionKeyword.ts @@ -0,0 +1,7 @@ +/// + +////[1].forEach(fu/*1*/nction() {}); +////[1].map(x =/*2*/> x + 1); + +verify.quickInfoAt("1", "(local function)(): void"); +verify.quickInfoAt("2", "function(x: number): number"); diff --git a/tests/cases/fourslash/quickInfoInvalidLocations.ts b/tests/cases/fourslash/quickInfoInvalidLocations.ts index c70be23f387b4..396fac67c970d 100644 --- a/tests/cases/fourslash/quickInfoInvalidLocations.ts +++ b/tests/cases/fourslash/quickInfoInvalidLocations.ts @@ -1,35 +1,35 @@ /// -////inter/*invlaid1*/face IFoo { +////inter/*invalid1*/face IFoo { //// new(): IFoo; //// [indexer: string]: number; //// method(value: number): string; //// property: string; -/////*invlaid2*/} +/////*invalid2*/} //// -////cl/*invlaid3*/ass bar imple/*invlaid4*/ments IFoo { -//// constructor( /*invlaid5*/ ) { +////cl/*invalid3*/ass bar imple/*invalid4*/ments IFoo { +//// constructor( /*invalid5*/ ) { //// //// } //// -//// pu/*invlaid6*/blic method(value: string): string { -//// retu/*invlaid7*/rn null; +//// pu/*invalid6*/blic method(value: string): string { +//// retu/*invalid7*/rn null; //// } //// -//// public property: string /*invlaid8*/= "string"; +//// public property: string /*invalid8*/= "string"; //// -//// public ge/*invlaid9*/t value() { +//// public ge/*invalid9*/t value() { //// return 0; //// } ////} //// //// -////mod/*invlaid10*/ule m1 { -//// va/*invlaid11*/r varibale = 0; +////mod/*invalid10*/ule m1 { +//// va/*invalid11*/r varibale = 0; //// -//// func/*invlaid12*/tion foo(arg1: number) { -//// ret/*invlaid13*/urn string; +//// function foo(arg1: number) { +//// ret/*invalid13*/urn string; //// } //// //// class foo { @@ -40,7 +40,7 @@ //// value1: "string", //// value2: { //// value21: number -//// /*invlaid14*/} +//// /*invalid14*/} //// }; ////} From 33ace79ddace05454b0e95feca58a0c04607059b Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Thu, 2 Nov 2017 12:50:36 -0700 Subject: [PATCH 2/2] Fixes --- src/compiler/checker.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 09354d957a36e..7a402dce46bf2 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -23638,6 +23638,8 @@ namespace ts { return objectType && getPropertyOfType(objectType, escapeLeadingUnderscores((node as StringLiteral | NumericLiteral).text)); case SyntaxKind.DefaultKeyword: + case SyntaxKind.FunctionKeyword: + case SyntaxKind.EqualsGreaterThanToken: return getSymbolOfNode(node.parent); default: