diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 9de7b21a7fb..ac6b5d09b67 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -41493,9 +41493,6 @@ namespace ts { return getSymbolOfNode(node as BinaryExpression) || getSymbolOfNode((node as BinaryExpression).left); default: - if (isDeclaration(node)) { - return getSymbolOfNode(node); - } return undefined; } } diff --git a/src/server/session.ts b/src/server/session.ts index d658f7e5227..05d514c6672 100644 --- a/src/server/session.ts +++ b/src/server/session.ts @@ -1312,7 +1312,7 @@ namespace ts.server { const fileToSearch = Debug.checkDefined(auxiliaryProgram.getSourceFile(fileNameToSearch!)); const matches = FindAllReferences.Core.getTopMostDeclarationsInFile(candidate.name, fileToSearch); for (const match of matches) { - const symbol = auxiliaryProgram.getTypeChecker().getSymbolAtLocation(match); + const symbol = match.symbol || auxiliaryProgram.getTypeChecker().getSymbolAtLocation(match); if (symbol) { pushIfUnique(definitions, GoToDefinition.createDefinitionInfo(match, auxiliaryProgram.getTypeChecker(), symbol, match)); } diff --git a/src/services/findAllReferences.ts b/src/services/findAllReferences.ts index bd2b73101c7..139eac1423e 100644 --- a/src/services/findAllReferences.ts +++ b/src/services/findAllReferences.ts @@ -2296,10 +2296,10 @@ namespace ts.FindAllReferences { } function isImplementation(node: Node): boolean { - return !!(node.flags & NodeFlags.Ambient) ? !(isInterfaceDeclaration(node) || isTypeAliasDeclaration(node)) : + return !(node.flags & NodeFlags.Ambient) && ( (isVariableLike(node) ? hasInitializer(node) : isFunctionLikeDeclaration(node) ? !!node.body : - isClassLike(node) || isModuleOrEnumDeclaration(node)); + isClassLike(node) || isModuleOrEnumDeclaration(node))); } export function getReferenceEntriesForShorthandPropertyAssignment(node: Node, checker: TypeChecker, addReference: (node: Node) => void): void { diff --git a/tests/cases/fourslash/goToImplementationLocal_06.ts b/tests/cases/fourslash/goToImplementationLocal_06.ts index 90c489bcf54..923f02a4aae 100644 --- a/tests/cases/fourslash/goToImplementationLocal_06.ts +++ b/tests/cases/fourslash/goToImplementationLocal_06.ts @@ -5,4 +5,4 @@ //// declare var [|someVar|]: string; //// someVa/*reference*/r -verify.allRangesAppearInImplementationList("reference"); +verify.implementationListIsEmpty(); diff --git a/tests/cases/fourslash/goToImplementationLocal_07.ts b/tests/cases/fourslash/goToImplementationLocal_07.ts index b24b463e107..fabee95ceaa 100644 --- a/tests/cases/fourslash/goToImplementationLocal_07.ts +++ b/tests/cases/fourslash/goToImplementationLocal_07.ts @@ -5,4 +5,4 @@ //// declare function [|someFunction|](): () => void; //// someFun/*reference*/ction(); -verify.allRangesAppearInImplementationList("reference"); +verify.implementationListIsEmpty();