From 2eddf310dc37c4d4f6982da3c5a65f69bba3dc07 Mon Sep 17 00:00:00 2001 From: Cyrus Najmabadi Date: Wed, 1 Apr 2015 18:56:57 -0700 Subject: [PATCH] Fix error spans for classes. --- src/compiler/checker.ts | 5 ++--- .../reference/classDeclarationBlockScoping1.errors.txt | 4 ++-- .../reference/classDeclarationBlockScoping2.errors.txt | 8 ++++---- tests/baselines/reference/classExpressionTest1.errors.txt | 4 ++-- tests/baselines/reference/classInsideBlock.errors.txt | 4 ++-- 5 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index f9d91ab083..f0882a51c4 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -9757,12 +9757,11 @@ module ts { function checkClassDeclaration(node: ClassDeclaration) { // Grammar checking if (node.parent.kind !== SyntaxKind.ModuleBlock && node.parent.kind !== SyntaxKind.SourceFile) { - grammarErrorOnFirstToken(node, Diagnostics.class_declarations_are_only_supported_directly_inside_a_module_or_as_a_top_level_declaration); + grammarErrorOnNode(node, Diagnostics.class_declarations_are_only_supported_directly_inside_a_module_or_as_a_top_level_declaration); } - // node.flags & NodeFlags.Default || kind === SyntaxKind.ClassExpression if (!node.name && !(node.flags & NodeFlags.Default)) { - grammarErrorOnNode(node, Diagnostics.A_class_declaration_without_the_default_modifier_must_have_a_name); + grammarErrorOnFirstToken(node, Diagnostics.A_class_declaration_without_the_default_modifier_must_have_a_name); } checkGrammarClassDeclarationHeritageClauses(node); diff --git a/tests/baselines/reference/classDeclarationBlockScoping1.errors.txt b/tests/baselines/reference/classDeclarationBlockScoping1.errors.txt index 367e53c066..4f15007bb2 100644 --- a/tests/baselines/reference/classDeclarationBlockScoping1.errors.txt +++ b/tests/baselines/reference/classDeclarationBlockScoping1.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/classDeclarationBlockScoping1.ts(5,5): error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration. +tests/cases/compiler/classDeclarationBlockScoping1.ts(5,11): error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration. ==== tests/cases/compiler/classDeclarationBlockScoping1.ts (1 errors) ==== @@ -7,7 +7,7 @@ tests/cases/compiler/classDeclarationBlockScoping1.ts(5,5): error TS9004: 'class { class C { - ~~~~~ + ~ !!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration. } } \ No newline at end of file diff --git a/tests/baselines/reference/classDeclarationBlockScoping2.errors.txt b/tests/baselines/reference/classDeclarationBlockScoping2.errors.txt index a6d320fa41..2a9885e110 100644 --- a/tests/baselines/reference/classDeclarationBlockScoping2.errors.txt +++ b/tests/baselines/reference/classDeclarationBlockScoping2.errors.txt @@ -1,16 +1,16 @@ -tests/cases/compiler/classDeclarationBlockScoping2.ts(2,5): error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration. -tests/cases/compiler/classDeclarationBlockScoping2.ts(5,9): error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration. +tests/cases/compiler/classDeclarationBlockScoping2.ts(2,11): error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration. +tests/cases/compiler/classDeclarationBlockScoping2.ts(5,15): error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration. ==== tests/cases/compiler/classDeclarationBlockScoping2.ts (2 errors) ==== function f() { class C {} - ~~~~~ + ~ !!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration. var c1 = C; { class C {} - ~~~~~ + ~ !!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration. var c2 = C; } diff --git a/tests/baselines/reference/classExpressionTest1.errors.txt b/tests/baselines/reference/classExpressionTest1.errors.txt index 2da1f0427c..4d7e1cda63 100644 --- a/tests/baselines/reference/classExpressionTest1.errors.txt +++ b/tests/baselines/reference/classExpressionTest1.errors.txt @@ -1,10 +1,10 @@ -tests/cases/compiler/classExpressionTest1.ts(2,5): error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration. +tests/cases/compiler/classExpressionTest1.ts(2,11): error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration. ==== tests/cases/compiler/classExpressionTest1.ts (1 errors) ==== function M() { class C { - ~~~~~ + ~ !!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration. f() { var t: T; diff --git a/tests/baselines/reference/classInsideBlock.errors.txt b/tests/baselines/reference/classInsideBlock.errors.txt index 8fb8e165b1..369e77735e 100644 --- a/tests/baselines/reference/classInsideBlock.errors.txt +++ b/tests/baselines/reference/classInsideBlock.errors.txt @@ -1,9 +1,9 @@ -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. +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. ==== tests/cases/conformance/classes/classDeclarations/classInsideBlock.ts (1 errors) ==== function foo() { class C { } - ~~~~~ + ~ !!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration. } \ No newline at end of file