diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 5addbea23a3..3d77b93d147 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -4814,13 +4814,13 @@ namespace ts { if (isDeclaration(hostNode)) { return getDeclarationIdentifier(hostNode); } - // Covers remaining cases + // Covers remaining cases (returning undefined if none match). switch (hostNode.kind) { case SyntaxKind.VariableStatement: if (hostNode.declarationList && hostNode.declarationList.declarations[0]) { return getDeclarationIdentifier(hostNode.declarationList.declarations[0]); } - return undefined; + break; case SyntaxKind.ExpressionStatement: const expr = hostNode.expression; switch (expr.kind) { @@ -4832,9 +4832,7 @@ namespace ts { return arg; } } - return undefined; - case SyntaxKind.EndOfFileToken: - return undefined; + break; case SyntaxKind.ParenthesizedExpression: { return getDeclarationIdentifier(hostNode.expression); } @@ -4842,10 +4840,8 @@ namespace ts { if (isDeclaration(hostNode.statement) || isExpression(hostNode.statement)) { return getDeclarationIdentifier(hostNode.statement); } - return undefined; + break; } - default: - Debug.assertNever(hostNode, "Found typedef tag attached to node which it should not be!"); } } diff --git a/tests/baselines/reference/noAssertForUnparseableTypedefs.errors.txt b/tests/baselines/reference/noAssertForUnparseableTypedefs.errors.txt new file mode 100644 index 00000000000..4876d5276f7 --- /dev/null +++ b/tests/baselines/reference/noAssertForUnparseableTypedefs.errors.txt @@ -0,0 +1,15 @@ +tests/cases/conformance/jsdoc/bug26693.js(1,15): error TS2304: Cannot find name 'module'. +tests/cases/conformance/jsdoc/bug26693.js(1,21): error TS1005: '}' expected. +tests/cases/conformance/jsdoc/bug26693.js(2,22): error TS2307: Cannot find module 'nope'. + + +==== tests/cases/conformance/jsdoc/bug26693.js (3 errors) ==== + /** @typedef {module:locale} hi */ + ~~~~~~ +!!! error TS2304: Cannot find name 'module'. + ~ +!!! error TS1005: '}' expected. + import { nope } from 'nope'; + ~~~~~~ +!!! error TS2307: Cannot find module 'nope'. + \ No newline at end of file diff --git a/tests/baselines/reference/noAssertForUnparseableTypedefs.symbols b/tests/baselines/reference/noAssertForUnparseableTypedefs.symbols new file mode 100644 index 00000000000..fea0c07d003 --- /dev/null +++ b/tests/baselines/reference/noAssertForUnparseableTypedefs.symbols @@ -0,0 +1,5 @@ +=== tests/cases/conformance/jsdoc/bug26693.js === +/** @typedef {module:locale} hi */ +import { nope } from 'nope'; +>nope : Symbol(nope, Decl(bug26693.js, 1, 8)) + diff --git a/tests/baselines/reference/noAssertForUnparseableTypedefs.types b/tests/baselines/reference/noAssertForUnparseableTypedefs.types new file mode 100644 index 00000000000..3d10e4940b9 --- /dev/null +++ b/tests/baselines/reference/noAssertForUnparseableTypedefs.types @@ -0,0 +1,5 @@ +=== tests/cases/conformance/jsdoc/bug26693.js === +/** @typedef {module:locale} hi */ +import { nope } from 'nope'; +>nope : any + diff --git a/tests/cases/conformance/jsdoc/noAssertForUnparseableTypedefs.ts b/tests/cases/conformance/jsdoc/noAssertForUnparseableTypedefs.ts new file mode 100644 index 00000000000..416004c6514 --- /dev/null +++ b/tests/cases/conformance/jsdoc/noAssertForUnparseableTypedefs.ts @@ -0,0 +1,7 @@ +// @noEmit: true +// @allowJs: true +// @checkJs: true +// @Filename: bug26693.js + +/** @typedef {module:locale} hi */ +import { nope } from 'nope';