Skip to content

Commit 2eddf31

Browse files
Fix error spans for classes.
1 parent 189482e commit 2eddf31

5 files changed

Lines changed: 12 additions & 13 deletions

File tree

src/compiler/checker.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9757,12 +9757,11 @@ module ts {
97579757
function checkClassDeclaration(node: ClassDeclaration) {
97589758
// Grammar checking
97599759
if (node.parent.kind !== SyntaxKind.ModuleBlock && node.parent.kind !== SyntaxKind.SourceFile) {
9760-
grammarErrorOnFirstToken(node, Diagnostics.class_declarations_are_only_supported_directly_inside_a_module_or_as_a_top_level_declaration);
9760+
grammarErrorOnNode(node, Diagnostics.class_declarations_are_only_supported_directly_inside_a_module_or_as_a_top_level_declaration);
97619761
}
97629762

9763-
// node.flags & NodeFlags.Default || kind === SyntaxKind.ClassExpression
97649763
if (!node.name && !(node.flags & NodeFlags.Default)) {
9765-
grammarErrorOnNode(node, Diagnostics.A_class_declaration_without_the_default_modifier_must_have_a_name);
9764+
grammarErrorOnFirstToken(node, Diagnostics.A_class_declaration_without_the_default_modifier_must_have_a_name);
97669765
}
97679766

97689767
checkGrammarClassDeclarationHeritageClauses(node);
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
tests/cases/compiler/classDeclarationBlockScoping1.ts(5,5): error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
1+
tests/cases/compiler/classDeclarationBlockScoping1.ts(5,11): error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
22

33

44
==== tests/cases/compiler/classDeclarationBlockScoping1.ts (1 errors) ====
@@ -7,7 +7,7 @@ tests/cases/compiler/classDeclarationBlockScoping1.ts(5,5): error TS9004: 'class
77

88
{
99
class C {
10-
~~~~~
10+
~
1111
!!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
1212
}
1313
}

tests/baselines/reference/classDeclarationBlockScoping2.errors.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
tests/cases/compiler/classDeclarationBlockScoping2.ts(2,5): error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
2-
tests/cases/compiler/classDeclarationBlockScoping2.ts(5,9): error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
1+
tests/cases/compiler/classDeclarationBlockScoping2.ts(2,11): error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
2+
tests/cases/compiler/classDeclarationBlockScoping2.ts(5,15): error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
33

44

55
==== tests/cases/compiler/classDeclarationBlockScoping2.ts (2 errors) ====
66
function f() {
77
class C {}
8-
~~~~~
8+
~
99
!!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
1010
var c1 = C;
1111
{
1212
class C {}
13-
~~~~~
13+
~
1414
!!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
1515
var c2 = C;
1616
}

tests/baselines/reference/classExpressionTest1.errors.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
tests/cases/compiler/classExpressionTest1.ts(2,5): error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
1+
tests/cases/compiler/classExpressionTest1.ts(2,11): error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
22

33

44
==== tests/cases/compiler/classExpressionTest1.ts (1 errors) ====
55
function M() {
66
class C<X> {
7-
~~~~~
7+
~
88
!!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
99
f<T>() {
1010
var t: T;
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
tests/cases/conformance/classes/classDeclarations/classInsideBlock.ts(2,5): error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
1+
tests/cases/conformance/classes/classDeclarations/classInsideBlock.ts(2,11): error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
22

33

44
==== tests/cases/conformance/classes/classDeclarations/classInsideBlock.ts (1 errors) ====
55
function foo() {
66
class C { }
7-
~~~~~
7+
~
88
!!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
99
}

0 commit comments

Comments
 (0)