From 590fd3f2a28a72b7d3520768b01b9d355e5fc54c Mon Sep 17 00:00:00 2001 From: Andrew Casey Date: Tue, 22 Oct 2019 15:00:30 -0700 Subject: [PATCH] Don't assume that all symbols have declarations ...in Find All References. For example, global `this` doesn't in modules. Part of #34404 --- src/services/findAllReferences.ts | 2 +- .../fourslash/findAllRefsGlobalThisKeywordInModule.ts | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 tests/cases/fourslash/findAllRefsGlobalThisKeywordInModule.ts diff --git a/src/services/findAllReferences.ts b/src/services/findAllReferences.ts index bd0e63561da..8d41211439b 100644 --- a/src/services/findAllReferences.ts +++ b/src/services/findAllReferences.ts @@ -584,7 +584,7 @@ namespace ts.FindAllReferences.Core { } function getReferencedSymbolsForModuleIfDeclaredBySourceFile(symbol: Symbol, program: Program, sourceFiles: readonly SourceFile[], cancellationToken: CancellationToken, options: Options, sourceFilesSet: ReadonlyMap) { - const moduleSourceFile = symbol.flags & SymbolFlags.Module ? find(symbol.declarations, isSourceFile) : undefined; + const moduleSourceFile = (symbol.flags & SymbolFlags.Module) && symbol.declarations && find(symbol.declarations, isSourceFile); if (!moduleSourceFile) return undefined; const exportEquals = symbol.exports!.get(InternalSymbolName.ExportEquals); // If !!exportEquals, we're about to add references to `import("mod")` anyway, so don't double-count them. diff --git a/tests/cases/fourslash/findAllRefsGlobalThisKeywordInModule.ts b/tests/cases/fourslash/findAllRefsGlobalThisKeywordInModule.ts new file mode 100644 index 00000000000..40222b2530b --- /dev/null +++ b/tests/cases/fourslash/findAllRefsGlobalThisKeywordInModule.ts @@ -0,0 +1,8 @@ +/// +// @noLib: true + +////[|this|]; +////export const c = 1; + +const [glob] = test.ranges(); +verify.referenceGroups(glob, undefined);