From 8a7d274637d459be835fb31989a1326e831f4274 Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Mon, 5 Feb 2018 08:50:35 -0800 Subject: [PATCH 1/2] Fix assertion: class reference location may be 'default' keyword instead of class name --- src/compiler/types.ts | 1 + src/services/findAllReferences.ts | 2 +- .../fourslash/findAllRefsExportDefaultClassConstructor.ts | 5 +++++ 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 tests/cases/fourslash/findAllRefsExportDefaultClassConstructor.ts diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 0a1c49a93c303..cd8561ac00390 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 6869e7331c338..07cd2c683a98f 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/cases/fourslash/findAllRefsExportDefaultClassConstructor.ts b/tests/cases/fourslash/findAllRefsExportDefaultClassConstructor.ts new file mode 100644 index 0000000000000..4cd0ab1ce3d66 --- /dev/null +++ b/tests/cases/fourslash/findAllRefsExportDefaultClassConstructor.ts @@ -0,0 +1,5 @@ +////export default class { +//// [|constructor|]() {} +////} + +verify.singleReferenceGroup("constructor default(): default"); From 11b2c036a3c9257ef259738a0a1e2192d9008969 Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Mon, 5 Feb 2018 10:58:06 -0800 Subject: [PATCH 2/2] Update API baselines --- tests/baselines/reference/api/tsserverlibrary.d.ts | 1 + tests/baselines/reference/api/typescript.d.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index 9d3000d6b609a..79ac60aaa051e 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 65fcacaa5aa32..59e7e6102eee2 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 {