From eaeeb06f9a22e88af7a590599c8be9483839cc59 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 4 Jun 2019 13:45:22 -0700 Subject: [PATCH] Handle when declarationSpan from declarationNode is undefined --- src/services/goToDefinition.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/services/goToDefinition.ts b/src/services/goToDefinition.ts index f64a2469156..05bd62e363f 100644 --- a/src/services/goToDefinition.ts +++ b/src/services/goToDefinition.ts @@ -273,18 +273,21 @@ namespace ts.GoToDefinition { function createDefinitionInfoFromName(declaration: Declaration, symbolKind: ScriptElementKind, symbolName: string, containerName: string): DefinitionInfo { const name = getNameOfDeclaration(declaration) || declaration; const sourceFile = name.getSourceFile(); - const declarationNode = FindAllReferences.getDeclarationForDeclarationSpan(declaration)!; - return { + const result: DefinitionInfo = { fileName: sourceFile.fileName, textSpan: createTextSpanFromNode(name, sourceFile), kind: symbolKind, name: symbolName, containerKind: undefined!, // TODO: GH#18217 containerName, - declarationSpan: FindAllReferences.isDeclarationNodeWithStartAndEnd(declarationNode) ? - createTextSpanFromNode(declarationNode.start, sourceFile, declarationNode.end) : - createTextSpanFromNode(declarationNode, sourceFile), }; + const declarationNode = FindAllReferences.getDeclarationForDeclarationSpan(declaration); + if (declarationNode) { + result.declarationSpan = FindAllReferences.isDeclarationNodeWithStartAndEnd(declarationNode) ? + createTextSpanFromNode(declarationNode.start, sourceFile, declarationNode.end) : + createTextSpanFromNode(declarationNode, sourceFile); + } + return result; } function createDefinitionFromSignatureDeclaration(typeChecker: TypeChecker, decl: SignatureDeclaration): DefinitionInfo {