Fix error spans for classes.
This commit is contained in:
parent
189482e730
commit
2eddf310dc
5 changed files with 12 additions and 13 deletions
|
@ -9757,12 +9757,11 @@ module ts {
|
||||||
function checkClassDeclaration(node: ClassDeclaration) {
|
function checkClassDeclaration(node: ClassDeclaration) {
|
||||||
// Grammar checking
|
// Grammar checking
|
||||||
if (node.parent.kind !== SyntaxKind.ModuleBlock && node.parent.kind !== SyntaxKind.SourceFile) {
|
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)) {
|
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);
|
checkGrammarClassDeclarationHeritageClauses(node);
|
||||||
|
|
|
@ -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) ====
|
==== tests/cases/compiler/classDeclarationBlockScoping1.ts (1 errors) ====
|
||||||
|
@ -7,7 +7,7 @@ tests/cases/compiler/classDeclarationBlockScoping1.ts(5,5): error TS9004: 'class
|
||||||
|
|
||||||
{
|
{
|
||||||
class C {
|
class C {
|
||||||
~~~~~
|
~
|
||||||
!!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
|
!!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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(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,9): 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) ====
|
==== tests/cases/compiler/classDeclarationBlockScoping2.ts (2 errors) ====
|
||||||
function f() {
|
function f() {
|
||||||
class C {}
|
class C {}
|
||||||
~~~~~
|
~
|
||||||
!!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
|
!!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
|
||||||
var c1 = C;
|
var c1 = C;
|
||||||
{
|
{
|
||||||
class C {}
|
class C {}
|
||||||
~~~~~
|
~
|
||||||
!!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
|
!!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
|
||||||
var c2 = C;
|
var c2 = C;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) ====
|
==== tests/cases/compiler/classExpressionTest1.ts (1 errors) ====
|
||||||
function M() {
|
function M() {
|
||||||
class C<X> {
|
class C<X> {
|
||||||
~~~~~
|
~
|
||||||
!!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
|
!!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
|
||||||
f<T>() {
|
f<T>() {
|
||||||
var t: T;
|
var t: T;
|
||||||
|
|
|
@ -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) ====
|
==== tests/cases/conformance/classes/classDeclarations/classInsideBlock.ts (1 errors) ====
|
||||||
function foo() {
|
function foo() {
|
||||||
class C { }
|
class C { }
|
||||||
~~~~~
|
~
|
||||||
!!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
|
!!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
|
||||||
}
|
}
|
Loading…
Reference in a new issue