From ba7fd5e42e32dc22afd17d269e206b5d0d2f8489 Mon Sep 17 00:00:00 2001 From: IWANABETHATGUY Date: Thu, 4 Aug 2022 17:27:39 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20init?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/generated/node_factory.rs | 8 +++ .../src/generated/syntax_factory.rs | 9 ++- .../inline/err/ts_abstract_member_ansi.rast | 2 + ...act_property_cannot_have_initiliazers.rast | 42 ++++++------ ..._property_initializer_ambient_context.rast | 66 ++++++++++--------- .../inline/ok/ts_abstract_classes.rast | 4 +- .../ts_abstract_property_can_be_optional.rast | 4 +- .../ts_class_property_member_modifiers.rast | 36 +++++++--- .../inline/ok/ts_decorated_class_members.rast | 4 +- crates/rome_js_syntax/src/generated/nodes.rs | 6 +- .../rome_js_syntax/src/generated/nodes_mut.rs | 8 ++- xtask/codegen/js.ungram | 1 + 12 files changed, 122 insertions(+), 68 deletions(-) diff --git a/crates/rome_js_factory/src/generated/node_factory.rs b/crates/rome_js_factory/src/generated/node_factory.rs index 6dcb4ae8309..fcfc45b505b 100644 --- a/crates/rome_js_factory/src/generated/node_factory.rs +++ b/crates/rome_js_factory/src/generated/node_factory.rs @@ -5557,6 +5557,7 @@ pub fn ts_property_signature_class_member( modifiers, name, property_annotation: None, + value: None, semicolon_token: None, } } @@ -5564,6 +5565,7 @@ pub struct TsPropertySignatureClassMemberBuilder { modifiers: TsPropertySignatureModifierList, name: JsAnyClassMemberName, property_annotation: Option, + value: Option, semicolon_token: Option, } impl TsPropertySignatureClassMemberBuilder { @@ -5574,6 +5576,10 @@ impl TsPropertySignatureClassMemberBuilder { self.property_annotation = Some(property_annotation); self } + pub fn with_value(mut self, value: JsInitializerClause) -> Self { + self.value = Some(value); + self + } pub fn with_semicolon_token(mut self, semicolon_token: SyntaxToken) -> Self { self.semicolon_token = Some(semicolon_token); self @@ -5586,6 +5592,8 @@ impl TsPropertySignatureClassMemberBuilder { Some(SyntaxElement::Node(self.name.into_syntax())), self.property_annotation .map(|token| SyntaxElement::Node(token.into_syntax())), + self.value + .map(|token| SyntaxElement::Node(token.into_syntax())), self.semicolon_token .map(|token| SyntaxElement::Token(token)), ], diff --git a/crates/rome_js_factory/src/generated/syntax_factory.rs b/crates/rome_js_factory/src/generated/syntax_factory.rs index 790ea62c5bf..a26c60df57e 100644 --- a/crates/rome_js_factory/src/generated/syntax_factory.rs +++ b/crates/rome_js_factory/src/generated/syntax_factory.rs @@ -8423,7 +8423,7 @@ impl SyntaxFactory for JsSyntaxFactory { } TS_PROPERTY_SIGNATURE_CLASS_MEMBER => { let mut elements = (&children).into_iter(); - let mut slots: RawNodeSlots<4usize> = RawNodeSlots::default(); + let mut slots: RawNodeSlots<5usize> = RawNodeSlots::default(); let mut current_element = elements.next(); if let Some(element) = ¤t_element { if TsPropertySignatureModifierList::can_cast(element.kind()) { @@ -8446,6 +8446,13 @@ impl SyntaxFactory for JsSyntaxFactory { } } slots.next_slot(); + if let Some(element) = ¤t_element { + if JsInitializerClause::can_cast(element.kind()) { + slots.mark_present(); + current_element = elements.next(); + } + } + slots.next_slot(); if let Some(element) = ¤t_element { if element.kind() == T ! [;] { slots.mark_present(); diff --git a/crates/rome_js_parser/test_data/inline/err/ts_abstract_member_ansi.rast b/crates/rome_js_parser/test_data/inline/err/ts_abstract_member_ansi.rast index adf7414f58c..3803415eb50 100644 --- a/crates/rome_js_parser/test_data/inline/err/ts_abstract_member_ansi.rast +++ b/crates/rome_js_parser/test_data/inline/err/ts_abstract_member_ansi.rast @@ -99,6 +99,7 @@ JsModule { value: IDENT@118..123 "prop" [] [Whitespace(" ")], }, property_annotation: missing (optional), + value: missing (optional), semicolon_token: missing (optional), }, ], @@ -182,6 +183,7 @@ JsModule { 0: IDENT@118..123 "prop" [] [Whitespace(" ")] 2: (empty) 3: (empty) + 4: (empty) 8: R_CURLY@123..124 "}" [] [] 3: EOF@124..125 "" [Newline("\n")] [] -- diff --git a/crates/rome_js_parser/test_data/inline/err/ts_abstract_property_cannot_have_initiliazers.rast b/crates/rome_js_parser/test_data/inline/err/ts_abstract_property_cannot_have_initiliazers.rast index 7853b698c76..181778fb4b3 100644 --- a/crates/rome_js_parser/test_data/inline/err/ts_abstract_property_cannot_have_initiliazers.rast +++ b/crates/rome_js_parser/test_data/inline/err/ts_abstract_property_cannot_have_initiliazers.rast @@ -13,30 +13,28 @@ JsModule { implements_clause: missing (optional), l_curly_token: L_CURLY@17..18 "{" [] [], members: JsClassMemberList [ - JsUnknownMember { - items: [ - TsPropertySignatureModifierList [ - TsAbstractModifier { - modifier_token: ABSTRACT_KW@18..32 "abstract" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], - }, - ], - JsLiteralMemberName { - value: IDENT@32..36 "name" [] [], + TsPropertySignatureClassMember { + modifiers: TsPropertySignatureModifierList [ + TsAbstractModifier { + modifier_token: ABSTRACT_KW@18..32 "abstract" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], }, - TsTypeAnnotation { - colon_token: COLON@36..38 ":" [] [Whitespace(" ")], - ty: TsStringType { - string_token: STRING_KW@38..45 "string" [] [Whitespace(" ")], - }, + ], + name: JsLiteralMemberName { + value: IDENT@32..36 "name" [] [], + }, + property_annotation: TsTypeAnnotation { + colon_token: COLON@36..38 ":" [] [Whitespace(" ")], + ty: TsStringType { + string_token: STRING_KW@38..45 "string" [] [Whitespace(" ")], }, - JsInitializerClause { - eq_token: EQ@45..47 "=" [] [Whitespace(" ")], - expression: JsStringLiteralExpression { - value_token: JS_STRING_LITERAL@47..49 "\"\"" [] [], - }, + }, + value: JsInitializerClause { + eq_token: EQ@45..47 "=" [] [Whitespace(" ")], + expression: JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@47..49 "\"\"" [] [], }, - SEMICOLON@49..50 ";" [] [], - ], + }, + semicolon_token: SEMICOLON@49..50 ";" [] [], }, ], r_curly_token: R_CURLY@50..52 "}" [Newline("\n")] [], @@ -59,7 +57,7 @@ JsModule { 5: (empty) 6: L_CURLY@17..18 "{" [] [] 7: JS_CLASS_MEMBER_LIST@18..50 - 0: JS_UNKNOWN_MEMBER@18..50 + 0: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@18..50 0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@18..32 0: TS_ABSTRACT_MODIFIER@18..32 0: ABSTRACT_KW@18..32 "abstract" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] diff --git a/crates/rome_js_parser/test_data/inline/err/ts_property_initializer_ambient_context.rast b/crates/rome_js_parser/test_data/inline/err/ts_property_initializer_ambient_context.rast index b2c148ae63c..7d6fb7371bb 100644 --- a/crates/rome_js_parser/test_data/inline/err/ts_property_initializer_ambient_context.rast +++ b/crates/rome_js_parser/test_data/inline/err/ts_property_initializer_ambient_context.rast @@ -15,19 +15,19 @@ JsModule { implements_clause: missing (optional), l_curly_token: L_CURLY@16..18 "{" [] [Whitespace(" ")], members: JsClassMemberList [ - JsUnknownMember { - items: [ - TsPropertySignatureModifierList [], - JsLiteralMemberName { - value: IDENT@18..23 "prop" [] [Whitespace(" ")], - }, - JsInitializerClause { - eq_token: EQ@23..25 "=" [] [Whitespace(" ")], - expression: JsStringLiteralExpression { - value_token: JS_STRING_LITERAL@25..32 "\"test\"" [] [Whitespace(" ")], - }, + TsPropertySignatureClassMember { + modifiers: TsPropertySignatureModifierList [], + name: JsLiteralMemberName { + value: IDENT@18..23 "prop" [] [Whitespace(" ")], + }, + property_annotation: missing (optional), + value: JsInitializerClause { + eq_token: EQ@23..25 "=" [] [Whitespace(" ")], + expression: JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@25..32 "\"test\"" [] [Whitespace(" ")], }, - ], + }, + semicolon_token: missing (optional), }, ], r_curly_token: R_CURLY@32..33 "}" [] [], @@ -44,23 +44,23 @@ JsModule { implements_clause: missing (optional), l_curly_token: L_CURLY@42..44 "{" [] [Whitespace(" ")], members: JsClassMemberList [ - JsUnknownMember { - items: [ - TsPropertySignatureModifierList [ - TsDeclareModifier { - modifier_token: DECLARE_KW@44..52 "declare" [] [Whitespace(" ")], - }, - ], - JsLiteralMemberName { - value: IDENT@52..57 "prop" [] [Whitespace(" ")], - }, - JsInitializerClause { - eq_token: EQ@57..59 "=" [] [Whitespace(" ")], - expression: JsStringLiteralExpression { - value_token: JS_STRING_LITERAL@59..66 "\"test\"" [] [Whitespace(" ")], - }, + TsPropertySignatureClassMember { + modifiers: TsPropertySignatureModifierList [ + TsDeclareModifier { + modifier_token: DECLARE_KW@44..52 "declare" [] [Whitespace(" ")], }, ], + name: JsLiteralMemberName { + value: IDENT@52..57 "prop" [] [Whitespace(" ")], + }, + property_annotation: missing (optional), + value: JsInitializerClause { + eq_token: EQ@57..59 "=" [] [Whitespace(" ")], + expression: JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@59..66 "\"test\"" [] [Whitespace(" ")], + }, + }, + semicolon_token: missing (optional), }, ], r_curly_token: R_CURLY@66..67 "}" [] [], @@ -85,14 +85,16 @@ JsModule { 5: (empty) 6: L_CURLY@16..18 "{" [] [Whitespace(" ")] 7: JS_CLASS_MEMBER_LIST@18..32 - 0: JS_UNKNOWN_MEMBER@18..32 + 0: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@18..32 0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@18..18 1: JS_LITERAL_MEMBER_NAME@18..23 0: IDENT@18..23 "prop" [] [Whitespace(" ")] - 2: JS_INITIALIZER_CLAUSE@23..32 + 2: (empty) + 3: JS_INITIALIZER_CLAUSE@23..32 0: EQ@23..25 "=" [] [Whitespace(" ")] 1: JS_STRING_LITERAL_EXPRESSION@25..32 0: JS_STRING_LITERAL@25..32 "\"test\"" [] [Whitespace(" ")] + 4: (empty) 8: R_CURLY@32..33 "}" [] [] 1: JS_CLASS_DECLARATION@33..67 0: (empty) @@ -104,16 +106,18 @@ JsModule { 5: (empty) 6: L_CURLY@42..44 "{" [] [Whitespace(" ")] 7: JS_CLASS_MEMBER_LIST@44..66 - 0: JS_UNKNOWN_MEMBER@44..66 + 0: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@44..66 0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@44..52 0: TS_DECLARE_MODIFIER@44..52 0: DECLARE_KW@44..52 "declare" [] [Whitespace(" ")] 1: JS_LITERAL_MEMBER_NAME@52..57 0: IDENT@52..57 "prop" [] [Whitespace(" ")] - 2: JS_INITIALIZER_CLAUSE@57..66 + 2: (empty) + 3: JS_INITIALIZER_CLAUSE@57..66 0: EQ@57..59 "=" [] [Whitespace(" ")] 1: JS_STRING_LITERAL_EXPRESSION@59..66 0: JS_STRING_LITERAL@59..66 "\"test\"" [] [Whitespace(" ")] + 4: (empty) 8: R_CURLY@66..67 "}" [] [] 3: EOF@67..68 "" [Newline("\n")] [] -- diff --git a/crates/rome_js_parser/test_data/inline/ok/ts_abstract_classes.rast b/crates/rome_js_parser/test_data/inline/ok/ts_abstract_classes.rast index 27e590b4684..5f522811543 100644 --- a/crates/rome_js_parser/test_data/inline/ok/ts_abstract_classes.rast +++ b/crates/rome_js_parser/test_data/inline/ok/ts_abstract_classes.rast @@ -287,6 +287,7 @@ JsModule { string_token: STRING_KW@349..355 "string" [] [], }, }, + value: missing (optional), semicolon_token: SEMICOLON@355..356 ";" [] [], }, TsMethodSignatureClassMember { @@ -563,7 +564,8 @@ JsModule { 0: COLON@347..349 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@349..355 0: STRING_KW@349..355 "string" [] [] - 3: SEMICOLON@355..356 ";" [] [] + 3: (empty) + 4: SEMICOLON@355..356 ";" [] [] 1: TS_METHOD_SIGNATURE_CLASS_MEMBER@356..380 0: TS_METHOD_SIGNATURE_MODIFIER_LIST@356..370 0: TS_ABSTRACT_MODIFIER@356..370 diff --git a/crates/rome_js_parser/test_data/inline/ok/ts_abstract_property_can_be_optional.rast b/crates/rome_js_parser/test_data/inline/ok/ts_abstract_property_can_be_optional.rast index f40f9544085..6e25d76fc15 100644 --- a/crates/rome_js_parser/test_data/inline/ok/ts_abstract_property_can_be_optional.rast +++ b/crates/rome_js_parser/test_data/inline/ok/ts_abstract_property_can_be_optional.rast @@ -31,6 +31,7 @@ JsModule { }, }, }, + value: missing (optional), semicolon_token: SEMICOLON@46..47 ";" [] [], }, ], @@ -66,6 +67,7 @@ JsModule { 0: COLON@38..40 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@40..46 0: STRING_KW@40..46 "string" [] [] - 3: SEMICOLON@46..47 ";" [] [] + 3: (empty) + 4: SEMICOLON@46..47 ";" [] [] 8: R_CURLY@47..49 "}" [Newline("\n")] [] 3: EOF@49..50 "" [Newline("\n")] [] diff --git a/crates/rome_js_parser/test_data/inline/ok/ts_class_property_member_modifiers.rast b/crates/rome_js_parser/test_data/inline/ok/ts_class_property_member_modifiers.rast index 6840483ba8c..91b057eef78 100644 --- a/crates/rome_js_parser/test_data/inline/ok/ts_class_property_member_modifiers.rast +++ b/crates/rome_js_parser/test_data/inline/ok/ts_class_property_member_modifiers.rast @@ -59,6 +59,7 @@ JsModule { string_token: STRING_KW@74..80 "string" [] [], }, }, + value: missing (optional), semicolon_token: SEMICOLON@80..81 ";" [] [], }, TsPropertySignatureClassMember { @@ -79,6 +80,7 @@ JsModule { string_token: STRING_KW@105..111 "string" [] [], }, }, + value: missing (optional), semicolon_token: SEMICOLON@111..112 ";" [] [], }, TsPropertySignatureClassMember { @@ -99,6 +101,7 @@ JsModule { string_token: STRING_KW@136..142 "string" [] [], }, }, + value: missing (optional), semicolon_token: SEMICOLON@142..143 ";" [] [], }, TsPropertySignatureClassMember { @@ -122,6 +125,7 @@ JsModule { string_token: STRING_KW@176..182 "string" [] [], }, }, + value: missing (optional), semicolon_token: SEMICOLON@182..183 ";" [] [], }, TsPropertySignatureClassMember { @@ -145,6 +149,7 @@ JsModule { string_token: STRING_KW@216..222 "string" [] [], }, }, + value: missing (optional), semicolon_token: SEMICOLON@222..223 ";" [] [], }, TsPropertySignatureClassMember { @@ -171,6 +176,7 @@ JsModule { string_token: STRING_KW@263..269 "string" [] [], }, }, + value: missing (optional), semicolon_token: SEMICOLON@269..270 ";" [] [], }, TsPropertySignatureClassMember { @@ -197,6 +203,7 @@ JsModule { string_token: STRING_KW@310..316 "string" [] [], }, }, + value: missing (optional), semicolon_token: SEMICOLON@316..317 ";" [] [], }, TsPropertySignatureClassMember { @@ -220,6 +227,7 @@ JsModule { string_token: STRING_KW@353..359 "string" [] [], }, }, + value: missing (optional), semicolon_token: SEMICOLON@359..360 ";" [] [], }, TsPropertySignatureClassMember { @@ -243,6 +251,7 @@ JsModule { string_token: STRING_KW@396..402 "string" [] [], }, }, + value: missing (optional), semicolon_token: SEMICOLON@402..403 ";" [] [], }, JsPropertyClassMember { @@ -323,7 +332,8 @@ JsModule { 0: COLON@72..74 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@74..80 0: STRING_KW@74..80 "string" [] [] - 3: SEMICOLON@80..81 ";" [] [] + 3: (empty) + 4: SEMICOLON@80..81 ";" [] [] 1: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@81..112 0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@81..102 0: TS_ACCESSIBILITY_MODIFIER@81..94 @@ -336,7 +346,8 @@ JsModule { 0: COLON@103..105 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@105..111 0: STRING_KW@105..111 "string" [] [] - 3: SEMICOLON@111..112 ";" [] [] + 3: (empty) + 4: SEMICOLON@111..112 ";" [] [] 2: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@112..143 0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@112..133 0: TS_DECLARE_MODIFIER@112..125 @@ -349,7 +360,8 @@ JsModule { 0: COLON@134..136 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@136..142 0: STRING_KW@136..142 "string" [] [] - 3: SEMICOLON@142..143 ";" [] [] + 3: (empty) + 4: SEMICOLON@142..143 ";" [] [] 3: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@143..183 0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@143..173 0: TS_DECLARE_MODIFIER@143..156 @@ -364,7 +376,8 @@ JsModule { 0: COLON@174..176 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@176..182 0: STRING_KW@176..182 "string" [] [] - 3: SEMICOLON@182..183 ";" [] [] + 3: (empty) + 4: SEMICOLON@182..183 ";" [] [] 4: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@183..223 0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@183..213 0: TS_ACCESSIBILITY_MODIFIER@183..196 @@ -379,7 +392,8 @@ JsModule { 0: COLON@214..216 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@216..222 0: STRING_KW@216..222 "string" [] [] - 3: SEMICOLON@222..223 ";" [] [] + 3: (empty) + 4: SEMICOLON@222..223 ";" [] [] 5: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@223..270 0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@223..260 0: TS_DECLARE_MODIFIER@223..236 @@ -396,7 +410,8 @@ JsModule { 0: COLON@261..263 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@263..269 0: STRING_KW@263..269 "string" [] [] - 3: SEMICOLON@269..270 ";" [] [] + 3: (empty) + 4: SEMICOLON@269..270 ";" [] [] 6: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@270..317 0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@270..307 0: TS_ACCESSIBILITY_MODIFIER@270..283 @@ -413,7 +428,8 @@ JsModule { 0: COLON@308..310 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@310..316 0: STRING_KW@310..316 "string" [] [] - 3: SEMICOLON@316..317 ";" [] [] + 3: (empty) + 4: SEMICOLON@316..317 ";" [] [] 7: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@317..360 0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@317..350 0: TS_ACCESSIBILITY_MODIFIER@317..332 @@ -428,7 +444,8 @@ JsModule { 0: COLON@351..353 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@353..359 0: STRING_KW@353..359 "string" [] [] - 3: SEMICOLON@359..360 ";" [] [] + 3: (empty) + 4: SEMICOLON@359..360 ";" [] [] 8: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@360..403 0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@360..393 0: TS_ACCESSIBILITY_MODIFIER@360..375 @@ -443,7 +460,8 @@ JsModule { 0: COLON@394..396 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@396..402 0: STRING_KW@396..402 "string" [] [] - 3: SEMICOLON@402..403 ";" [] [] + 3: (empty) + 4: SEMICOLON@402..403 ";" [] [] 9: JS_PROPERTY_CLASS_MEMBER@403..450 0: JS_PROPERTY_MODIFIER_LIST@403..436 0: TS_ACCESSIBILITY_MODIFIER@403..418 diff --git a/crates/rome_js_parser/test_data/inline/ok/ts_decorated_class_members.rast b/crates/rome_js_parser/test_data/inline/ok/ts_decorated_class_members.rast index c3028884ded..6909634a4eb 100644 --- a/crates/rome_js_parser/test_data/inline/ok/ts_decorated_class_members.rast +++ b/crates/rome_js_parser/test_data/inline/ok/ts_decorated_class_members.rast @@ -115,6 +115,7 @@ JsModule { value: IDENT@145..149 "prop" [] [], }, property_annotation: missing (optional), + value: missing (optional), semicolon_token: SEMICOLON@149..150 ";" [] [], }, ], @@ -217,6 +218,7 @@ JsModule { 1: JS_LITERAL_MEMBER_NAME@145..149 0: IDENT@145..149 "prop" [] [] 2: (empty) - 3: SEMICOLON@149..150 ";" [] [] + 3: (empty) + 4: SEMICOLON@149..150 ";" [] [] 8: R_CURLY@150..152 "}" [Newline("\n")] [] 3: EOF@152..153 "" [Newline("\n")] [] diff --git a/crates/rome_js_syntax/src/generated/nodes.rs b/crates/rome_js_syntax/src/generated/nodes.rs index 076314e6f28..a291d09a35d 100644 --- a/crates/rome_js_syntax/src/generated/nodes.rs +++ b/crates/rome_js_syntax/src/generated/nodes.rs @@ -10510,6 +10510,7 @@ impl TsPropertySignatureClassMember { modifiers: self.modifiers(), name: self.name(), property_annotation: self.property_annotation(), + value: self.value(), semicolon_token: self.semicolon_token(), } } @@ -10522,7 +10523,8 @@ impl TsPropertySignatureClassMember { pub fn property_annotation(&self) -> Option { support::node(&self.syntax, 2usize) } - pub fn semicolon_token(&self) -> Option { support::token(&self.syntax, 3usize) } + pub fn value(&self) -> Option { support::node(&self.syntax, 3usize) } + pub fn semicolon_token(&self) -> Option { support::token(&self.syntax, 4usize) } } #[cfg(feature = "serde")] impl Serialize for TsPropertySignatureClassMember { @@ -10538,6 +10540,7 @@ pub struct TsPropertySignatureClassMemberFields { pub modifiers: TsPropertySignatureModifierList, pub name: SyntaxResult, pub property_annotation: Option, + pub value: Option, pub semicolon_token: Option, } #[derive(Clone, PartialEq, Eq, Hash)] @@ -23313,6 +23316,7 @@ impl std::fmt::Debug for TsPropertySignatureClassMember { "property_annotation", &support::DebugOptionalElement(self.property_annotation()), ) + .field("value", &support::DebugOptionalElement(self.value())) .field( "semicolon_token", &support::DebugOptionalElement(self.semicolon_token()), diff --git a/crates/rome_js_syntax/src/generated/nodes_mut.rs b/crates/rome_js_syntax/src/generated/nodes_mut.rs index baad0a1a56a..c5e5d0d22c3 100644 --- a/crates/rome_js_syntax/src/generated/nodes_mut.rs +++ b/crates/rome_js_syntax/src/generated/nodes_mut.rs @@ -5202,10 +5202,16 @@ impl TsPropertySignatureClassMember { once(element.map(|element| element.into_syntax().into())), )) } + pub fn with_value(self, element: Option) -> Self { + Self::unwrap_cast(self.syntax.splice_slots( + 3usize..=3usize, + once(element.map(|element| element.into_syntax().into())), + )) + } pub fn with_semicolon_token(self, element: Option) -> Self { Self::unwrap_cast( self.syntax - .splice_slots(3usize..=3usize, once(element.map(|element| element.into()))), + .splice_slots(4usize..=4usize, once(element.map(|element| element.into()))), ) } } diff --git a/xtask/codegen/js.ungram b/xtask/codegen/js.ungram index 8ecd7db14c8..3c04b75baac 100644 --- a/xtask/codegen/js.ungram +++ b/xtask/codegen/js.ungram @@ -719,6 +719,7 @@ TsPropertySignatureClassMember = modifiers: TsPropertySignatureModifierList name: JsAnyClassMemberName property_annotation: TsAnyPropertySignatureAnnotation? + value: JsInitializerClause? ';'? TsPropertySignatureModifierList = TsAnyPropertySignatureModifier* From 467238f06869b2f252cb778c119f9b1c9f54d2ad Mon Sep 17 00:00:00 2001 From: IWANABETHATGUY Date: Thu, 4 Aug 2022 18:13:18 +0800 Subject: [PATCH 2/4] =?UTF-8?q?chore:=20=F0=9F=A4=96=20fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit format --- .../src/utils/assignment_like.rs | 31 +++++++++++++++---- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/crates/rome_js_formatter/src/utils/assignment_like.rs b/crates/rome_js_formatter/src/utils/assignment_like.rs index 2ef15f9a164..5b90a5ce89c 100644 --- a/crates/rome_js_formatter/src/utils/assignment_like.rs +++ b/crates/rome_js_formatter/src/utils/assignment_like.rs @@ -325,8 +325,9 @@ impl JsAnyAssignmentLike { // SAFETY: Calling `unwrap` here is safe because we check `has_only_left_hand_side` variant at the beginning of the `layout` function Ok(n.value().unwrap().into()) } - JsAnyAssignmentLike::TsPropertySignatureClassMember(_) => { - unreachable!("TsPropertySignatureClassMember doesn't have any right side. If you're here, `has_only_left_hand_side` hasn't been called") + JsAnyAssignmentLike::TsPropertySignatureClassMember(property_signature) => { + // SAFETY: Calling `unwrap` here is safe because we check `has_only_left_hand_side` variant at the beginning of the `layout` function + Ok(property_signature.value().unwrap().into()) } } } @@ -452,6 +453,7 @@ impl JsAnyAssignmentLike { name, property_annotation, semicolon_token: _, + value: _, } = property_signature_class_member.as_fields(); write!(f, [modifiers.format(), space(),])?; @@ -499,7 +501,13 @@ impl JsAnyAssignmentLike { Ok(()) } // this variant doesn't have any operator - JsAnyAssignmentLike::TsPropertySignatureClassMember(_) => Ok(()), + JsAnyAssignmentLike::TsPropertySignatureClassMember(property_signature) => { + if let Some(initializer) = property_signature.value() { + let eq_token = initializer.eq_token()?; + write!(f, [space(), eq_token.format()])? + } + Ok(()) + } } } @@ -541,13 +549,22 @@ impl JsAnyAssignmentLike { Ok(()) } // this variant doesn't have any right part - JsAnyAssignmentLike::TsPropertySignatureClassMember(_) => Ok(()), + JsAnyAssignmentLike::TsPropertySignatureClassMember(property_signature) => { + if let Some(initializer) = property_signature.value() { + let expression = initializer.expression()?; + write!(f, [space(), expression.format()])?; + } + Ok(()) + } } } fn write_suppressed_initializer(&self, f: &mut JsFormatter) -> FormatResult<()> { let initializer = match self { JsAnyAssignmentLike::JsPropertyClassMember(class_member) => class_member.value(), + JsAnyAssignmentLike::TsPropertySignatureClassMember(property_signature) => { + property_signature.value() + } JsAnyAssignmentLike::JsVariableDeclarator(variable_declarator) => { variable_declarator.initializer() } @@ -555,8 +572,7 @@ impl JsAnyAssignmentLike { JsAnyAssignmentLike::JsPropertyObjectMember(_) | JsAnyAssignmentLike::JsAssignmentExpression(_) | JsAnyAssignmentLike::JsObjectAssignmentPatternProperty(_) - | JsAnyAssignmentLike::TsTypeAliasDeclaration(_) - | JsAnyAssignmentLike::TsPropertySignatureClassMember(_) => { + | JsAnyAssignmentLike::TsTypeAliasDeclaration(_) => { unreachable!("These variants have no initializer") } }; @@ -667,6 +683,9 @@ impl JsAnyAssignmentLike { declarator.initializer().is_none() } else if let JsAnyAssignmentLike::JsPropertyClassMember(class_member) = self { class_member.value().is_none() + } else if let JsAnyAssignmentLike::TsPropertySignatureClassMember(property_signature) = self + { + property_signature.value().is_none() } else { matches!(self, JsAnyAssignmentLike::TsPropertySignatureClassMember(_)) } From 1d5cf27f72c53354a2ce354d78e24db4e676755d Mon Sep 17 00:00:00 2001 From: IWANABETHATGUY Date: Mon, 3 Oct 2022 19:25:15 +0800 Subject: [PATCH 3/4] =?UTF-8?q?chore:=20=F0=9F=A4=96=20recover?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/rome_js_factory/src/generated/node_factory.rs | 8 -------- crates/rome_js_factory/src/generated/syntax_factory.rs | 9 +-------- crates/rome_js_syntax/src/generated/nodes.rs | 6 +----- crates/rome_js_syntax/src/generated/nodes_mut.rs | 8 +------- xtask/codegen/js.ungram | 1 - 5 files changed, 3 insertions(+), 29 deletions(-) diff --git a/crates/rome_js_factory/src/generated/node_factory.rs b/crates/rome_js_factory/src/generated/node_factory.rs index 34f8da81635..9d617aa2ee9 100644 --- a/crates/rome_js_factory/src/generated/node_factory.rs +++ b/crates/rome_js_factory/src/generated/node_factory.rs @@ -5569,7 +5569,6 @@ pub fn ts_property_signature_class_member( modifiers, name, property_annotation: None, - value: None, semicolon_token: None, } } @@ -5577,7 +5576,6 @@ pub struct TsPropertySignatureClassMemberBuilder { modifiers: TsPropertySignatureModifierList, name: JsAnyClassMemberName, property_annotation: Option, - value: Option, semicolon_token: Option, } impl TsPropertySignatureClassMemberBuilder { @@ -5588,10 +5586,6 @@ impl TsPropertySignatureClassMemberBuilder { self.property_annotation = Some(property_annotation); self } - pub fn with_value(mut self, value: JsInitializerClause) -> Self { - self.value = Some(value); - self - } pub fn with_semicolon_token(mut self, semicolon_token: SyntaxToken) -> Self { self.semicolon_token = Some(semicolon_token); self @@ -5604,8 +5598,6 @@ impl TsPropertySignatureClassMemberBuilder { Some(SyntaxElement::Node(self.name.into_syntax())), self.property_annotation .map(|token| SyntaxElement::Node(token.into_syntax())), - self.value - .map(|token| SyntaxElement::Node(token.into_syntax())), self.semicolon_token .map(|token| SyntaxElement::Token(token)), ], diff --git a/crates/rome_js_factory/src/generated/syntax_factory.rs b/crates/rome_js_factory/src/generated/syntax_factory.rs index a100175391a..e0033f74b61 100644 --- a/crates/rome_js_factory/src/generated/syntax_factory.rs +++ b/crates/rome_js_factory/src/generated/syntax_factory.rs @@ -8449,7 +8449,7 @@ impl SyntaxFactory for JsSyntaxFactory { } TS_PROPERTY_SIGNATURE_CLASS_MEMBER => { let mut elements = (&children).into_iter(); - let mut slots: RawNodeSlots<5usize> = RawNodeSlots::default(); + let mut slots: RawNodeSlots<4usize> = RawNodeSlots::default(); let mut current_element = elements.next(); if let Some(element) = ¤t_element { if TsPropertySignatureModifierList::can_cast(element.kind()) { @@ -8472,13 +8472,6 @@ impl SyntaxFactory for JsSyntaxFactory { } } slots.next_slot(); - if let Some(element) = ¤t_element { - if JsInitializerClause::can_cast(element.kind()) { - slots.mark_present(); - current_element = elements.next(); - } - } - slots.next_slot(); if let Some(element) = ¤t_element { if element.kind() == T ! [;] { slots.mark_present(); diff --git a/crates/rome_js_syntax/src/generated/nodes.rs b/crates/rome_js_syntax/src/generated/nodes.rs index 5c218258550..de017ed048f 100644 --- a/crates/rome_js_syntax/src/generated/nodes.rs +++ b/crates/rome_js_syntax/src/generated/nodes.rs @@ -10549,7 +10549,6 @@ impl TsPropertySignatureClassMember { modifiers: self.modifiers(), name: self.name(), property_annotation: self.property_annotation(), - value: self.value(), semicolon_token: self.semicolon_token(), } } @@ -10562,8 +10561,7 @@ impl TsPropertySignatureClassMember { pub fn property_annotation(&self) -> Option { support::node(&self.syntax, 2usize) } - pub fn value(&self) -> Option { support::node(&self.syntax, 3usize) } - pub fn semicolon_token(&self) -> Option { support::token(&self.syntax, 4usize) } + pub fn semicolon_token(&self) -> Option { support::token(&self.syntax, 3usize) } } #[cfg(feature = "serde")] impl Serialize for TsPropertySignatureClassMember { @@ -10579,7 +10577,6 @@ pub struct TsPropertySignatureClassMemberFields { pub modifiers: TsPropertySignatureModifierList, pub name: SyntaxResult, pub property_annotation: Option, - pub value: Option, pub semicolon_token: Option, } #[derive(Clone, PartialEq, Eq, Hash)] @@ -23394,7 +23391,6 @@ impl std::fmt::Debug for TsPropertySignatureClassMember { "property_annotation", &support::DebugOptionalElement(self.property_annotation()), ) - .field("value", &support::DebugOptionalElement(self.value())) .field( "semicolon_token", &support::DebugOptionalElement(self.semicolon_token()), diff --git a/crates/rome_js_syntax/src/generated/nodes_mut.rs b/crates/rome_js_syntax/src/generated/nodes_mut.rs index 768e9bdc235..ea730d2c4ee 100644 --- a/crates/rome_js_syntax/src/generated/nodes_mut.rs +++ b/crates/rome_js_syntax/src/generated/nodes_mut.rs @@ -5216,16 +5216,10 @@ impl TsPropertySignatureClassMember { once(element.map(|element| element.into_syntax().into())), )) } - pub fn with_value(self, element: Option) -> Self { - Self::unwrap_cast(self.syntax.splice_slots( - 3usize..=3usize, - once(element.map(|element| element.into_syntax().into())), - )) - } pub fn with_semicolon_token(self, element: Option) -> Self { Self::unwrap_cast( self.syntax - .splice_slots(4usize..=4usize, once(element.map(|element| element.into()))), + .splice_slots(3usize..=3usize, once(element.map(|element| element.into()))), ) } } diff --git a/xtask/codegen/js.ungram b/xtask/codegen/js.ungram index 0d4df8fd8a9..15b158d8e2a 100644 --- a/xtask/codegen/js.ungram +++ b/xtask/codegen/js.ungram @@ -719,7 +719,6 @@ TsPropertySignatureClassMember = modifiers: TsPropertySignatureModifierList name: JsAnyClassMemberName property_annotation: TsAnyPropertySignatureAnnotation? - value: JsInitializerClause? ';'? TsPropertySignatureModifierList = TsAnyPropertySignatureModifier* From c932a1b713e510437d917260f4a6c1306c924a73 Mon Sep 17 00:00:00 2001 From: IWANABETHATGUY Date: Mon, 3 Oct 2022 19:27:19 +0800 Subject: [PATCH 4/4] =?UTF-8?q?chore:=20=F0=9F=A4=96=20recover?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/utils/assignment_like.rs | 54 ++++----------- .../inline/err/ts_abstract_member_ansi.rast | 2 - ...act_property_cannot_have_initiliazers.rast | 42 ++++++------ ..._property_initializer_ambient_context.rast | 66 +++++++++---------- .../inline/ok/ts_abstract_classes.rast | 4 +- .../ts_abstract_property_can_be_optional.rast | 4 +- .../ts_class_property_member_modifiers.rast | 36 +++------- .../inline/ok/ts_decorated_class_members.rast | 4 +- 8 files changed, 78 insertions(+), 134 deletions(-) diff --git a/crates/rome_js_formatter/src/utils/assignment_like.rs b/crates/rome_js_formatter/src/utils/assignment_like.rs index 943c12c0529..50e50699c99 100644 --- a/crates/rome_js_formatter/src/utils/assignment_like.rs +++ b/crates/rome_js_formatter/src/utils/assignment_like.rs @@ -1,5 +1,4 @@ use crate::js::auxiliary::initializer_clause::FormatJsInitializerClauseOptions; -use crate::js::expressions::arrow_function_expression::FormatJsArrowFunctionExpressionOptions; use crate::prelude::*; use crate::utils::member_chain::is_member_call_chain; use crate::utils::object::write_member_name; @@ -325,9 +324,8 @@ impl JsAnyAssignmentLike { // SAFETY: Calling `unwrap` here is safe because we check `has_only_left_hand_side` variant at the beginning of the `layout` function n.value().unwrap().into() } - JsAnyAssignmentLike::TsPropertySignatureClassMember(property_signature) => { - // SAFETY: Calling `unwrap` here is safe because we check `has_only_left_hand_side` variant at the beginning of the `layout` function - Ok(property_signature.value().unwrap().into()) + JsAnyAssignmentLike::TsPropertySignatureClassMember(_) => { + unreachable!("TsPropertySignatureClassMember doesn't have any right side. If you're here, `has_only_left_hand_side` hasn't been called") } }; @@ -440,7 +438,7 @@ impl JsAnyAssignmentLike { let width = write_member_name(&name.into(), f)?; let text_width_for_break = (u8::from(f.options().tab_width()) + MIN_OVERLAP_FOR_BREAK) as usize; - width < text_width_for_break && property_annotation.is_none() + width < text_width_for_break }; write!(f, [property_annotation.format()])?; @@ -455,7 +453,6 @@ impl JsAnyAssignmentLike { name, property_annotation, semicolon_token: _, - value: _, } = property_signature_class_member.as_fields(); write!(f, [modifiers.format(), space(),])?; @@ -503,13 +500,7 @@ impl JsAnyAssignmentLike { Ok(()) } // this variant doesn't have any operator - JsAnyAssignmentLike::TsPropertySignatureClassMember(property_signature) => { - if let Some(initializer) = property_signature.value() { - let eq_token = initializer.eq_token()?; - write!(f, [space(), eq_token.format()])? - } - Ok(()) - } + JsAnyAssignmentLike::TsPropertySignatureClassMember(_) => Ok(()), } } @@ -566,22 +557,13 @@ impl JsAnyAssignmentLike { Ok(()) } // this variant doesn't have any right part - JsAnyAssignmentLike::TsPropertySignatureClassMember(property_signature) => { - if let Some(initializer) = property_signature.value() { - let expression = initializer.expression()?; - write!(f, [space(), expression.format()])?; - } - Ok(()) - } + JsAnyAssignmentLike::TsPropertySignatureClassMember(_) => Ok(()), } } fn write_suppressed_initializer(&self, f: &mut JsFormatter) -> FormatResult<()> { let initializer = match self { JsAnyAssignmentLike::JsPropertyClassMember(class_member) => class_member.value(), - JsAnyAssignmentLike::TsPropertySignatureClassMember(property_signature) => { - property_signature.value() - } JsAnyAssignmentLike::JsVariableDeclarator(variable_declarator) => { variable_declarator.initializer() } @@ -589,7 +571,8 @@ impl JsAnyAssignmentLike { JsAnyAssignmentLike::JsPropertyObjectMember(_) | JsAnyAssignmentLike::JsAssignmentExpression(_) | JsAnyAssignmentLike::JsObjectAssignmentPatternProperty(_) - | JsAnyAssignmentLike::TsTypeAliasDeclaration(_) => { + | JsAnyAssignmentLike::TsTypeAliasDeclaration(_) + | JsAnyAssignmentLike::TsPropertySignatureClassMember(_) => { unreachable!("These variants have no initializer") } }; @@ -699,9 +682,6 @@ impl JsAnyAssignmentLike { declarator.initializer().is_none() } else if let JsAnyAssignmentLike::JsPropertyClassMember(class_member) = self { class_member.value().is_none() - } else if let JsAnyAssignmentLike::TsPropertySignatureClassMember(property_signature) = self - { - property_signature.value().is_none() } else { matches!(self, JsAnyAssignmentLike::TsPropertySignatureClassMember(_)) } @@ -937,7 +917,7 @@ impl Format for JsAnyAssignmentLike { self.write_operator(f)?; } - match layout { + match &layout { AssignmentLikeLayout::OnlyLeft => Ok(()), AssignmentLikeLayout::Fluid => { let group_id = f.group_id("assignment_like"); @@ -1012,7 +992,7 @@ impl Format for JsAnyAssignmentLike { /// [Prettier applies]: https://github.com/prettier/prettier/blob/a043ac0d733c4d53f980aa73807a63fc914f23bd/src/language-js/print/assignment.js#L329 fn is_poorly_breakable_member_or_call_chain( expression: &JsAnyExpression, - f: &Formatter, + f: &mut Formatter, ) -> SyntaxResult { let threshold = f.options().line_width().value() / 4; @@ -1061,11 +1041,7 @@ fn is_poorly_breakable_member_or_call_chain( } for call_expression in call_expressions { - if is_member_call_chain( - call_expression.clone(), - f.comments(), - f.options().tab_width(), - )? { + if is_member_call_chain(&call_expression, f)? { return Ok(false); } @@ -1209,13 +1185,9 @@ pub(crate) fn with_assignment_layout( impl Format for WithAssignmentLayout<'_> { fn fmt(&self, f: &mut Formatter) -> FormatResult<()> { match self.expression { - JsAnyExpression::JsArrowFunctionExpression(arrow) => arrow - .format() - .with_options(FormatJsArrowFunctionExpressionOptions { - assignment_layout: self.layout, - ..FormatJsArrowFunctionExpressionOptions::default() - }) - .fmt(f), + JsAnyExpression::JsArrowFunctionExpression(arrow) => { + arrow.format().with_options(self.layout).fmt(f) + } expression => expression.format().fmt(f), } } diff --git a/crates/rome_js_parser/test_data/inline/err/ts_abstract_member_ansi.rast b/crates/rome_js_parser/test_data/inline/err/ts_abstract_member_ansi.rast index 82332a0caac..8d6974deda4 100644 --- a/crates/rome_js_parser/test_data/inline/err/ts_abstract_member_ansi.rast +++ b/crates/rome_js_parser/test_data/inline/err/ts_abstract_member_ansi.rast @@ -99,7 +99,6 @@ JsModule { value: IDENT@118..123 "prop" [] [Whitespace(" ")], }, property_annotation: missing (optional), - value: missing (optional), semicolon_token: missing (optional), }, ], @@ -183,7 +182,6 @@ JsModule { 0: IDENT@118..123 "prop" [] [Whitespace(" ")] 2: (empty) 3: (empty) - 4: (empty) 8: R_CURLY@123..124 "}" [] [] 3: EOF@124..125 "" [Newline("\n")] [] -- diff --git a/crates/rome_js_parser/test_data/inline/err/ts_abstract_property_cannot_have_initiliazers.rast b/crates/rome_js_parser/test_data/inline/err/ts_abstract_property_cannot_have_initiliazers.rast index 647780e373a..b5c38083426 100644 --- a/crates/rome_js_parser/test_data/inline/err/ts_abstract_property_cannot_have_initiliazers.rast +++ b/crates/rome_js_parser/test_data/inline/err/ts_abstract_property_cannot_have_initiliazers.rast @@ -13,28 +13,30 @@ JsModule { implements_clause: missing (optional), l_curly_token: L_CURLY@17..18 "{" [] [], members: JsClassMemberList [ - TsPropertySignatureClassMember { - modifiers: TsPropertySignatureModifierList [ - TsAbstractModifier { - modifier_token: ABSTRACT_KW@18..32 "abstract" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], + JsUnknownMember { + items: [ + TsPropertySignatureModifierList [ + TsAbstractModifier { + modifier_token: ABSTRACT_KW@18..32 "abstract" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")], + }, + ], + JsLiteralMemberName { + value: IDENT@32..36 "name" [] [], }, - ], - name: JsLiteralMemberName { - value: IDENT@32..36 "name" [] [], - }, - property_annotation: TsTypeAnnotation { - colon_token: COLON@36..38 ":" [] [Whitespace(" ")], - ty: TsStringType { - string_token: STRING_KW@38..45 "string" [] [Whitespace(" ")], + TsTypeAnnotation { + colon_token: COLON@36..38 ":" [] [Whitespace(" ")], + ty: TsStringType { + string_token: STRING_KW@38..45 "string" [] [Whitespace(" ")], + }, }, - }, - value: JsInitializerClause { - eq_token: EQ@45..47 "=" [] [Whitespace(" ")], - expression: JsStringLiteralExpression { - value_token: JS_STRING_LITERAL@47..49 "\"\"" [] [], + JsInitializerClause { + eq_token: EQ@45..47 "=" [] [Whitespace(" ")], + expression: JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@47..49 "\"\"" [] [], + }, }, - }, - semicolon_token: SEMICOLON@49..50 ";" [] [], + SEMICOLON@49..50 ";" [] [], + ], }, ], r_curly_token: R_CURLY@50..52 "}" [Newline("\n")] [], @@ -57,7 +59,7 @@ JsModule { 5: (empty) 6: L_CURLY@17..18 "{" [] [] 7: JS_CLASS_MEMBER_LIST@18..50 - 0: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@18..50 + 0: JS_UNKNOWN_MEMBER@18..50 0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@18..32 0: TS_ABSTRACT_MODIFIER@18..32 0: ABSTRACT_KW@18..32 "abstract" [Newline("\n"), Whitespace(" ")] [Whitespace(" ")] diff --git a/crates/rome_js_parser/test_data/inline/err/ts_property_initializer_ambient_context.rast b/crates/rome_js_parser/test_data/inline/err/ts_property_initializer_ambient_context.rast index 67895be3db3..c2b558fda01 100644 --- a/crates/rome_js_parser/test_data/inline/err/ts_property_initializer_ambient_context.rast +++ b/crates/rome_js_parser/test_data/inline/err/ts_property_initializer_ambient_context.rast @@ -15,19 +15,19 @@ JsModule { implements_clause: missing (optional), l_curly_token: L_CURLY@16..18 "{" [] [Whitespace(" ")], members: JsClassMemberList [ - TsPropertySignatureClassMember { - modifiers: TsPropertySignatureModifierList [], - name: JsLiteralMemberName { - value: IDENT@18..23 "prop" [] [Whitespace(" ")], - }, - property_annotation: missing (optional), - value: JsInitializerClause { - eq_token: EQ@23..25 "=" [] [Whitespace(" ")], - expression: JsStringLiteralExpression { - value_token: JS_STRING_LITERAL@25..32 "\"test\"" [] [Whitespace(" ")], + JsUnknownMember { + items: [ + TsPropertySignatureModifierList [], + JsLiteralMemberName { + value: IDENT@18..23 "prop" [] [Whitespace(" ")], }, - }, - semicolon_token: missing (optional), + JsInitializerClause { + eq_token: EQ@23..25 "=" [] [Whitespace(" ")], + expression: JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@25..32 "\"test\"" [] [Whitespace(" ")], + }, + }, + ], }, ], r_curly_token: R_CURLY@32..33 "}" [] [], @@ -44,23 +44,23 @@ JsModule { implements_clause: missing (optional), l_curly_token: L_CURLY@42..44 "{" [] [Whitespace(" ")], members: JsClassMemberList [ - TsPropertySignatureClassMember { - modifiers: TsPropertySignatureModifierList [ - TsDeclareModifier { - modifier_token: DECLARE_KW@44..52 "declare" [] [Whitespace(" ")], + JsUnknownMember { + items: [ + TsPropertySignatureModifierList [ + TsDeclareModifier { + modifier_token: DECLARE_KW@44..52 "declare" [] [Whitespace(" ")], + }, + ], + JsLiteralMemberName { + value: IDENT@52..57 "prop" [] [Whitespace(" ")], }, - ], - name: JsLiteralMemberName { - value: IDENT@52..57 "prop" [] [Whitespace(" ")], - }, - property_annotation: missing (optional), - value: JsInitializerClause { - eq_token: EQ@57..59 "=" [] [Whitespace(" ")], - expression: JsStringLiteralExpression { - value_token: JS_STRING_LITERAL@59..66 "\"test\"" [] [Whitespace(" ")], + JsInitializerClause { + eq_token: EQ@57..59 "=" [] [Whitespace(" ")], + expression: JsStringLiteralExpression { + value_token: JS_STRING_LITERAL@59..66 "\"test\"" [] [Whitespace(" ")], + }, }, - }, - semicolon_token: missing (optional), + ], }, ], r_curly_token: R_CURLY@66..67 "}" [] [], @@ -85,16 +85,14 @@ JsModule { 5: (empty) 6: L_CURLY@16..18 "{" [] [Whitespace(" ")] 7: JS_CLASS_MEMBER_LIST@18..32 - 0: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@18..32 + 0: JS_UNKNOWN_MEMBER@18..32 0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@18..18 1: JS_LITERAL_MEMBER_NAME@18..23 0: IDENT@18..23 "prop" [] [Whitespace(" ")] - 2: (empty) - 3: JS_INITIALIZER_CLAUSE@23..32 + 2: JS_INITIALIZER_CLAUSE@23..32 0: EQ@23..25 "=" [] [Whitespace(" ")] 1: JS_STRING_LITERAL_EXPRESSION@25..32 0: JS_STRING_LITERAL@25..32 "\"test\"" [] [Whitespace(" ")] - 4: (empty) 8: R_CURLY@32..33 "}" [] [] 1: JS_CLASS_DECLARATION@33..67 0: (empty) @@ -106,18 +104,16 @@ JsModule { 5: (empty) 6: L_CURLY@42..44 "{" [] [Whitespace(" ")] 7: JS_CLASS_MEMBER_LIST@44..66 - 0: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@44..66 + 0: JS_UNKNOWN_MEMBER@44..66 0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@44..52 0: TS_DECLARE_MODIFIER@44..52 0: DECLARE_KW@44..52 "declare" [] [Whitespace(" ")] 1: JS_LITERAL_MEMBER_NAME@52..57 0: IDENT@52..57 "prop" [] [Whitespace(" ")] - 2: (empty) - 3: JS_INITIALIZER_CLAUSE@57..66 + 2: JS_INITIALIZER_CLAUSE@57..66 0: EQ@57..59 "=" [] [Whitespace(" ")] 1: JS_STRING_LITERAL_EXPRESSION@59..66 0: JS_STRING_LITERAL@59..66 "\"test\"" [] [Whitespace(" ")] - 4: (empty) 8: R_CURLY@66..67 "}" [] [] 3: EOF@67..68 "" [Newline("\n")] [] -- diff --git a/crates/rome_js_parser/test_data/inline/ok/ts_abstract_classes.rast b/crates/rome_js_parser/test_data/inline/ok/ts_abstract_classes.rast index 5f522811543..27e590b4684 100644 --- a/crates/rome_js_parser/test_data/inline/ok/ts_abstract_classes.rast +++ b/crates/rome_js_parser/test_data/inline/ok/ts_abstract_classes.rast @@ -287,7 +287,6 @@ JsModule { string_token: STRING_KW@349..355 "string" [] [], }, }, - value: missing (optional), semicolon_token: SEMICOLON@355..356 ";" [] [], }, TsMethodSignatureClassMember { @@ -564,8 +563,7 @@ JsModule { 0: COLON@347..349 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@349..355 0: STRING_KW@349..355 "string" [] [] - 3: (empty) - 4: SEMICOLON@355..356 ";" [] [] + 3: SEMICOLON@355..356 ";" [] [] 1: TS_METHOD_SIGNATURE_CLASS_MEMBER@356..380 0: TS_METHOD_SIGNATURE_MODIFIER_LIST@356..370 0: TS_ABSTRACT_MODIFIER@356..370 diff --git a/crates/rome_js_parser/test_data/inline/ok/ts_abstract_property_can_be_optional.rast b/crates/rome_js_parser/test_data/inline/ok/ts_abstract_property_can_be_optional.rast index 6e25d76fc15..f40f9544085 100644 --- a/crates/rome_js_parser/test_data/inline/ok/ts_abstract_property_can_be_optional.rast +++ b/crates/rome_js_parser/test_data/inline/ok/ts_abstract_property_can_be_optional.rast @@ -31,7 +31,6 @@ JsModule { }, }, }, - value: missing (optional), semicolon_token: SEMICOLON@46..47 ";" [] [], }, ], @@ -67,7 +66,6 @@ JsModule { 0: COLON@38..40 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@40..46 0: STRING_KW@40..46 "string" [] [] - 3: (empty) - 4: SEMICOLON@46..47 ";" [] [] + 3: SEMICOLON@46..47 ";" [] [] 8: R_CURLY@47..49 "}" [Newline("\n")] [] 3: EOF@49..50 "" [Newline("\n")] [] diff --git a/crates/rome_js_parser/test_data/inline/ok/ts_class_property_member_modifiers.rast b/crates/rome_js_parser/test_data/inline/ok/ts_class_property_member_modifiers.rast index 91b057eef78..6840483ba8c 100644 --- a/crates/rome_js_parser/test_data/inline/ok/ts_class_property_member_modifiers.rast +++ b/crates/rome_js_parser/test_data/inline/ok/ts_class_property_member_modifiers.rast @@ -59,7 +59,6 @@ JsModule { string_token: STRING_KW@74..80 "string" [] [], }, }, - value: missing (optional), semicolon_token: SEMICOLON@80..81 ";" [] [], }, TsPropertySignatureClassMember { @@ -80,7 +79,6 @@ JsModule { string_token: STRING_KW@105..111 "string" [] [], }, }, - value: missing (optional), semicolon_token: SEMICOLON@111..112 ";" [] [], }, TsPropertySignatureClassMember { @@ -101,7 +99,6 @@ JsModule { string_token: STRING_KW@136..142 "string" [] [], }, }, - value: missing (optional), semicolon_token: SEMICOLON@142..143 ";" [] [], }, TsPropertySignatureClassMember { @@ -125,7 +122,6 @@ JsModule { string_token: STRING_KW@176..182 "string" [] [], }, }, - value: missing (optional), semicolon_token: SEMICOLON@182..183 ";" [] [], }, TsPropertySignatureClassMember { @@ -149,7 +145,6 @@ JsModule { string_token: STRING_KW@216..222 "string" [] [], }, }, - value: missing (optional), semicolon_token: SEMICOLON@222..223 ";" [] [], }, TsPropertySignatureClassMember { @@ -176,7 +171,6 @@ JsModule { string_token: STRING_KW@263..269 "string" [] [], }, }, - value: missing (optional), semicolon_token: SEMICOLON@269..270 ";" [] [], }, TsPropertySignatureClassMember { @@ -203,7 +197,6 @@ JsModule { string_token: STRING_KW@310..316 "string" [] [], }, }, - value: missing (optional), semicolon_token: SEMICOLON@316..317 ";" [] [], }, TsPropertySignatureClassMember { @@ -227,7 +220,6 @@ JsModule { string_token: STRING_KW@353..359 "string" [] [], }, }, - value: missing (optional), semicolon_token: SEMICOLON@359..360 ";" [] [], }, TsPropertySignatureClassMember { @@ -251,7 +243,6 @@ JsModule { string_token: STRING_KW@396..402 "string" [] [], }, }, - value: missing (optional), semicolon_token: SEMICOLON@402..403 ";" [] [], }, JsPropertyClassMember { @@ -332,8 +323,7 @@ JsModule { 0: COLON@72..74 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@74..80 0: STRING_KW@74..80 "string" [] [] - 3: (empty) - 4: SEMICOLON@80..81 ";" [] [] + 3: SEMICOLON@80..81 ";" [] [] 1: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@81..112 0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@81..102 0: TS_ACCESSIBILITY_MODIFIER@81..94 @@ -346,8 +336,7 @@ JsModule { 0: COLON@103..105 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@105..111 0: STRING_KW@105..111 "string" [] [] - 3: (empty) - 4: SEMICOLON@111..112 ";" [] [] + 3: SEMICOLON@111..112 ";" [] [] 2: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@112..143 0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@112..133 0: TS_DECLARE_MODIFIER@112..125 @@ -360,8 +349,7 @@ JsModule { 0: COLON@134..136 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@136..142 0: STRING_KW@136..142 "string" [] [] - 3: (empty) - 4: SEMICOLON@142..143 ";" [] [] + 3: SEMICOLON@142..143 ";" [] [] 3: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@143..183 0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@143..173 0: TS_DECLARE_MODIFIER@143..156 @@ -376,8 +364,7 @@ JsModule { 0: COLON@174..176 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@176..182 0: STRING_KW@176..182 "string" [] [] - 3: (empty) - 4: SEMICOLON@182..183 ";" [] [] + 3: SEMICOLON@182..183 ";" [] [] 4: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@183..223 0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@183..213 0: TS_ACCESSIBILITY_MODIFIER@183..196 @@ -392,8 +379,7 @@ JsModule { 0: COLON@214..216 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@216..222 0: STRING_KW@216..222 "string" [] [] - 3: (empty) - 4: SEMICOLON@222..223 ";" [] [] + 3: SEMICOLON@222..223 ";" [] [] 5: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@223..270 0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@223..260 0: TS_DECLARE_MODIFIER@223..236 @@ -410,8 +396,7 @@ JsModule { 0: COLON@261..263 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@263..269 0: STRING_KW@263..269 "string" [] [] - 3: (empty) - 4: SEMICOLON@269..270 ";" [] [] + 3: SEMICOLON@269..270 ";" [] [] 6: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@270..317 0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@270..307 0: TS_ACCESSIBILITY_MODIFIER@270..283 @@ -428,8 +413,7 @@ JsModule { 0: COLON@308..310 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@310..316 0: STRING_KW@310..316 "string" [] [] - 3: (empty) - 4: SEMICOLON@316..317 ";" [] [] + 3: SEMICOLON@316..317 ";" [] [] 7: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@317..360 0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@317..350 0: TS_ACCESSIBILITY_MODIFIER@317..332 @@ -444,8 +428,7 @@ JsModule { 0: COLON@351..353 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@353..359 0: STRING_KW@353..359 "string" [] [] - 3: (empty) - 4: SEMICOLON@359..360 ";" [] [] + 3: SEMICOLON@359..360 ";" [] [] 8: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@360..403 0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@360..393 0: TS_ACCESSIBILITY_MODIFIER@360..375 @@ -460,8 +443,7 @@ JsModule { 0: COLON@394..396 ":" [] [Whitespace(" ")] 1: TS_STRING_TYPE@396..402 0: STRING_KW@396..402 "string" [] [] - 3: (empty) - 4: SEMICOLON@402..403 ";" [] [] + 3: SEMICOLON@402..403 ";" [] [] 9: JS_PROPERTY_CLASS_MEMBER@403..450 0: JS_PROPERTY_MODIFIER_LIST@403..436 0: TS_ACCESSIBILITY_MODIFIER@403..418 diff --git a/crates/rome_js_parser/test_data/inline/ok/ts_decorated_class_members.rast b/crates/rome_js_parser/test_data/inline/ok/ts_decorated_class_members.rast index 6909634a4eb..c3028884ded 100644 --- a/crates/rome_js_parser/test_data/inline/ok/ts_decorated_class_members.rast +++ b/crates/rome_js_parser/test_data/inline/ok/ts_decorated_class_members.rast @@ -115,7 +115,6 @@ JsModule { value: IDENT@145..149 "prop" [] [], }, property_annotation: missing (optional), - value: missing (optional), semicolon_token: SEMICOLON@149..150 ";" [] [], }, ], @@ -218,7 +217,6 @@ JsModule { 1: JS_LITERAL_MEMBER_NAME@145..149 0: IDENT@145..149 "prop" [] [] 2: (empty) - 3: (empty) - 4: SEMICOLON@149..150 ";" [] [] + 3: SEMICOLON@149..150 ";" [] [] 8: R_CURLY@150..152 "}" [Newline("\n")] [] 3: EOF@152..153 "" [Newline("\n")] []