From cc4a3a830f1bd789495766db53e55e35c7cc5fd3 Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Mon, 27 Feb 2017 14:18:46 -0800 Subject: [PATCH 1/2] Add check for undefined declarations --- src/services/goToDefinition.ts | 4 ++-- tests/cases/fourslash/goToDefinition_untypedModule.ts | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 tests/cases/fourslash/goToDefinition_untypedModule.ts diff --git a/src/services/goToDefinition.ts b/src/services/goToDefinition.ts index 0ac6c9f7812..2e35d92b96e 100644 --- a/src/services/goToDefinition.ts +++ b/src/services/goToDefinition.ts @@ -198,11 +198,11 @@ namespace ts.GoToDefinition { return false; } - function tryAddSignature(signatureDeclarations: Declaration[], selectConstructors: boolean, symbolKind: string, symbolName: string, containerName: string, result: DefinitionInfo[]) { + function tryAddSignature(signatureDeclarations: Declaration[] | undefined, selectConstructors: boolean, symbolKind: string, symbolName: string, containerName: string, result: DefinitionInfo[]) { const declarations: Declaration[] = []; let definition: Declaration | undefined; - for (const d of signatureDeclarations) { + if (signatureDeclarations) for (const d of signatureDeclarations) { if (selectConstructors ? d.kind === SyntaxKind.Constructor : isSignatureDeclaration(d)) { declarations.push(d); if ((d).body) definition = d; diff --git a/tests/cases/fourslash/goToDefinition_untypedModule.ts b/tests/cases/fourslash/goToDefinition_untypedModule.ts new file mode 100644 index 00000000000..b4571438434 --- /dev/null +++ b/tests/cases/fourslash/goToDefinition_untypedModule.ts @@ -0,0 +1,10 @@ +/// + +// @Filename: /node_modules/foo/index.js +////not read + +// @Filename: /a.ts +////import { f } from "foo"; +/////**/f(); + +verify.goToDefinition("", []); From 7afee8c3ab486176e052997c314cf1788362823e Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Tue, 28 Feb 2017 06:09:22 -0800 Subject: [PATCH 2/2] Fix formatting --- src/services/goToDefinition.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/services/goToDefinition.ts b/src/services/goToDefinition.ts index 2e35d92b96e..b732d8a1193 100644 --- a/src/services/goToDefinition.ts +++ b/src/services/goToDefinition.ts @@ -199,10 +199,14 @@ namespace ts.GoToDefinition { } function tryAddSignature(signatureDeclarations: Declaration[] | undefined, selectConstructors: boolean, symbolKind: string, symbolName: string, containerName: string, result: DefinitionInfo[]) { + if (!signatureDeclarations) { + return false; + } + const declarations: Declaration[] = []; let definition: Declaration | undefined; - if (signatureDeclarations) for (const d of signatureDeclarations) { + for (const d of signatureDeclarations) { if (selectConstructors ? d.kind === SyntaxKind.Constructor : isSignatureDeclaration(d)) { declarations.push(d); if ((d).body) definition = d;