Handle when declarationSpan from declarationNode is undefined

This commit is contained in:
Sheetal Nandi 2019-06-04 13:45:22 -07:00
parent 424f2c9e00
commit eaeeb06f9a

View file

@ -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 {