diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 3f03c1431e5..ff13a447275 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -2027,6 +2027,7 @@ namespace ts { export interface ClassDeclaration extends ClassLikeDeclarationBase, DeclarationStatement { kind: SyntaxKind.ClassDeclaration; + /** May be undefined in `export default class { ... }`. */ name?: Identifier; } diff --git a/src/services/findAllReferences.ts b/src/services/findAllReferences.ts index 6869e7331c3..07cd2c683a9 100644 --- a/src/services/findAllReferences.ts +++ b/src/services/findAllReferences.ts @@ -990,7 +990,7 @@ namespace ts.FindAllReferences.Core { const pusher = () => state.referenceAdder(search.symbol, search.location); if (isClassLike(referenceLocation.parent)) { - Debug.assert(referenceLocation.parent.name === referenceLocation); + Debug.assert(referenceLocation.kind === SyntaxKind.DefaultKeyword || referenceLocation.parent.name === referenceLocation); // This is the class declaration containing the constructor. findOwnConstructorReferences(search.symbol, sourceFile, pusher()); } diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index fcd9d04d06d..60c38f22243 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -1266,6 +1266,7 @@ declare namespace ts { } interface ClassDeclaration extends ClassLikeDeclarationBase, DeclarationStatement { kind: SyntaxKind.ClassDeclaration; + /** May be undefined in `export default class { ... }`. */ name?: Identifier; } interface ClassExpression extends ClassLikeDeclarationBase, PrimaryExpression { diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index f9a6bdd55e8..8014017d0c0 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -1266,6 +1266,7 @@ declare namespace ts { } interface ClassDeclaration extends ClassLikeDeclarationBase, DeclarationStatement { kind: SyntaxKind.ClassDeclaration; + /** May be undefined in `export default class { ... }`. */ name?: Identifier; } interface ClassExpression extends ClassLikeDeclarationBase, PrimaryExpression { diff --git a/tests/cases/fourslash/findAllRefsExportDefaultClassConstructor.ts b/tests/cases/fourslash/findAllRefsExportDefaultClassConstructor.ts new file mode 100644 index 00000000000..4cd0ab1ce3d --- /dev/null +++ b/tests/cases/fourslash/findAllRefsExportDefaultClassConstructor.ts @@ -0,0 +1,5 @@ +////export default class { +//// [|constructor|]() {} +////} + +verify.singleReferenceGroup("constructor default(): default");