JsModule {
bom_token: missing (optional),
interpreter_token: missing (optional),
directives: JsDirectiveList [],
items: JsModuleItemList [
JsClassDeclaration {
decorators: JsDecoratorList [],
abstract_token: missing (optional),
class_token: CLASS_KW@0..6 "class" [] [Whitespace(" ")],
id: JsIdentifierBinding {
name_token: IDENT@6..11 "Base" [] [Whitespace(" ")],
},
type_parameters: missing (optional),
extends_clause: missing (optional),
implements_clause: missing (optional),
l_curly_token: L_CURLY@11..13 "{" [] [Whitespace(" ")],
members: JsClassMemberList [
JsPropertyClassMember {
modifiers: JsPropertyModifierList [],
name: JsLiteralMemberName {
value: IDENT@13..18 "base1" [] [],
},
property_annotation: missing (optional),
value: missing (optional),
semicolon_token: SEMICOLON@18..20 ";" [] [Whitespace(" ")],
},
JsPropertyClassMember {
modifiers: JsPropertyModifierList [],
name: JsLiteralMemberName {
value: IDENT@20..25 "base2" [] [],
},
property_annotation: missing (optional),
value: missing (optional),
semicolon_token: SEMICOLON@25..27 ";" [] [Whitespace(" ")],
},
JsPropertyClassMember {
modifiers: JsPropertyModifierList [],
name: JsLiteralMemberName {
value: IDENT@27..32 "base3" [] [],
},
property_annotation: missing (optional),
value: missing (optional),
semicolon_token: SEMICOLON@32..34 ";" [] [Whitespace(" ")],
},
JsPropertyClassMember {
modifiers: JsPropertyModifierList [],
name: JsLiteralMemberName {
value: IDENT@34..39 "base4" [] [],
},
property_annotation: missing (optional),
value: missing (optional),
semicolon_token: SEMICOLON@39..40 ";" [] [],
},
],
r_curly_token: R_CURLY@40..41 "}" [] [],
},
JsClassDeclaration {
decorators: JsDecoratorList [],
abstract_token: ABSTRACT_KW@41..51 "abstract" [Newline("\n")] [Whitespace(" ")],
class_token: CLASS_KW@51..57 "class" [] [Whitespace(" ")],
id: JsIdentifierBinding {
name_token: IDENT@57..62 "Test" [] [Whitespace(" ")],
},
type_parameters: missing (optional),
extends_clause: JsExtendsClause {
extends_token: EXTENDS_KW@62..70 "extends" [] [Whitespace(" ")],
super_class: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@70..75 "Base" [] [Whitespace(" ")],
},
},
type_arguments: missing (optional),
},
implements_clause: missing (optional),
l_curly_token: L_CURLY@75..76 "{" [] [],
members: JsClassMemberList [
JsBogusMember {
items: [
JsPropertyModifierList [
TsReadonlyModifier {
modifier_token: READONLY_KW@76..111 "readonly" [Newline("\n"), Whitespace(" "), Comments("// Accessibility"), Newline("\n"), Whitespace(" ")] [Whitespace(" ")],
},
TsAccessibilityModifier {
modifier_token: PRIVATE_KW@111..119 "private" [] [Whitespace(" ")],
},
],
JsLiteralMemberName {
value: IDENT@119..120 "a" [] [],
},
TsTypeAnnotation {
colon_token: COLON@120..122 ":" [] [Whitespace(" ")],
ty: TsStringType {
string_token: STRING_KW@122..128 "string" [] [],
},
},
SEMICOLON@128..129 ";" [] [],
],
},
JsBogusMember {
items: [
JsPropertyModifierList [
TsOverrideModifier {
modifier_token: OVERRIDE_KW@129..143 "override" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")],
},
TsAccessibilityModifier {
modifier_token: PROTECTED_KW@143..153 "protected" [] [Whitespace(" ")],
},
],
JsLiteralMemberName {
value: IDENT@153..158 "base1" [] [],
},
SEMICOLON@158..159 ";" [] [],
],
},
JsBogusMember {
items: [
JsPropertyModifierList [
JsStaticModifier {
modifier_token: STATIC_KW@159..171 "static" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")],
},
TsAccessibilityModifier {
modifier_token: PRIVATE_KW@171..179 "private" [] [Whitespace(" ")],
},
],
JsLiteralMemberName {
value: IDENT@179..180 "b" [] [],
},
TsTypeAnnotation {
colon_token: COLON@180..182 ":" [] [Whitespace(" ")],
ty: TsStringType {
string_token: STRING_KW@182..188 "string" [] [],
},
},
SEMICOLON@188..189 ";" [] [],
],
},
JsBogusMember {
items: [
TsPropertySignatureModifierList [
TsAbstractModifier {
modifier_token: ABSTRACT_KW@189..203 "abstract" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")],
},
TsAccessibilityModifier {
modifier_token: PROTECTED_KW@203..213 "protected" [] [Whitespace(" ")],
},
],
JsLiteralMemberName {
value: IDENT@213..214 "d" [] [],
},
TsTypeAnnotation {
colon_token: COLON@214..216 ":" [] [Whitespace(" ")],
ty: TsStringType {
string_token: STRING_KW@216..222 "string" [] [],
},
},
SEMICOLON@222..223 ";" [] [],
],
},
JsBogusMember {
items: [
JsPropertyModifierList [
TsReadonlyModifier {
modifier_token: READONLY_KW@223..251 "readonly" [Newline("\n"), Whitespace(" "), Comments("// Static"), Newline("\n"), Whitespace(" ")] [Whitespace(" ")],
},
JsStaticModifier {
modifier_token: STATIC_KW@251..258 "static" [] [Whitespace(" ")],
},
],
JsLiteralMemberName {
value: IDENT@258..259 "c" [] [],
},
TsTypeAnnotation {
colon_token: COLON@259..261 ":" [] [Whitespace(" ")],
ty: TsStringType {
string_token: STRING_KW@261..267 "string" [] [],
},
},
SEMICOLON@267..268 ";" [] [],
],
},
JsBogusMember {
items: [
JsPropertyModifierList [
JsAccessorModifier {
modifier_token: ACCESSOR_KW@268..282 "accessor" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")],
},
JsStaticModifier {
modifier_token: STATIC_KW@282..289 "static" [] [Whitespace(" ")],
},
],
JsLiteralMemberName {
value: IDENT@289..290 "d" [] [],
},
TsTypeAnnotation {
colon_token: COLON@290..292 ":" [] [Whitespace(" ")],
ty: TsStringType {
string_token: STRING_KW@292..298 "string" [] [],
},
},
SEMICOLON@298..299 ";" [] [],
],
},
JsBogusMember {
items: [
JsPropertyModifierList [
TsOverrideModifier {
modifier_token: OVERRIDE_KW@299..313 "override" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")],
},
JsStaticModifier {
modifier_token: STATIC_KW@313..320 "static" [] [Whitespace(" ")],
},
],
JsLiteralMemberName {
value: IDENT@320..325 "base2" [] [],
},
TsTypeAnnotation {
colon_token: COLON@325..327 ":" [] [Whitespace(" ")],
ty: TsStringType {
string_token: STRING_KW@327..333 "string" [] [],
},
},
SEMICOLON@333..334 ";" [] [],
],
},
JsBogusMember {
items: [
JsPropertyModifierList [
TsReadonlyModifier {
modifier_token: READONLY_KW@334..364 "readonly" [Newline("\n"), Whitespace(" "), Comments("// Accessor"), Newline("\n"), Whitespace(" ")] [Whitespace(" ")],
},
JsAccessorModifier {
modifier_token: ACCESSOR_KW@364..373 "accessor" [] [Whitespace(" ")],
},
],
JsLiteralMemberName {
value: IDENT@373..374 "e" [] [],
},
TsTypeAnnotation {
colon_token: COLON@374..376 ":" [] [Whitespace(" ")],
ty: TsStringType {
string_token: STRING_KW@376..382 "string" [] [],
},
},
SEMICOLON@382..383 ";" [] [],
],
},
JsBogusMember {
items: [
JsPropertyModifierList [
TsOverrideModifier {
modifier_token: OVERRIDE_KW@383..397 "override" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")],
},
JsAccessorModifier {
modifier_token: ACCESSOR_KW@397..406 "accessor" [] [Whitespace(" ")],
},
],
JsLiteralMemberName {
value: IDENT@406..407 "f" [] [],
},
TsTypeAnnotation {
colon_token: COLON@407..409 ":" [] [Whitespace(" ")],
ty: TsStringType {
string_token: STRING_KW@409..415 "string" [] [],
},
},
SEMICOLON@415..416 ";" [] [],
],
},
JsBogusMember {
items: [
TsPropertySignatureModifierList [
TsOverrideModifier {
modifier_token: OVERRIDE_KW@416..446 "override" [Newline("\n"), Whitespace(" "), Comments("// abstract"), Newline("\n"), Whitespace(" ")] [Whitespace(" ")],
},
TsAbstractModifier {
modifier_token: ABSTRACT_KW@446..455 "abstract" [] [Whitespace(" ")],
},
],
JsLiteralMemberName {
value: IDENT@455..460 "base3" [] [],
},
TsTypeAnnotation {
colon_token: COLON@460..462 ":" [] [Whitespace(" ")],
ty: TsStringType {
string_token: STRING_KW@462..468 "string" [] [],
},
},
SEMICOLON@468..469 ";" [] [],
],
},
JsBogusMember {
items: [
JsPropertyModifierList [
TsReadonlyModifier {
modifier_token: READONLY_KW@469..499 "readonly" [Newline("\n"), Whitespace(" "), Comments("// override"), Newline("\n"), Whitespace(" ")] [Whitespace(" ")],
},
TsOverrideModifier {
modifier_token: OVERRIDE_KW@499..508 "override" [] [Whitespace(" ")],
},
],
JsLiteralMemberName {
value: IDENT@508..513 "base4" [] [],
},
TsTypeAnnotation {
colon_token: COLON@513..515 ":" [] [Whitespace(" ")],
ty: TsStringType {
string_token: STRING_KW@515..521 "string" [] [],
},
},
SEMICOLON@521..522 ";" [] [],
],
},
],
r_curly_token: R_CURLY@522..524 "}" [Newline("\n")] [],
},
],
eof_token: EOF@524..525 "" [Newline("\n")] [],
}
0: JS_MODULE@0..525
0: (empty)
1: (empty)
2: JS_DIRECTIVE_LIST@0..0
3: JS_MODULE_ITEM_LIST@0..524
0: JS_CLASS_DECLARATION@0..41
0: JS_DECORATOR_LIST@0..0
1: (empty)
2: CLASS_KW@0..6 "class" [] [Whitespace(" ")]
3: JS_IDENTIFIER_BINDING@6..11
0: IDENT@6..11 "Base" [] [Whitespace(" ")]
4: (empty)
5: (empty)
6: (empty)
7: L_CURLY@11..13 "{" [] [Whitespace(" ")]
8: JS_CLASS_MEMBER_LIST@13..40
0: JS_PROPERTY_CLASS_MEMBER@13..20
0: JS_PROPERTY_MODIFIER_LIST@13..13
1: JS_LITERAL_MEMBER_NAME@13..18
0: IDENT@13..18 "base1" [] []
2: (empty)
3: (empty)
4: SEMICOLON@18..20 ";" [] [Whitespace(" ")]
1: JS_PROPERTY_CLASS_MEMBER@20..27
0: JS_PROPERTY_MODIFIER_LIST@20..20
1: JS_LITERAL_MEMBER_NAME@20..25
0: IDENT@20..25 "base2" [] []
2: (empty)
3: (empty)
4: SEMICOLON@25..27 ";" [] [Whitespace(" ")]
2: JS_PROPERTY_CLASS_MEMBER@27..34
0: JS_PROPERTY_MODIFIER_LIST@27..27
1: JS_LITERAL_MEMBER_NAME@27..32
0: IDENT@27..32 "base3" [] []
2: (empty)
3: (empty)
4: SEMICOLON@32..34 ";" [] [Whitespace(" ")]
3: JS_PROPERTY_CLASS_MEMBER@34..40
0: JS_PROPERTY_MODIFIER_LIST@34..34
1: JS_LITERAL_MEMBER_NAME@34..39
0: IDENT@34..39 "base4" [] []
2: (empty)
3: (empty)
4: SEMICOLON@39..40 ";" [] []
9: R_CURLY@40..41 "}" [] []
1: JS_CLASS_DECLARATION@41..524
0: JS_DECORATOR_LIST@41..41
1: ABSTRACT_KW@41..51 "abstract" [Newline("\n")] [Whitespace(" ")]
2: CLASS_KW@51..57 "class" [] [Whitespace(" ")]
3: JS_IDENTIFIER_BINDING@57..62
0: IDENT@57..62 "Test" [] [Whitespace(" ")]
4: (empty)
5: JS_EXTENDS_CLAUSE@62..75
0: EXTENDS_KW@62..70 "extends" [] [Whitespace(" ")]
1: JS_IDENTIFIER_EXPRESSION@70..75
0: JS_REFERENCE_IDENTIFIER@70..75
0: IDENT@70..75 "Base" [] [Whitespace(" ")]
2: (empty)
6: (empty)
7: L_CURLY@75..76 "{" [] []
8: JS_CLASS_MEMBER_LIST@76..522
0: JS_BOGUS_MEMBER@76..129
0: JS_PROPERTY_MODIFIER_LIST@76..119
0: TS_READONLY_MODIFIER@76..111
0: READONLY_KW@76..111 "readonly" [Newline("\n"), Whitespace(" "), Comments("// Accessibility"), Newline("\n"), Whitespace(" ")] [Whitespace(" ")]
1: TS_ACCESSIBILITY_MODIFIER@111..119
0: PRIVATE_KW@111..119 "private" [] [Whitespace(" ")]
1: JS_LITERAL_MEMBER_NAME@119..120
0: IDENT@119..120 "a" [] []
2: TS_TYPE_ANNOTATION@120..128
0: COLON@120..122 ":" [] [Whitespace(" ")]
1: TS_STRING_TYPE@122..128
0: STRING_KW@122..128 "string" [] []
3: SEMICOLON@128..129 ";" [] []
1: JS_BOGUS_MEMBER@129..159
0: JS_PROPERTY_MODIFIER_LIST@129..153
0: TS_OVERRIDE_MODIFIER@129..143
0: OVERRIDE_KW@129..143 "override" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")]
1: TS_ACCESSIBILITY_MODIFIER@143..153
0: PROTECTED_KW@143..153 "protected" [] [Whitespace(" ")]
1: JS_LITERAL_MEMBER_NAME@153..158
0: IDENT@153..158 "base1" [] []
2: SEMICOLON@158..159 ";" [] []
2: JS_BOGUS_MEMBER@159..189
0: JS_PROPERTY_MODIFIER_LIST@159..179
0: JS_STATIC_MODIFIER@159..171
0: STATIC_KW@159..171 "static" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")]
1: TS_ACCESSIBILITY_MODIFIER@171..179
0: PRIVATE_KW@171..179 "private" [] [Whitespace(" ")]
1: JS_LITERAL_MEMBER_NAME@179..180
0: IDENT@179..180 "b" [] []
2: TS_TYPE_ANNOTATION@180..188
0: COLON@180..182 ":" [] [Whitespace(" ")]
1: TS_STRING_TYPE@182..188
0: STRING_KW@182..188 "string" [] []
3: SEMICOLON@188..189 ";" [] []
3: JS_BOGUS_MEMBER@189..223
0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@189..213
0: TS_ABSTRACT_MODIFIER@189..203
0: ABSTRACT_KW@189..203 "abstract" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")]
1: TS_ACCESSIBILITY_MODIFIER@203..213
0: PROTECTED_KW@203..213 "protected" [] [Whitespace(" ")]
1: JS_LITERAL_MEMBER_NAME@213..214
0: IDENT@213..214 "d" [] []
2: TS_TYPE_ANNOTATION@214..222
0: COLON@214..216 ":" [] [Whitespace(" ")]
1: TS_STRING_TYPE@216..222
0: STRING_KW@216..222 "string" [] []
3: SEMICOLON@222..223 ";" [] []
4: JS_BOGUS_MEMBER@223..268
0: JS_PROPERTY_MODIFIER_LIST@223..258
0: TS_READONLY_MODIFIER@223..251
0: READONLY_KW@223..251 "readonly" [Newline("\n"), Whitespace(" "), Comments("// Static"), Newline("\n"), Whitespace(" ")] [Whitespace(" ")]
1: JS_STATIC_MODIFIER@251..258
0: STATIC_KW@251..258 "static" [] [Whitespace(" ")]
1: JS_LITERAL_MEMBER_NAME@258..259
0: IDENT@258..259 "c" [] []
2: TS_TYPE_ANNOTATION@259..267
0: COLON@259..261 ":" [] [Whitespace(" ")]
1: TS_STRING_TYPE@261..267
0: STRING_KW@261..267 "string" [] []
3: SEMICOLON@267..268 ";" [] []
5: JS_BOGUS_MEMBER@268..299
0: JS_PROPERTY_MODIFIER_LIST@268..289
0: JS_ACCESSOR_MODIFIER@268..282
0: ACCESSOR_KW@268..282 "accessor" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")]
1: JS_STATIC_MODIFIER@282..289
0: STATIC_KW@282..289 "static" [] [Whitespace(" ")]
1: JS_LITERAL_MEMBER_NAME@289..290
0: IDENT@289..290 "d" [] []
2: TS_TYPE_ANNOTATION@290..298
0: COLON@290..292 ":" [] [Whitespace(" ")]
1: TS_STRING_TYPE@292..298
0: STRING_KW@292..298 "string" [] []
3: SEMICOLON@298..299 ";" [] []
6: JS_BOGUS_MEMBER@299..334
0: JS_PROPERTY_MODIFIER_LIST@299..320
0: TS_OVERRIDE_MODIFIER@299..313
0: OVERRIDE_KW@299..313 "override" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")]
1: JS_STATIC_MODIFIER@313..320
0: STATIC_KW@313..320 "static" [] [Whitespace(" ")]
1: JS_LITERAL_MEMBER_NAME@320..325
0: IDENT@320..325 "base2" [] []
2: TS_TYPE_ANNOTATION@325..333
0: COLON@325..327 ":" [] [Whitespace(" ")]
1: TS_STRING_TYPE@327..333
0: STRING_KW@327..333 "string" [] []
3: SEMICOLON@333..334 ";" [] []
7: JS_BOGUS_MEMBER@334..383
0: JS_PROPERTY_MODIFIER_LIST@334..373
0: TS_READONLY_MODIFIER@334..364
0: READONLY_KW@334..364 "readonly" [Newline("\n"), Whitespace(" "), Comments("// Accessor"), Newline("\n"), Whitespace(" ")] [Whitespace(" ")]
1: JS_ACCESSOR_MODIFIER@364..373
0: ACCESSOR_KW@364..373 "accessor" [] [Whitespace(" ")]
1: JS_LITERAL_MEMBER_NAME@373..374
0: IDENT@373..374 "e" [] []
2: TS_TYPE_ANNOTATION@374..382
0: COLON@374..376 ":" [] [Whitespace(" ")]
1: TS_STRING_TYPE@376..382
0: STRING_KW@376..382 "string" [] []
3: SEMICOLON@382..383 ";" [] []
8: JS_BOGUS_MEMBER@383..416
0: JS_PROPERTY_MODIFIER_LIST@383..406
0: TS_OVERRIDE_MODIFIER@383..397
0: OVERRIDE_KW@383..397 "override" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")]
1: JS_ACCESSOR_MODIFIER@397..406
0: ACCESSOR_KW@397..406 "accessor" [] [Whitespace(" ")]
1: JS_LITERAL_MEMBER_NAME@406..407
0: IDENT@406..407 "f" [] []
2: TS_TYPE_ANNOTATION@407..415
0: COLON@407..409 ":" [] [Whitespace(" ")]
1: TS_STRING_TYPE@409..415
0: STRING_KW@409..415 "string" [] []
3: SEMICOLON@415..416 ";" [] []
9: JS_BOGUS_MEMBER@416..469
0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@416..455
0: TS_OVERRIDE_MODIFIER@416..446
0: OVERRIDE_KW@416..446 "override" [Newline("\n"), Whitespace(" "), Comments("// abstract"), Newline("\n"), Whitespace(" ")] [Whitespace(" ")]
1: TS_ABSTRACT_MODIFIER@446..455
0: ABSTRACT_KW@446..455 "abstract" [] [Whitespace(" ")]
1: JS_LITERAL_MEMBER_NAME@455..460
0: IDENT@455..460 "base3" [] []
2: TS_TYPE_ANNOTATION@460..468
0: COLON@460..462 ":" [] [Whitespace(" ")]
1: TS_STRING_TYPE@462..468
0: STRING_KW@462..468 "string" [] []
3: SEMICOLON@468..469 ";" [] []
10: JS_BOGUS_MEMBER@469..522
0: JS_PROPERTY_MODIFIER_LIST@469..508
0: TS_READONLY_MODIFIER@469..499
0: READONLY_KW@469..499 "readonly" [Newline("\n"), Whitespace(" "), Comments("// override"), Newline("\n"), Whitespace(" ")] [Whitespace(" ")]
1: TS_OVERRIDE_MODIFIER@499..508
0: OVERRIDE_KW@499..508 "override" [] [Whitespace(" ")]
1: JS_LITERAL_MEMBER_NAME@508..513
0: IDENT@508..513 "base4" [] []
2: TS_TYPE_ANNOTATION@513..521
0: COLON@513..515 ":" [] [Whitespace(" ")]
1: TS_STRING_TYPE@515..521
0: STRING_KW@515..521 "string" [] []
3: SEMICOLON@521..522 ";" [] []
9: R_CURLY@522..524 "}" [Newline("\n")] []
4: EOF@524..525 "" [Newline("\n")] []
--
ts_class_modifier_precedence.ts:4:14 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× 'private' must precede 'readonly'
2 │ abstract class Test extends Base {
3 │ // Accessibility
> 4 │ readonly private a: string;
│ ^^^^^^^
5 │ override protected base1;
6 │ static private b: string;
i move this modifier
2 │ abstract class Test extends Base {
3 │ // Accessibility
> 4 │ readonly private a: string;
│ ^^^^^^^
5 │ override protected base1;
6 │ static private b: string;
i before this modifier
2 │ abstract class Test extends Base {
3 │ // Accessibility
> 4 │ readonly private a: string;
│ ^^^^^^^^
5 │ override protected base1;
6 │ static private b: string;
--
ts_class_modifier_precedence.ts:5:14 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× 'protected' must precede 'override'
3 │ // Accessibility
4 │ readonly private a: string;
> 5 │ override protected base1;
│ ^^^^^^^^^
6 │ static private b: string;
7 │ abstract protected d: string;
i move this modifier
3 │ // Accessibility
4 │ readonly private a: string;
> 5 │ override protected base1;
│ ^^^^^^^^^
6 │ static private b: string;
7 │ abstract protected d: string;
i before this modifier
3 │ // Accessibility
4 │ readonly private a: string;
> 5 │ override protected base1;
│ ^^^^^^^^
6 │ static private b: string;
7 │ abstract protected d: string;
--
ts_class_modifier_precedence.ts:6:12 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× 'private' must precede 'static'
4 │ readonly private a: string;
5 │ override protected base1;
> 6 │ static private b: string;
│ ^^^^^^^
7 │ abstract protected d: string;
8 │ // Static
i move this modifier
4 │ readonly private a: string;
5 │ override protected base1;
> 6 │ static private b: string;
│ ^^^^^^^
7 │ abstract protected d: string;
8 │ // Static
i before this modifier
4 │ readonly private a: string;
5 │ override protected base1;
> 6 │ static private b: string;
│ ^^^^^^
7 │ abstract protected d: string;
8 │ // Static
--
ts_class_modifier_precedence.ts:7:14 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× 'protected' must precede 'abstract'
5 │ override protected base1;
6 │ static private b: string;
> 7 │ abstract protected d: string;
│ ^^^^^^^^^
8 │ // Static
9 │ readonly static c: string;
i move this modifier
5 │ override protected base1;
6 │ static private b: string;
> 7 │ abstract protected d: string;
│ ^^^^^^^^^
8 │ // Static
9 │ readonly static c: string;
i before this modifier
5 │ override protected base1;
6 │ static private b: string;
> 7 │ abstract protected d: string;
│ ^^^^^^^^
8 │ // Static
9 │ readonly static c: string;
--
ts_class_modifier_precedence.ts:9:14 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× 'static' must precede 'readonly'
7 │ abstract protected d: string;
8 │ // Static
> 9 │ readonly static c: string;
│ ^^^^^^
10 │ accessor static d: string;
11 │ override static base2: string;
i move this modifier
7 │ abstract protected d: string;
8 │ // Static
> 9 │ readonly static c: string;
│ ^^^^^^
10 │ accessor static d: string;
11 │ override static base2: string;
i before this modifier
7 │ abstract protected d: string;
8 │ // Static
> 9 │ readonly static c: string;
│ ^^^^^^^^
10 │ accessor static d: string;
11 │ override static base2: string;
--
ts_class_modifier_precedence.ts:10:14 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× 'static' must precede 'accessor'
8 │ // Static
9 │ readonly static c: string;
> 10 │ accessor static d: string;
│ ^^^^^^
11 │ override static base2: string;
12 │ // Accessor
i move this modifier
8 │ // Static
9 │ readonly static c: string;
> 10 │ accessor static d: string;
│ ^^^^^^
11 │ override static base2: string;
12 │ // Accessor
i before this modifier
8 │ // Static
9 │ readonly static c: string;
> 10 │ accessor static d: string;
│ ^^^^^^^^
11 │ override static base2: string;
12 │ // Accessor
--
ts_class_modifier_precedence.ts:11:14 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× 'static' must precede 'override'
9 │ readonly static c: string;
10 │ accessor static d: string;
> 11 │ override static base2: string;
│ ^^^^^^
12 │ // Accessor
13 │ readonly accessor e: string;
i move this modifier
9 │ readonly static c: string;
10 │ accessor static d: string;
> 11 │ override static base2: string;
│ ^^^^^^
12 │ // Accessor
13 │ readonly accessor e: string;
i before this modifier
9 │ readonly static c: string;
10 │ accessor static d: string;
> 11 │ override static base2: string;
│ ^^^^^^^^
12 │ // Accessor
13 │ readonly accessor e: string;
--
ts_class_modifier_precedence.ts:13:14 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× 'accessor' must precede 'readonly'
11 │ override static base2: string;
12 │ // Accessor
> 13 │ readonly accessor e: string;
│ ^^^^^^^^
14 │ override accessor f: string;
15 │ // abstract
i move this modifier
11 │ override static base2: string;
12 │ // Accessor
> 13 │ readonly accessor e: string;
│ ^^^^^^^^
14 │ override accessor f: string;
15 │ // abstract
i before this modifier
11 │ override static base2: string;
12 │ // Accessor
> 13 │ readonly accessor e: string;
│ ^^^^^^^^
14 │ override accessor f: string;
15 │ // abstract
--
ts_class_modifier_precedence.ts:14:14 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× 'accessor' cannot be used with 'override' modifier.
12 │ // Accessor
13 │ readonly accessor e: string;
> 14 │ override accessor f: string;
│ ^^^^^^^^
15 │ // abstract
16 │ override abstract base3: string;
i 'accessor' modifier
12 │ // Accessor
13 │ readonly accessor e: string;
> 14 │ override accessor f: string;
│ ^^^^^^^^
15 │ // abstract
16 │ override abstract base3: string;
i 'override' modifier
12 │ // Accessor
13 │ readonly accessor e: string;
> 14 │ override accessor f: string;
│ ^^^^^^^^
15 │ // abstract
16 │ override abstract base3: string;
--
ts_class_modifier_precedence.ts:16:14 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× 'abstract' must precede 'override'
14 │ override accessor f: string;
15 │ // abstract
> 16 │ override abstract base3: string;
│ ^^^^^^^^
17 │ // override
18 │ readonly override base4: string;
i move this modifier
14 │ override accessor f: string;
15 │ // abstract
> 16 │ override abstract base3: string;
│ ^^^^^^^^
17 │ // override
18 │ readonly override base4: string;
i before this modifier
14 │ override accessor f: string;
15 │ // abstract
> 16 │ override abstract base3: string;
│ ^^^^^^^^
17 │ // override
18 │ readonly override base4: string;
--
ts_class_modifier_precedence.ts:18:14 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× 'override' must precede 'readonly'
16 │ override abstract base3: string;
17 │ // override
> 18 │ readonly override base4: string;
│ ^^^^^^^^
19 │ }
20 │
i move this modifier
16 │ override abstract base3: string;
17 │ // override
> 18 │ readonly override base4: string;
│ ^^^^^^^^
19 │ }
20 │
i before this modifier
16 │ override abstract base3: string;
17 │ // override
> 18 │ readonly override base4: string;
│ ^^^^^^^^
19 │ }
20 │
--
class Base { base1; base2; base3; base4;}
abstract class Test extends Base {
// Accessibility
readonly private a: string;
override protected base1;
static private b: string;
abstract protected d: string;
// Static
readonly static c: string;
accessor static d: string;
override static base2: string;
// Accessor
readonly accessor e: string;
override accessor f: string;
// abstract
override abstract base3: string;
// override
readonly override base4: string;
}