mirror of
https://github.com/oxc-project/oxc.git
synced 2026-11-04 10:29:58 +00:00
fix(parser): add modifier ordering validation (TS1029) (#19024)
## Summary - Replace `check_for_duplicate_modifiers` with `check_modifier` that handles both duplicate detection and ordering validation in a single match statement, following TypeScript's `checkGrammarModifiers` logic - Correctly reports TS1029 (`'x' modifier must precede 'y' modifier`) for out-of-order class member modifiers - Remove redundant static/readonly ordering check for index signatures in `class.rs` (now handled centrally) - Remove unused `contains_all_flags` method from `Modifiers` **Babel**: Negative passed 1660 → 1665 (+5) **TypeScript**: Negative passed 1515 → 1529 (+14) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
cc232e160d
commit
56c086b775
5 files changed
+689
-91
No files matched your search
@@ -243,8 +243,8 @@ fn test() {
|
||||
r"const A = class { static #a() {}; }",
|
||||
r"const A = class { static #a = 1; }",
|
||||
r"@decorator class A { static a = 1; }",
|
||||
r"class A { static public a = 1; }",
|
||||
r"class A { static private a = 1; }",
|
||||
r"class A { public static a = 1; }",
|
||||
r"class A { private static a = 1; }",
|
||||
r"class A { static readonly a = 1; }",
|
||||
r"class A { static declare a = 1; }",
|
||||
r"class A { static {}; }",
|
||||
|
||||
@@ -292,31 +292,13 @@ impl<'a> ParserImpl<'a> {
|
||||
self.error(diagnostics::decorators_are_not_valid_here(decorator.span));
|
||||
}
|
||||
|
||||
// No modifiers except `static` and `readonly` are valid here, and they must appear in that order
|
||||
// No modifiers except `static` and `readonly` are valid here
|
||||
self.verify_modifiers(
|
||||
&modifiers,
|
||||
ModifierFlags::READONLY | ModifierFlags::STATIC,
|
||||
true,
|
||||
diagnostics::cannot_appear_on_an_index_signature,
|
||||
);
|
||||
if modifiers.contains_all_flags(ModifierFlags::READONLY | ModifierFlags::STATIC) {
|
||||
// Has both `readonly` and `static` modifiers. Make sure `static` comes before `readonly`.
|
||||
let mut has_seen_readonly_modifier = false;
|
||||
for modifier in modifiers.iter() {
|
||||
match modifier.kind {
|
||||
ModifierKind::Readonly => has_seen_readonly_modifier = true,
|
||||
ModifierKind::Static => {
|
||||
if has_seen_readonly_modifier {
|
||||
self.error(diagnostics::modifier_must_precede_other_modifier(
|
||||
modifier,
|
||||
ModifierKind::Readonly,
|
||||
));
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ClassElement::TSIndexSignature(
|
||||
self.parse_index_signature_declaration(span, &modifiers),
|
||||
|
||||
@@ -202,10 +202,6 @@ impl<'a> Modifiers<'a> {
|
||||
self.flags.contains(target.into())
|
||||
}
|
||||
|
||||
pub fn contains_all_flags(&self, flags: ModifierFlags) -> bool {
|
||||
self.flags.contains(flags)
|
||||
}
|
||||
|
||||
pub fn iter(&self) -> impl Iterator<Item = &Modifier> + '_ {
|
||||
self.modifiers.as_ref().into_iter().flat_map(|modifiers| modifiers.iter())
|
||||
}
|
||||
@@ -330,13 +326,7 @@ impl<'a> ParserImpl<'a> {
|
||||
let kind = self.cur_kind();
|
||||
self.bump_any();
|
||||
let modifier = self.modifier(kind, self.end_span(span));
|
||||
if modifier.kind == ModifierKind::Export {
|
||||
self.error(diagnostics::modifier_must_precede_other_modifier(
|
||||
&modifier,
|
||||
ModifierKind::Declare,
|
||||
));
|
||||
}
|
||||
self.check_for_duplicate_modifiers(flags, &modifier);
|
||||
self.check_modifier(flags, &modifier);
|
||||
flags.set(modifier_flags, true);
|
||||
modifiers.push(modifier);
|
||||
}
|
||||
@@ -395,7 +385,7 @@ impl<'a> ParserImpl<'a> {
|
||||
if modifier.is_static() {
|
||||
has_seen_static_modifier = true;
|
||||
}
|
||||
self.check_for_duplicate_modifiers(modifier_flags, &modifier);
|
||||
self.check_modifier(modifier_flags, &modifier);
|
||||
modifier_flags.set(modifier.kind.into(), true);
|
||||
modifiers.get_or_insert_with(|| self.ast.vec()).push(modifier);
|
||||
}
|
||||
@@ -492,16 +482,128 @@ impl<'a> ParserImpl<'a> {
|
||||
kind == Kind::LBrack || kind == Kind::PrivateIdentifier || kind.is_literal_property_name()
|
||||
}
|
||||
|
||||
fn check_for_duplicate_modifiers(&mut self, seen_flags: ModifierFlags, modifier: &Modifier) {
|
||||
if matches!(
|
||||
modifier.kind,
|
||||
ModifierKind::Public | ModifierKind::Protected | ModifierKind::Private
|
||||
) && seen_flags
|
||||
.intersects(ModifierFlags::PUBLIC | ModifierFlags::PROTECTED | ModifierFlags::PRIVATE)
|
||||
{
|
||||
self.error(diagnostics::accessibility_modifier_already_seen(modifier));
|
||||
} else if seen_flags.contains(modifier.kind.into()) {
|
||||
self.error(diagnostics::modifier_already_seen(modifier));
|
||||
fn check_modifier(&mut self, flags: ModifierFlags, modifier: &Modifier) {
|
||||
match modifier.kind {
|
||||
ModifierKind::Public | ModifierKind::Private | ModifierKind::Protected => {
|
||||
if flags.intersects(ModifierFlags::ACCESSIBILITY) {
|
||||
self.error(diagnostics::accessibility_modifier_already_seen(modifier));
|
||||
} else if flags.contains(ModifierFlags::OVERRIDE) {
|
||||
self.error(diagnostics::modifier_must_precede_other_modifier(
|
||||
modifier,
|
||||
ModifierKind::Override,
|
||||
));
|
||||
} else if flags.contains(ModifierFlags::STATIC) {
|
||||
self.error(diagnostics::modifier_must_precede_other_modifier(
|
||||
modifier,
|
||||
ModifierKind::Static,
|
||||
));
|
||||
} else if flags.contains(ModifierFlags::ACCESSOR) {
|
||||
self.error(diagnostics::modifier_must_precede_other_modifier(
|
||||
modifier,
|
||||
ModifierKind::Accessor,
|
||||
));
|
||||
} else if flags.contains(ModifierFlags::READONLY) {
|
||||
self.error(diagnostics::modifier_must_precede_other_modifier(
|
||||
modifier,
|
||||
ModifierKind::Readonly,
|
||||
));
|
||||
} else if flags.contains(ModifierFlags::ASYNC) {
|
||||
self.error(diagnostics::modifier_must_precede_other_modifier(
|
||||
modifier,
|
||||
ModifierKind::Async,
|
||||
));
|
||||
} else if flags.contains(ModifierFlags::ABSTRACT) {
|
||||
self.error(diagnostics::modifier_must_precede_other_modifier(
|
||||
modifier,
|
||||
ModifierKind::Abstract,
|
||||
));
|
||||
}
|
||||
}
|
||||
ModifierKind::Static => {
|
||||
if flags.contains(ModifierFlags::STATIC) {
|
||||
self.error(diagnostics::modifier_already_seen(modifier));
|
||||
} else if flags.contains(ModifierFlags::READONLY) {
|
||||
self.error(diagnostics::modifier_must_precede_other_modifier(
|
||||
modifier,
|
||||
ModifierKind::Readonly,
|
||||
));
|
||||
} else if flags.contains(ModifierFlags::ASYNC) {
|
||||
self.error(diagnostics::modifier_must_precede_other_modifier(
|
||||
modifier,
|
||||
ModifierKind::Async,
|
||||
));
|
||||
} else if flags.contains(ModifierFlags::ACCESSOR) {
|
||||
self.error(diagnostics::modifier_must_precede_other_modifier(
|
||||
modifier,
|
||||
ModifierKind::Accessor,
|
||||
));
|
||||
} else if flags.contains(ModifierFlags::OVERRIDE) {
|
||||
self.error(diagnostics::modifier_must_precede_other_modifier(
|
||||
modifier,
|
||||
ModifierKind::Override,
|
||||
));
|
||||
}
|
||||
}
|
||||
ModifierKind::Override => {
|
||||
if flags.contains(ModifierFlags::OVERRIDE) {
|
||||
self.error(diagnostics::modifier_already_seen(modifier));
|
||||
} else if flags.contains(ModifierFlags::READONLY) {
|
||||
self.error(diagnostics::modifier_must_precede_other_modifier(
|
||||
modifier,
|
||||
ModifierKind::Readonly,
|
||||
));
|
||||
} else if flags.contains(ModifierFlags::ACCESSOR) {
|
||||
self.error(diagnostics::modifier_must_precede_other_modifier(
|
||||
modifier,
|
||||
ModifierKind::Accessor,
|
||||
));
|
||||
} else if flags.contains(ModifierFlags::ASYNC) {
|
||||
self.error(diagnostics::modifier_must_precede_other_modifier(
|
||||
modifier,
|
||||
ModifierKind::Async,
|
||||
));
|
||||
}
|
||||
}
|
||||
ModifierKind::Abstract => {
|
||||
if flags.contains(ModifierFlags::ABSTRACT) {
|
||||
self.error(diagnostics::modifier_already_seen(modifier));
|
||||
} else if flags.contains(ModifierFlags::OVERRIDE) {
|
||||
self.error(diagnostics::modifier_must_precede_other_modifier(
|
||||
modifier,
|
||||
ModifierKind::Override,
|
||||
));
|
||||
} else if flags.contains(ModifierFlags::ACCESSOR) {
|
||||
self.error(diagnostics::modifier_must_precede_other_modifier(
|
||||
modifier,
|
||||
ModifierKind::Accessor,
|
||||
));
|
||||
}
|
||||
}
|
||||
ModifierKind::Export => {
|
||||
if flags.contains(ModifierFlags::EXPORT) {
|
||||
self.error(diagnostics::modifier_already_seen(modifier));
|
||||
} else if flags.contains(ModifierFlags::DECLARE) {
|
||||
self.error(diagnostics::modifier_must_precede_other_modifier(
|
||||
modifier,
|
||||
ModifierKind::Declare,
|
||||
));
|
||||
} else if flags.contains(ModifierFlags::ABSTRACT) {
|
||||
self.error(diagnostics::modifier_must_precede_other_modifier(
|
||||
modifier,
|
||||
ModifierKind::Abstract,
|
||||
));
|
||||
} else if flags.contains(ModifierFlags::ASYNC) {
|
||||
self.error(diagnostics::modifier_must_precede_other_modifier(
|
||||
modifier,
|
||||
ModifierKind::Async,
|
||||
));
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
if flags.contains(modifier.kind.into()) {
|
||||
self.error(diagnostics::modifier_already_seen(modifier));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,31 +3,21 @@ commit: 92c052dc
|
||||
parser_babel Summary:
|
||||
AST Parsed : 2224/2224 (100.00%)
|
||||
Positive Passed: 2211/2224 (99.42%)
|
||||
Negative Passed: 1660/1689 (98.28%)
|
||||
Negative Passed: 1665/1689 (98.58%)
|
||||
Expect Syntax Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/es2026/explicit-resource-management/invalid-for-using-of-no-initializer/input.js
|
||||
|
||||
Expect Syntax Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/typescript/cast/unparenthesized-assert-and-assign/input.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/typescript/cast/unparenthesized-type-assertion-and-assign/input.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/typescript/class/constructor-with-invalid-order-modifiers-1/input.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/typescript/class/constructor-with-invalid-order-modifiers-2/input.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/typescript/class/constructor-with-invalid-order-modifiers-3/input.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/typescript/class/declare-field-initializer/input.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/typescript/class/declare-initializer/input.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/typescript/class/declare-readonly-field-initializer-w-annotation/input.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/typescript/class/invalid-modifiers-order/input.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/typescript/class/modifiers-incompatible/input.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/typescript/class/modifiers-invalid-order/input.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/typescript/declare/invalid-namespace-var/input.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/typescript/declare/module-class/input.ts
|
||||
@@ -12414,6 +12404,30 @@ Expect to Parse: tasks/coverage/babel/packages/babel-parser/test/fixtures/typesc
|
||||
╰────
|
||||
help: Allowed modifiers are: private, protected, public, static, abstract, override
|
||||
|
||||
× TS(1029): 'override' modifier must precede 'readonly' modifier.
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/class/constructor-with-invalid-order-modifiers-1/input.ts:2:24]
|
||||
1 │ class D extends B {
|
||||
2 │ constructor(readonly override foo: string) {}
|
||||
· ────────
|
||||
3 │ }
|
||||
╰────
|
||||
|
||||
× TS(1029): 'public' modifier must precede 'readonly' modifier.
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/class/constructor-with-invalid-order-modifiers-2/input.ts:2:24]
|
||||
1 │ class D extends B {
|
||||
2 │ constructor(readonly public foo: string) {}
|
||||
· ──────
|
||||
3 │ }
|
||||
╰────
|
||||
|
||||
× TS(1029): 'public' modifier must precede 'override' modifier.
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/class/constructor-with-invalid-order-modifiers-3/input.ts:2:33]
|
||||
1 │ class D extends B {
|
||||
2 │ constructor(override readonly public foo: string) {}
|
||||
· ──────
|
||||
3 │ }
|
||||
╰────
|
||||
|
||||
× TS(1092): Type parameters cannot appear on a constructor declaration
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/class/constructor-with-type-parameters/input.ts:2:14]
|
||||
1 │ class C {
|
||||
@@ -12635,6 +12649,46 @@ Expect to Parse: tasks/coverage/babel/packages/babel-parser/test/fixtures/typesc
|
||||
3 │ }
|
||||
╰────
|
||||
|
||||
× TS(1029): 'private' modifier must precede 'override' modifier.
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/class/invalid-modifiers-order/input.ts:2:12]
|
||||
1 │ class Foo extends Bar {
|
||||
2 │ override private foo1: string
|
||||
· ───────
|
||||
3 │ readonly private foo2: string;
|
||||
╰────
|
||||
|
||||
× TS(1029): 'private' modifier must precede 'readonly' modifier.
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/class/invalid-modifiers-order/input.ts:3:12]
|
||||
2 │ override private foo1: string
|
||||
3 │ readonly private foo2: string;
|
||||
· ───────
|
||||
4 │ readonly private override foo3: string;
|
||||
╰────
|
||||
|
||||
× TS(1029): 'private' modifier must precede 'readonly' modifier.
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/class/invalid-modifiers-order/input.ts:4:12]
|
||||
3 │ readonly private foo2: string;
|
||||
4 │ readonly private override foo3: string;
|
||||
· ───────
|
||||
5 │ private readonly override foo4: string;
|
||||
╰────
|
||||
|
||||
× TS(1029): 'override' modifier must precede 'readonly' modifier.
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/class/invalid-modifiers-order/input.ts:4:20]
|
||||
3 │ readonly private foo2: string;
|
||||
4 │ readonly private override foo3: string;
|
||||
· ────────
|
||||
5 │ private readonly override foo4: string;
|
||||
╰────
|
||||
|
||||
× TS(1029): 'override' modifier must precede 'readonly' modifier.
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/class/invalid-modifiers-order/input.ts:5:20]
|
||||
4 │ readonly private override foo3: string;
|
||||
5 │ private readonly override foo4: string;
|
||||
· ────────
|
||||
6 │ }
|
||||
╰────
|
||||
|
||||
× TS(1024): 'readonly' modifier can only appear on a property declaration or index signature.
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/class/method-readonly/input.ts:2:5]
|
||||
1 │ class C {
|
||||
@@ -12713,6 +12767,78 @@ Expect to Parse: tasks/coverage/babel/packages/babel-parser/test/fixtures/typesc
|
||||
╰────
|
||||
help: Allowed modifiers are: static, readonly
|
||||
|
||||
× TS(1029): 'static' modifier must precede 'override' modifier.
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/class/modifiers-invalid-order/input.ts:3:12]
|
||||
2 │ static override m1() {}
|
||||
3 │ override static m2() {}
|
||||
· ──────
|
||||
4 │
|
||||
╰────
|
||||
|
||||
× TS(1029): 'override' modifier must precede 'readonly' modifier.
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/class/modifiers-invalid-order/input.ts:6:12]
|
||||
5 │ override readonly p4;
|
||||
6 │ readonly override p3;
|
||||
· ────────
|
||||
7 │
|
||||
╰────
|
||||
|
||||
× TS(1029): 'public' modifier must precede 'override' modifier.
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/class/modifiers-invalid-order/input.ts:9:12]
|
||||
8 │ public override m5() {}
|
||||
9 │ override public m6() {}
|
||||
· ──────
|
||||
10 │
|
||||
╰────
|
||||
|
||||
× TS(1029): 'protected' modifier must precede 'override' modifier.
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/class/modifiers-invalid-order/input.ts:12:12]
|
||||
11 │ protected override m7() {}
|
||||
12 │ override protected m8() {}
|
||||
· ─────────
|
||||
13 │
|
||||
╰────
|
||||
|
||||
× TS(1029): 'private' modifier must precede 'override' modifier.
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/class/modifiers-invalid-order/input.ts:15:12]
|
||||
14 │ private override m9() {}
|
||||
15 │ override private m10() {}
|
||||
· ───────
|
||||
16 │
|
||||
╰────
|
||||
|
||||
× TS(1029): 'abstract' modifier must precede 'override' modifier.
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/class/modifiers-invalid-order/input.ts:18:12]
|
||||
17 │ abstract override m12();
|
||||
18 │ override abstract m11();
|
||||
· ────────
|
||||
19 │
|
||||
╰────
|
||||
|
||||
× TS(1029): 'public' modifier must precede 'static' modifier.
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/class/modifiers-invalid-order/input.ts:21:10]
|
||||
20 │ public static m14() {}
|
||||
21 │ static public m13() {}
|
||||
· ──────
|
||||
22 │
|
||||
╰────
|
||||
|
||||
× TS(1029): 'protected' modifier must precede 'static' modifier.
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/class/modifiers-invalid-order/input.ts:24:10]
|
||||
23 │ protected static m16() {}
|
||||
24 │ static protected m15() {}
|
||||
· ─────────
|
||||
25 │
|
||||
╰────
|
||||
|
||||
× TS(1029): 'private' modifier must precede 'static' modifier.
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/class/modifiers-invalid-order/input.ts:27:10]
|
||||
26 │ private static m18() {}
|
||||
27 │ static private m17() {}
|
||||
· ───────
|
||||
28 │ }
|
||||
╰────
|
||||
|
||||
× TS(1071): 'override' modifier cannot appear on an index signature.
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/class/modifiers-override-errors/input.ts:3:3]
|
||||
2 │ override constructor() {}
|
||||
@@ -13846,6 +13972,14 @@ Expect to Parse: tasks/coverage/babel/packages/babel-parser/test/fixtures/typesc
|
||||
3 │ }
|
||||
╰────
|
||||
|
||||
× TS(1029): 'private' modifier must precede 'static' modifier.
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-private-02/input.ts:2:10]
|
||||
1 │ class Foo {
|
||||
2 │ static private {}
|
||||
· ───────
|
||||
3 │ }
|
||||
╰────
|
||||
|
||||
× Unexpected token
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-private-02/input.ts:2:18]
|
||||
1 │ class Foo {
|
||||
@@ -13862,6 +13996,14 @@ Expect to Parse: tasks/coverage/babel/packages/babel-parser/test/fixtures/typesc
|
||||
3 │ }
|
||||
╰────
|
||||
|
||||
× TS(1029): 'protected' modifier must precede 'static' modifier.
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-protected-02/input.ts:2:10]
|
||||
1 │ class Foo {
|
||||
2 │ static protected {}
|
||||
· ─────────
|
||||
3 │ }
|
||||
╰────
|
||||
|
||||
× Unexpected token
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-protected-02/input.ts:2:20]
|
||||
1 │ class Foo {
|
||||
@@ -13878,6 +14020,14 @@ Expect to Parse: tasks/coverage/babel/packages/babel-parser/test/fixtures/typesc
|
||||
3 │ }
|
||||
╰────
|
||||
|
||||
× TS(1029): 'public' modifier must precede 'static' modifier.
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-public-02/input.ts:2:10]
|
||||
1 │ class Foo {
|
||||
2 │ static public {}
|
||||
· ──────
|
||||
3 │ }
|
||||
╰────
|
||||
|
||||
× Unexpected token
|
||||
╭─[babel/packages/babel-parser/test/fixtures/typescript/static-blocks/invalid-static-block-with-accessibility-public-02/input.ts:2:17]
|
||||
1 │ class Foo {
|
||||
|
||||
@@ -3,7 +3,7 @@ commit: 95e3aaa9
|
||||
parser_typescript Summary:
|
||||
AST Parsed : 9843/9843 (100.00%)
|
||||
Positive Passed: 9839/9843 (99.96%)
|
||||
Negative Passed: 1515/2557 (59.25%)
|
||||
Negative Passed: 1529/2557 (59.80%)
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/compiler/FunctionDeclaration3.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/compiler/FunctionDeclaration4.ts
|
||||
@@ -666,8 +666,6 @@ Expect Syntax Error: tasks/coverage/typescript/tests/cases/compiler/moduleVariab
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/compiler/moduleVisibilityTest2.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/compiler/multipleClassPropertyModifiers.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/compiler/multipleExportAssignments.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/compiler/multipleExportAssignmentsInAmbientDeclaration.ts
|
||||
@@ -844,8 +842,6 @@ Expect Syntax Error: tasks/coverage/typescript/tests/cases/compiler/staticInstan
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/compiler/staticMemberExportAccess.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/compiler/staticMustPrecedePublic.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/compiler/staticPropSuper.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/compiler/staticVisibility.ts
|
||||
@@ -992,8 +988,6 @@ Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/async/es6
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration3_es6.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractMixedWithModifiers.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractProperties.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/classes/classExpressions/classWithStaticFieldInParameterBindingPattern.2.ts
|
||||
@@ -1012,8 +1006,6 @@ Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/classes/c
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/classes/constructorDeclarations/constructorParameters/constructorParameterProperties2.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/classes/constructorDeclarations/constructorParameters/readonlyInConstructorParameters.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/classes/constructorDeclarations/superCalls/derivedClassParameterProperties.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/classes/constructorDeclarations/superCalls/derivedClassSuperCallsWithThisArg.ts
|
||||
@@ -1060,8 +1052,6 @@ Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/classes/m
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/classes/members/privateNames/privateNameStaticFieldAccess.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/classes/members/privateNames/privateNameStaticMethodAsync.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/classes/members/privateNames/privateNamesAndDecorators.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/classes/members/privateNames/privateNamesAndStaticFields.ts
|
||||
@@ -1706,10 +1696,6 @@ Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/node/node
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/node/nodeModulesTopLevelAwait.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/override/override11.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/override/overrideKeywordOrder.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/override/override_js3.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/parser/ecmascript3/Accessors/parserES3Accessors1.ts
|
||||
@@ -1740,12 +1726,6 @@ Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/parser/ec
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/parser/ecmascript5/EnumDeclarations/parserEnumDeclaration3.d.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic1.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic10.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic7.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/parserModifierOnStatementInBlock1.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/parserModifierOnStatementInBlock2.ts
|
||||
@@ -1782,12 +1762,6 @@ Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/parser/ec
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/parser/ecmascript5/MemberAccessorDeclarations/parserMemberAccessorDeclaration3.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/parser/ecmascript5/MemberAccessorDeclarations/parserMemberAccessorDeclaration9.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/parser/ecmascript5/MemberFunctionDeclarations/parserMemberFunctionDeclaration3.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/parser/ecmascript5/MemberVariableDeclarations/parserMemberVariableDeclaration3.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/parser/ecmascript5/ModuleDeclarations/parserModuleDeclaration1.d.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/parser/ecmascript5/ModuleDeclarations/parserModuleDeclaration1.ts
|
||||
@@ -1810,8 +1784,6 @@ Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/parser/ec
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/parser/ecmascript5/ParameterLists/parserParameterList17.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/parser/ecmascript5/Protected/Protected6.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509618.ts
|
||||
|
||||
Expect Syntax Error: tasks/coverage/typescript/tests/cases/conformance/parser/ecmascript5/Statements/ContinueStatements/parser_continueNotInIterationStatement4.ts
|
||||
@@ -8305,6 +8277,22 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/statements/Va
|
||||
2 │ .then((role: Role) =>
|
||||
╰────
|
||||
|
||||
× TS(1029): 'public' modifier must precede 'static' modifier.
|
||||
╭─[typescript/tests/cases/compiler/multipleClassPropertyModifiers.ts:3:12]
|
||||
2 │ public static p1;
|
||||
3 │ static public p2;
|
||||
· ──────
|
||||
4 │ private static p3;
|
||||
╰────
|
||||
|
||||
× TS(1029): 'private' modifier must precede 'static' modifier.
|
||||
╭─[typescript/tests/cases/compiler/multipleClassPropertyModifiers.ts:5:12]
|
||||
4 │ private static p3;
|
||||
5 │ static private p4;
|
||||
· ───────
|
||||
6 │ }
|
||||
╰────
|
||||
|
||||
× TS(1028): Accessibility modifier already seen.
|
||||
╭─[typescript/tests/cases/compiler/multipleClassPropertyModifiersErrors.ts:2:9]
|
||||
1 │ class C {
|
||||
@@ -10565,6 +10553,22 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/statements/Va
|
||||
3 │ public static static bar() { }
|
||||
╰────
|
||||
|
||||
× TS(1029): 'public' modifier must precede 'static' modifier.
|
||||
╭─[typescript/tests/cases/compiler/staticMustPrecedePublic.ts:2:12]
|
||||
1 │ class Outer {
|
||||
2 │ static public intI: number;
|
||||
· ──────
|
||||
3 │ static private stringF: string;
|
||||
╰────
|
||||
|
||||
× TS(1029): 'private' modifier must precede 'static' modifier.
|
||||
╭─[typescript/tests/cases/compiler/staticMustPrecedePublic.ts:3:12]
|
||||
2 │ static public intI: number;
|
||||
3 │ static private stringF: string;
|
||||
· ───────
|
||||
4 │ }
|
||||
╰────
|
||||
|
||||
× Classes may not have a static property named 'prototype'
|
||||
╭─[typescript/tests/cases/compiler/staticPrototypeProperty.ts:2:11]
|
||||
1 │ class C {
|
||||
@@ -13042,6 +13046,30 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/statements/Va
|
||||
3 │ }
|
||||
╰────
|
||||
|
||||
× TS(1029): 'public' modifier must precede 'abstract' modifier.
|
||||
╭─[typescript/tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractMixedWithModifiers.ts:8:14]
|
||||
7 │
|
||||
8 │ abstract public foo_bb();
|
||||
· ──────
|
||||
9 │ abstract protected foo_cc();
|
||||
╰────
|
||||
|
||||
× TS(1029): 'protected' modifier must precede 'abstract' modifier.
|
||||
╭─[typescript/tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractMixedWithModifiers.ts:9:14]
|
||||
8 │ abstract public foo_bb();
|
||||
9 │ abstract protected foo_cc();
|
||||
· ─────────
|
||||
10 │ abstract private foo_dd();
|
||||
╰────
|
||||
|
||||
× TS(1029): 'private' modifier must precede 'abstract' modifier.
|
||||
╭─[typescript/tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractMixedWithModifiers.ts:10:14]
|
||||
9 │ abstract protected foo_cc();
|
||||
10 │ abstract private foo_dd();
|
||||
· ───────
|
||||
11 │
|
||||
╰────
|
||||
|
||||
× TS(2391): Function implementation is missing or not immediately following the declaration.
|
||||
╭─[typescript/tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractOverloads.ts:15:5]
|
||||
14 │
|
||||
@@ -13248,6 +13276,14 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/statements/Va
|
||||
7 │ // something
|
||||
╰────
|
||||
|
||||
× TS(1029): 'private' modifier must precede 'readonly' modifier.
|
||||
╭─[typescript/tests/cases/conformance/classes/classStaticBlock/classStaticBlock20.ts:10:14]
|
||||
9 │
|
||||
10 │ readonly private static {
|
||||
· ───────
|
||||
11 │ // something
|
||||
╰────
|
||||
|
||||
× TS(1184): Modifiers cannot appear here.
|
||||
╭─[typescript/tests/cases/conformance/classes/classStaticBlock/classStaticBlock20.ts:10:5]
|
||||
9 │
|
||||
@@ -13485,6 +13521,14 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/statements/Va
|
||||
3 │ method(readonly x: number);
|
||||
╰────
|
||||
|
||||
× TS(1029): 'public' modifier must precede 'readonly' modifier.
|
||||
╭─[typescript/tests/cases/conformance/classes/constructorDeclarations/constructorParameters/readonlyInConstructorParameters.ts:7:26]
|
||||
6 │ class E {
|
||||
7 │ constructor(readonly public x: number) {}
|
||||
· ──────
|
||||
8 │ }
|
||||
╰────
|
||||
|
||||
× TS(1030): 'readonly' modifier already seen.
|
||||
╭─[typescript/tests/cases/conformance/classes/constructorDeclarations/constructorParameters/readonlyReadonly.ts:2:14]
|
||||
1 │ class C {
|
||||
@@ -14710,6 +14754,14 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/statements/Va
|
||||
13 │ }
|
||||
╰────
|
||||
|
||||
× TS(1029): 'static' modifier must precede 'async' modifier.
|
||||
╭─[typescript/tests/cases/conformance/classes/members/privateNames/privateNameStaticMethodAsync.ts:11:11]
|
||||
10 │ }
|
||||
11 │ async static *#bazBad() { yield 42; }
|
||||
· ──────
|
||||
12 │ }
|
||||
╰────
|
||||
|
||||
× Private identifier '#method' is not allowed outside class bodies
|
||||
╭─[typescript/tests/cases/conformance/classes/members/privateNames/privateNameStaticMethodClassExpression.ts:9:14]
|
||||
8 │ console.log(C.getClass().getField());
|
||||
@@ -15023,6 +15075,102 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/statements/Va
|
||||
3 │ }
|
||||
╰────
|
||||
|
||||
× TS(1029): 'private' modifier must precede 'static' modifier.
|
||||
╭─[typescript/tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts:21:12]
|
||||
20 │ class D {
|
||||
21 │ static private privateProperty;
|
||||
· ───────
|
||||
22 │ static private privateMethod() { }
|
||||
╰────
|
||||
|
||||
× TS(1029): 'private' modifier must precede 'static' modifier.
|
||||
╭─[typescript/tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts:22:12]
|
||||
21 │ static private privateProperty;
|
||||
22 │ static private privateMethod() { }
|
||||
· ───────
|
||||
23 │ static private get privateGetter() { return 0; }
|
||||
╰────
|
||||
|
||||
× TS(1029): 'private' modifier must precede 'static' modifier.
|
||||
╭─[typescript/tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts:23:12]
|
||||
22 │ static private privateMethod() { }
|
||||
23 │ static private get privateGetter() { return 0; }
|
||||
· ───────
|
||||
24 │ static private set privateSetter(a: number) { }
|
||||
╰────
|
||||
|
||||
× TS(1029): 'private' modifier must precede 'static' modifier.
|
||||
╭─[typescript/tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts:24:12]
|
||||
23 │ static private get privateGetter() { return 0; }
|
||||
24 │ static private set privateSetter(a: number) { }
|
||||
· ───────
|
||||
25 │
|
||||
╰────
|
||||
|
||||
× TS(1029): 'protected' modifier must precede 'static' modifier.
|
||||
╭─[typescript/tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts:26:12]
|
||||
25 │
|
||||
26 │ static protected protectedProperty;
|
||||
· ─────────
|
||||
27 │ static protected protectedMethod() { }
|
||||
╰────
|
||||
|
||||
× TS(1029): 'protected' modifier must precede 'static' modifier.
|
||||
╭─[typescript/tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts:27:12]
|
||||
26 │ static protected protectedProperty;
|
||||
27 │ static protected protectedMethod() { }
|
||||
· ─────────
|
||||
28 │ static protected get protectedGetter() { return 0; }
|
||||
╰────
|
||||
|
||||
× TS(1029): 'protected' modifier must precede 'static' modifier.
|
||||
╭─[typescript/tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts:28:12]
|
||||
27 │ static protected protectedMethod() { }
|
||||
28 │ static protected get protectedGetter() { return 0; }
|
||||
· ─────────
|
||||
29 │ static protected set protectedSetter(a: number) { }
|
||||
╰────
|
||||
|
||||
× TS(1029): 'protected' modifier must precede 'static' modifier.
|
||||
╭─[typescript/tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts:29:12]
|
||||
28 │ static protected get protectedGetter() { return 0; }
|
||||
29 │ static protected set protectedSetter(a: number) { }
|
||||
· ─────────
|
||||
30 │
|
||||
╰────
|
||||
|
||||
× TS(1029): 'public' modifier must precede 'static' modifier.
|
||||
╭─[typescript/tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts:31:12]
|
||||
30 │
|
||||
31 │ static public publicProperty;
|
||||
· ──────
|
||||
32 │ static public publicMethod() { }
|
||||
╰────
|
||||
|
||||
× TS(1029): 'public' modifier must precede 'static' modifier.
|
||||
╭─[typescript/tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts:32:12]
|
||||
31 │ static public publicProperty;
|
||||
32 │ static public publicMethod() { }
|
||||
· ──────
|
||||
33 │ static public get publicGetter() { return 0; }
|
||||
╰────
|
||||
|
||||
× TS(1029): 'public' modifier must precede 'static' modifier.
|
||||
╭─[typescript/tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts:33:12]
|
||||
32 │ static public publicMethod() { }
|
||||
33 │ static public get publicGetter() { return 0; }
|
||||
· ──────
|
||||
34 │ static public set publicSetter(a: number) { }
|
||||
╰────
|
||||
|
||||
× TS(1029): 'public' modifier must precede 'static' modifier.
|
||||
╭─[typescript/tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts:34:12]
|
||||
33 │ static public get publicGetter() { return 0; }
|
||||
34 │ static public set publicSetter(a: number) { }
|
||||
· ──────
|
||||
35 │ }
|
||||
╰────
|
||||
|
||||
× TS(1028): Accessibility modifier already seen.
|
||||
╭─[typescript/tests/cases/conformance/classes/propertyMemberDeclarations/accessibilityModifiers.ts:39:13]
|
||||
38 │ class E {
|
||||
@@ -15118,6 +15266,46 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/statements/Va
|
||||
╰────
|
||||
help: Allowed modifiers are: private, protected, public, static, abstract, override
|
||||
|
||||
× TS(1029): 'public' modifier must precede 'accessor' modifier.
|
||||
╭─[typescript/tests/cases/conformance/classes/propertyMemberDeclarations/autoAccessorDisallowedModifiers.ts:5:14]
|
||||
4 │ declare accessor c: any;
|
||||
5 │ accessor public d: any;
|
||||
· ──────
|
||||
6 │ accessor private e: any;
|
||||
╰────
|
||||
|
||||
× TS(1029): 'private' modifier must precede 'accessor' modifier.
|
||||
╭─[typescript/tests/cases/conformance/classes/propertyMemberDeclarations/autoAccessorDisallowedModifiers.ts:6:14]
|
||||
5 │ accessor public d: any;
|
||||
6 │ accessor private e: any;
|
||||
· ───────
|
||||
7 │ accessor protected f: any;
|
||||
╰────
|
||||
|
||||
× TS(1029): 'protected' modifier must precede 'accessor' modifier.
|
||||
╭─[typescript/tests/cases/conformance/classes/propertyMemberDeclarations/autoAccessorDisallowedModifiers.ts:7:14]
|
||||
6 │ accessor private e: any;
|
||||
7 │ accessor protected f: any;
|
||||
· ─────────
|
||||
8 │ accessor abstract g: any;
|
||||
╰────
|
||||
|
||||
× TS(1029): 'abstract' modifier must precede 'accessor' modifier.
|
||||
╭─[typescript/tests/cases/conformance/classes/propertyMemberDeclarations/autoAccessorDisallowedModifiers.ts:8:14]
|
||||
7 │ accessor protected f: any;
|
||||
8 │ accessor abstract g: any;
|
||||
· ────────
|
||||
9 │ accessor static h: any;
|
||||
╰────
|
||||
|
||||
× TS(1029): 'static' modifier must precede 'accessor' modifier.
|
||||
╭─[typescript/tests/cases/conformance/classes/propertyMemberDeclarations/autoAccessorDisallowedModifiers.ts:9:14]
|
||||
8 │ accessor abstract g: any;
|
||||
9 │ accessor static h: any;
|
||||
· ──────
|
||||
10 │ accessor i() {}
|
||||
╰────
|
||||
|
||||
× TS(1276): An 'accessor' property cannot be declared optional.
|
||||
╭─[typescript/tests/cases/conformance/classes/propertyMemberDeclarations/autoAccessorDisallowedModifiers.ts:14:15]
|
||||
13 │ accessor constructor() {}
|
||||
@@ -15145,6 +15333,14 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/statements/Va
|
||||
╰────
|
||||
help: Allowed modifiers are: private, protected, public, static, abstract, override
|
||||
|
||||
× TS(1029): 'override' modifier must precede 'accessor' modifier.
|
||||
╭─[typescript/tests/cases/conformance/classes/propertyMemberDeclarations/autoAccessorDisallowedModifiers.ts:20:14]
|
||||
19 │ class C2 extends C1 {
|
||||
20 │ accessor override g: any;
|
||||
· ────────
|
||||
21 │ }
|
||||
╰────
|
||||
|
||||
× TS(1070): 'accessor' modifier cannot appear on a type member.
|
||||
╭─[typescript/tests/cases/conformance/classes/propertyMemberDeclarations/autoAccessorDisallowedModifiers.ts:24:5]
|
||||
23 │ interface I1 {
|
||||
@@ -20031,14 +20227,6 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/statements/Va
|
||||
· ╰── Opened here
|
||||
╰────
|
||||
|
||||
× TS(1029): 'export' modifier must precede 'declare' modifier.
|
||||
╭─[typescript/tests/cases/conformance/externalModules/umd-errors.ts:3:8]
|
||||
2 │ export var p;
|
||||
3 │ static export as namespace oo1;
|
||||
· ──────
|
||||
4 │ declare export as namespace oo2;
|
||||
╰────
|
||||
|
||||
× Unexpected token
|
||||
╭─[typescript/tests/cases/conformance/externalModules/umd-errors.ts:3:15]
|
||||
2 │ export var p;
|
||||
@@ -21197,6 +21385,22 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/statements/Va
|
||||
· ─────────────────
|
||||
╰────
|
||||
|
||||
× TS(1029): 'public' modifier must precede 'override' modifier.
|
||||
╭─[typescript/tests/cases/conformance/override/override11.ts:6:27]
|
||||
5 │ class Sub extends Base {
|
||||
6 │ constructor (override public foo: number) {
|
||||
· ──────
|
||||
7 │ super();
|
||||
╰────
|
||||
|
||||
× TS(1029): 'override' modifier must precede 'readonly' modifier.
|
||||
╭─[typescript/tests/cases/conformance/override/override5.ts:16:14]
|
||||
15 │
|
||||
16 │ readonly override p3: number;
|
||||
· ────────
|
||||
17 │
|
||||
╰────
|
||||
|
||||
× TS(1030): 'override' modifier already seen.
|
||||
╭─[typescript/tests/cases/conformance/override/override5.ts:22:14]
|
||||
21 │
|
||||
@@ -21206,6 +21410,38 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/statements/Va
|
||||
╰────
|
||||
help: Remove the duplicate modifier.
|
||||
|
||||
× TS(1029): 'public' modifier must precede 'override' modifier.
|
||||
╭─[typescript/tests/cases/conformance/override/override5.ts:25:14]
|
||||
24 │ public override pp: number;
|
||||
25 │ override public op: number;
|
||||
· ──────
|
||||
26 │
|
||||
╰────
|
||||
|
||||
× TS(1029): 'abstract' modifier must precede 'override' modifier.
|
||||
╭─[typescript/tests/cases/conformance/override/override5.ts:39:14]
|
||||
38 │ abstract class AD extends AB {
|
||||
39 │ override abstract f(): void;
|
||||
· ────────
|
||||
40 │ abstract override b(): void;
|
||||
╰────
|
||||
|
||||
× TS(1029): 'abstract' modifier must precede 'override' modifier.
|
||||
╭─[typescript/tests/cases/conformance/override/override5.ts:44:14]
|
||||
43 │ abstract class AND {
|
||||
44 │ override abstract f(): void;
|
||||
· ────────
|
||||
45 │ abstract override b(): void;
|
||||
╰────
|
||||
|
||||
× TS(1029): 'override' modifier must precede 'readonly' modifier.
|
||||
╭─[typescript/tests/cases/conformance/override/override7.ts:13:14]
|
||||
12 │
|
||||
13 │ readonly override p3: number;
|
||||
· ────────
|
||||
14 │
|
||||
╰────
|
||||
|
||||
× TS(1030): 'override' modifier already seen.
|
||||
╭─[typescript/tests/cases/conformance/override/override7.ts:19:14]
|
||||
18 │
|
||||
@@ -21215,6 +21451,30 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/statements/Va
|
||||
╰────
|
||||
help: Remove the duplicate modifier.
|
||||
|
||||
× TS(1029): 'public' modifier must precede 'override' modifier.
|
||||
╭─[typescript/tests/cases/conformance/override/override7.ts:22:14]
|
||||
21 │ public override pp: number;
|
||||
22 │ override public op: number;
|
||||
· ──────
|
||||
23 │
|
||||
╰────
|
||||
|
||||
× TS(1029): 'abstract' modifier must precede 'override' modifier.
|
||||
╭─[typescript/tests/cases/conformance/override/override7.ts:36:14]
|
||||
35 │ abstract class AD extends AB {
|
||||
36 │ override abstract f(): void;
|
||||
· ────────
|
||||
37 │ abstract override b(): void;
|
||||
╰────
|
||||
|
||||
× TS(1029): 'abstract' modifier must precede 'override' modifier.
|
||||
╭─[typescript/tests/cases/conformance/override/override7.ts:41:14]
|
||||
40 │ abstract class AND {
|
||||
41 │ override abstract f(): void;
|
||||
· ────────
|
||||
42 │ abstract override b(): void;
|
||||
╰────
|
||||
|
||||
× TS(1070): 'override' modifier cannot appear on a type member.
|
||||
╭─[typescript/tests/cases/conformance/override/override9.ts:8:5]
|
||||
7 │ foo (): void;
|
||||
@@ -21233,6 +21493,54 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/statements/Va
|
||||
╰────
|
||||
help: Only 'readonly' modifier is allowed here.
|
||||
|
||||
× TS(1029): 'override' modifier must precede 'async' modifier.
|
||||
╭─[typescript/tests/cases/conformance/override/overrideKeywordOrder.ts:12:9]
|
||||
11 │ override async m1() {}
|
||||
12 │ async override m2() {} // error
|
||||
· ────────
|
||||
13 │ }
|
||||
╰────
|
||||
|
||||
× TS(1029): 'static' modifier must precede 'override' modifier.
|
||||
╭─[typescript/tests/cases/conformance/override/overrideKeywordOrder.ts:15:12]
|
||||
14 │ class Test2 extends Base {
|
||||
15 │ override static s1() {} // error
|
||||
· ──────
|
||||
16 │ static override s2() {}
|
||||
╰────
|
||||
|
||||
× TS(1029): 'public' modifier must precede 'override' modifier.
|
||||
╭─[typescript/tests/cases/conformance/override/overrideKeywordOrder.ts:21:12]
|
||||
20 │ class Test3 extends Base {
|
||||
21 │ override public m1() {} // error
|
||||
· ──────
|
||||
22 │ public override m2() {}
|
||||
╰────
|
||||
|
||||
× TS(1029): 'override' modifier must precede 'readonly' modifier.
|
||||
╭─[typescript/tests/cases/conformance/override/overrideKeywordOrder.ts:26:12]
|
||||
25 │ override readonly p1: any;
|
||||
26 │ readonly override p2: any; // error
|
||||
· ────────
|
||||
27 │ m1() {}
|
||||
╰────
|
||||
|
||||
× TS(1029): 'abstract' modifier must precede 'override' modifier.
|
||||
╭─[typescript/tests/cases/conformance/override/overrideKeywordOrder.ts:32:12]
|
||||
31 │ abstract class Test5 extends Base {
|
||||
32 │ override abstract m1(): void; // error
|
||||
· ────────
|
||||
33 │ abstract override m2(): void;
|
||||
╰────
|
||||
|
||||
× TS(1029): 'public' modifier must precede 'override' modifier.
|
||||
╭─[typescript/tests/cases/conformance/override/overrideParameterProperty.ts:20:24]
|
||||
19 │ class C3 extends Base {
|
||||
20 │ constructor(override public p1: "hello") {
|
||||
· ──────
|
||||
21 │ super();
|
||||
╰────
|
||||
|
||||
× TS(1090): 'override' modifier cannot appear on a parameter.
|
||||
╭─[typescript/tests/cases/conformance/override/overrideParameterProperty.ts:25:5]
|
||||
24 │
|
||||
@@ -21709,6 +22017,22 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/statements/Va
|
||||
2 │ }
|
||||
╰────
|
||||
|
||||
× TS(1029): 'public' modifier must precede 'static' modifier.
|
||||
╭─[typescript/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic1.ts:3:8]
|
||||
2 │ {
|
||||
3 │ static public intI: number;
|
||||
· ──────
|
||||
4 │ }
|
||||
╰────
|
||||
|
||||
× TS(1029): 'public' modifier must precede 'static' modifier.
|
||||
╭─[typescript/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic10.ts:3:8]
|
||||
2 │ {
|
||||
3 │ static public intI<T>() {}
|
||||
· ──────
|
||||
4 │ }
|
||||
╰────
|
||||
|
||||
× Expected `}` but found `EOF`
|
||||
╭─[typescript/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic6.ts:3:14]
|
||||
1 │ class Outer
|
||||
@@ -21718,6 +22042,14 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/statements/Va
|
||||
3 │ static public
|
||||
╰────
|
||||
|
||||
× TS(1029): 'public' modifier must precede 'static' modifier.
|
||||
╭─[typescript/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/AccessibilityAfterStatic/parserAccessibilityAfterStatic7.ts:3:8]
|
||||
2 │ {
|
||||
3 │ static public intI() {}
|
||||
· ──────
|
||||
4 │ }
|
||||
╰────
|
||||
|
||||
× Unexpected token
|
||||
╭─[typescript/tests/cases/conformance/parser/ecmascript5/ErrorRecovery/ArgumentLists/parserErrorRecovery_ArgumentList1.ts:3:4]
|
||||
2 │ bar(
|
||||
@@ -22777,6 +23109,14 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/statements/Va
|
||||
3 │ }
|
||||
╰────
|
||||
|
||||
× TS(1029): 'public' modifier must precede 'static' modifier.
|
||||
╭─[typescript/tests/cases/conformance/parser/ecmascript5/MemberAccessorDeclarations/parserMemberAccessorDeclaration9.ts:2:12]
|
||||
1 │ class C {
|
||||
2 │ static public get Foo() { }
|
||||
· ──────
|
||||
3 │ }
|
||||
╰────
|
||||
|
||||
× TS(1028): Accessibility modifier already seen.
|
||||
╭─[typescript/tests/cases/conformance/parser/ecmascript5/MemberFunctionDeclarations/parserMemberFunctionDeclaration1.ts:2:12]
|
||||
1 │ class C {
|
||||
@@ -22795,6 +23135,14 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/statements/Va
|
||||
3 │ }
|
||||
╰────
|
||||
|
||||
× TS(1029): 'public' modifier must precede 'static' modifier.
|
||||
╭─[typescript/tests/cases/conformance/parser/ecmascript5/MemberFunctionDeclarations/parserMemberFunctionDeclaration3.ts:2:12]
|
||||
1 │ class C {
|
||||
2 │ static public Foo() { }
|
||||
· ──────
|
||||
3 │ }
|
||||
╰────
|
||||
|
||||
× TS(1031): 'export' modifier cannot appear on class elements of this kind.
|
||||
╭─[typescript/tests/cases/conformance/parser/ecmascript5/MemberFunctionDeclarations/parserMemberFunctionDeclaration4.ts:2:5]
|
||||
1 │ class C {
|
||||
@@ -22894,6 +23242,14 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/statements/Va
|
||||
3 │ }
|
||||
╰────
|
||||
|
||||
× TS(1029): 'public' modifier must precede 'static' modifier.
|
||||
╭─[typescript/tests/cases/conformance/parser/ecmascript5/MemberVariableDeclarations/parserMemberVariableDeclaration3.ts:2:10]
|
||||
1 │ class C {
|
||||
2 │ static public Foo;
|
||||
· ──────
|
||||
3 │ }
|
||||
╰────
|
||||
|
||||
× TS(1031): 'export' modifier cannot appear on class elements of this kind.
|
||||
╭─[typescript/tests/cases/conformance/parser/ecmascript5/MemberVariableDeclarations/parserMemberVariableDeclaration4.ts:2:3]
|
||||
1 │ class C {
|
||||
@@ -23084,6 +23440,14 @@ Expect to Parse: tasks/coverage/typescript/tests/cases/conformance/statements/Va
|
||||
╰────
|
||||
help: Remove the duplicate modifier.
|
||||
|
||||
× TS(1029): 'protected' modifier must precede 'static' modifier.
|
||||
╭─[typescript/tests/cases/conformance/parser/ecmascript5/Protected/Protected6.ts:2:10]
|
||||
1 │ class C {
|
||||
2 │ static protected m() { }
|
||||
· ─────────
|
||||
3 │ }
|
||||
╰────
|
||||
|
||||
× TS(1028): Accessibility modifier already seen.
|
||||
╭─[typescript/tests/cases/conformance/parser/ecmascript5/Protected/Protected7.ts:2:13]
|
||||
1 │ class C {
|
||||
|
||||
Reference in new issue
Block a user