From dd28f1271b494dda70be299bd30f5cb42e573661 Mon Sep 17 00:00:00 2001 From: Andrew Casey Date: Thu, 5 May 2022 10:59:04 -0700 Subject: [PATCH] Harden combineProjectOutputForReferences against empty results Getting an empty result doesn't seem expected, but a deeper fix doesn't make sense until #48619 is merged. Fixes #48963 --- src/server/session.ts | 2 +- .../referencesToNonPropertyNameStringLiteral.baseline.jsonc | 1 + .../server/referencesToNonPropertyNameStringLiteral.ts | 5 +++++ 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/referencesToNonPropertyNameStringLiteral.baseline.jsonc create mode 100644 tests/cases/fourslash/server/referencesToNonPropertyNameStringLiteral.ts diff --git a/src/server/session.ts b/src/server/session.ts index 8c92d71db1bdd..ecd5b76ac46f0 100644 --- a/src/server/session.ts +++ b/src/server/session.ts @@ -356,7 +356,7 @@ namespace ts.server { logger.info(`Finding references to ${location.fileName} position ${location.pos} in project ${project.getProjectName()}`); const projectOutputs = project.getLanguageService().findReferences(location.fileName, location.pos); if (projectOutputs) { - const clearIsDefinition = projectOutputs[0].references[0].isDefinition === undefined; + const clearIsDefinition = projectOutputs[0]?.references[0]?.isDefinition === undefined; for (const referencedSymbol of projectOutputs) { const mappedDefinitionFile = getMappedLocation(project, documentSpanLocation(referencedSymbol.definition)); const definition: ReferencedSymbolDefinitionInfo = mappedDefinitionFile === undefined ? diff --git a/tests/baselines/reference/referencesToNonPropertyNameStringLiteral.baseline.jsonc b/tests/baselines/reference/referencesToNonPropertyNameStringLiteral.baseline.jsonc new file mode 100644 index 0000000000000..0637a088a01e8 --- /dev/null +++ b/tests/baselines/reference/referencesToNonPropertyNameStringLiteral.baseline.jsonc @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/tests/cases/fourslash/server/referencesToNonPropertyNameStringLiteral.ts b/tests/cases/fourslash/server/referencesToNonPropertyNameStringLiteral.ts new file mode 100644 index 0000000000000..cf21c74c2d56e --- /dev/null +++ b/tests/cases/fourslash/server/referencesToNonPropertyNameStringLiteral.ts @@ -0,0 +1,5 @@ +/// + +////const str: string = "hello/*1*/"; + +verify.baselineFindAllReferences('1')