diff --git a/crates/oxc_ast/src/ast/comment.rs b/crates/oxc_ast/src/ast/comment.rs index 8c0ff61971d50..3efdafe95603c 100644 --- a/crates/oxc_ast/src/ast/comment.rs +++ b/crates/oxc_ast/src/ast/comment.rs @@ -1,5 +1,7 @@ #![warn(missing_docs)] -use oxc_allocator::CloneIn; +use bitflags::bitflags; + +use oxc_allocator::{Allocator, CloneIn}; use oxc_ast_macros::ast; use oxc_estree::ESTree; use oxc_span::{ContentEq, Span}; @@ -81,20 +83,38 @@ pub enum CommentAnnotation { CoverageIgnore = 7, } -/// State of newlines around a comment. -#[ast] -#[generate_derive(CloneIn, ContentEq)] -#[derive(Debug, Default, Clone, Copy, Eq, PartialEq)] -pub enum CommentNewlines { - /// No newlines before or after - #[default] - None = 0, - /// Preceded by a newline - Leading = 1, - /// Followed by a newline - Trailing = 2, - /// Preceded and followed by a newline - LeadingAndTrailing = 3, +bitflags! { + #[derive(Default, Debug, Clone, Copy, Eq, PartialEq)] + /// State of newlines around a comment. + pub struct CommentNewlines: u8 { + /// No newlines before or after + const NONE = 0; + /// Preceded by a newline + const LEADING = 1 << 0; + /// Followed by a newline + const TRAILING = 1 << 1; + /// Preceded and followed by a newline + const LEADING_AND_TRAILING = Self::LEADING.bits() | Self::TRAILING.bits(); + } +} + +/// Dummy type to communicate the content of `CommentFlags` to `oxc_ast_tools`. +#[ast(foreign = CommentNewlines)] +#[expect(dead_code)] +struct CommentNewlinesAlias(u8); + +impl ContentEq for CommentNewlines { + fn content_eq(&self, other: &Self) -> bool { + self == other + } +} + +impl<'alloc> CloneIn<'alloc> for CommentNewlines { + type Cloned = Self; + + fn clone_in(&self, _: &'alloc Allocator) -> Self::Cloned { + *self + } } /// A comment in source code. @@ -141,7 +161,7 @@ impl Comment { attached_to: 0, kind, position: CommentPosition::Trailing, - newlines: CommentNewlines::None, + newlines: CommentNewlines::NONE, annotation: CommentAnnotation::None, } } @@ -234,46 +254,30 @@ impl Comment { /// Sets the state of `newlines` to include/exclude a newline after the comment. pub fn set_followed_by_newline(&mut self, followed_by_newline: bool) { if followed_by_newline { - self.newlines = match self.newlines { - CommentNewlines::None => CommentNewlines::Trailing, - CommentNewlines::Leading => CommentNewlines::LeadingAndTrailing, - _ => self.newlines, - } + self.newlines.insert(CommentNewlines::TRAILING); } else { - self.newlines = match self.newlines { - CommentNewlines::Trailing => CommentNewlines::None, - CommentNewlines::LeadingAndTrailing => CommentNewlines::Leading, - _ => self.newlines, - } + self.newlines.remove(CommentNewlines::TRAILING); } } /// Sets the state of `newlines` to include/exclude a newline before the comment. pub fn set_preceded_by_newline(&mut self, preceded_by_newline: bool) { if preceded_by_newline { - self.newlines = match self.newlines { - CommentNewlines::None => CommentNewlines::Leading, - CommentNewlines::Trailing => CommentNewlines::LeadingAndTrailing, - _ => self.newlines, - } + self.newlines.insert(CommentNewlines::LEADING); } else { - self.newlines = match self.newlines { - CommentNewlines::Leading => CommentNewlines::None, - CommentNewlines::LeadingAndTrailing => CommentNewlines::Trailing, - _ => self.newlines, - } + self.newlines.remove(CommentNewlines::LEADING); } } /// Returns `true` if this comment is preceded by a newline. #[inline] pub fn preceded_by_newline(self) -> bool { - matches!(self.newlines, CommentNewlines::Leading | CommentNewlines::LeadingAndTrailing) + self.newlines.contains(CommentNewlines::LEADING) } /// Returns `true` if this comment is followed by a newline. #[inline] pub fn followed_by_newline(self) -> bool { - matches!(self.newlines, CommentNewlines::Trailing | CommentNewlines::LeadingAndTrailing) + self.newlines.contains(CommentNewlines::TRAILING) } } diff --git a/crates/oxc_ast/src/generated/assert_layouts.rs b/crates/oxc_ast/src/generated/assert_layouts.rs index a1f095f74b418..cb2f24a703564 100644 --- a/crates/oxc_ast/src/generated/assert_layouts.rs +++ b/crates/oxc_ast/src/generated/assert_layouts.rs @@ -1581,6 +1581,7 @@ const _: () = { assert!(size_of::() == 1); assert!(align_of::() == 1); + // Padding: 0 bytes assert!(size_of::() == 1); assert!(align_of::() == 1); @@ -3169,6 +3170,7 @@ const _: () = { assert!(size_of::() == 1); assert!(align_of::() == 1); + // Padding: 0 bytes assert!(size_of::() == 1); assert!(align_of::() == 1); diff --git a/crates/oxc_ast/src/generated/derive_clone_in.rs b/crates/oxc_ast/src/generated/derive_clone_in.rs index 457a709f1d978..20ea4bfab9e4c 100644 --- a/crates/oxc_ast/src/generated/derive_clone_in.rs +++ b/crates/oxc_ast/src/generated/derive_clone_in.rs @@ -7866,20 +7866,6 @@ impl<'new_alloc> CloneIn<'new_alloc> for CommentAnnotation { } } -impl<'new_alloc> CloneIn<'new_alloc> for CommentNewlines { - type Cloned = CommentNewlines; - - #[inline(always)] - fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned { - *self - } - - #[inline(always)] - fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned { - *self - } -} - impl<'new_alloc> CloneIn<'new_alloc> for Comment { type Cloned = Comment; diff --git a/crates/oxc_ast/src/generated/derive_content_eq.rs b/crates/oxc_ast/src/generated/derive_content_eq.rs index 38731cab2b576..4c5ecb96c4167 100644 --- a/crates/oxc_ast/src/generated/derive_content_eq.rs +++ b/crates/oxc_ast/src/generated/derive_content_eq.rs @@ -2482,12 +2482,6 @@ impl ContentEq for CommentAnnotation { } } -impl ContentEq for CommentNewlines { - fn content_eq(&self, other: &Self) -> bool { - self == other - } -} - impl ContentEq for Comment { fn content_eq(&self, other: &Self) -> bool { ContentEq::content_eq(&self.attached_to, &other.attached_to) diff --git a/crates/oxc_ast_macros/src/generated/structs.rs b/crates/oxc_ast_macros/src/generated/structs.rs index f785bc2ac9f64..2047e54573300 100644 --- a/crates/oxc_ast_macros/src/generated/structs.rs +++ b/crates/oxc_ast_macros/src/generated/structs.rs @@ -8,295 +8,296 @@ use crate::ast::StructDetails; pub static STRUCTS: phf::Map<&'static str, StructDetails> = ::phf::Map { key: 12913932095322966823, disps: &[ + (1, 0), + (0, 2), + (1, 40), + (1, 87), + (0, 67), + (0, 19), + (1, 49), + (3, 182), (0, 0), - (0, 15), - (0, 140), - (0, 50), - (0, 27), - (0, 26), - (1, 84), - (0, 50), - (0, 17), - (0, 184), - (1, 127), - (6, 133), - (0, 8), - (0, 29), - (2, 45), - (0, 1), - (0, 40), - (0, 0), - (1, 103), - (2, 67), - (3, 95), - (0, 68), - (1, 64), - (0, 139), - (0, 18), - (1, 6), - (0, 18), - (0, 148), - (0, 52), - (0, 22), - (13, 66), - (0, 22), - (1, 122), - (59, 42), + (0, 80), + (1, 36), + (5, 196), + (0, 6), + (0, 4), + (8, 42), (0, 7), - (6, 26), - (1, 164), - (0, 1), - (0, 14), - (3, 52), - (24, 100), - (0, 130), - (0, 206), + (0, 23), + (1, 0), + (5, 189), + (0, 132), + (1, 51), + (0, 95), + (7, 102), + (0, 142), + (0, 2), + (2, 1), + (0, 18), + (3, 10), + (3, 89), + (0, 19), + (47, 168), + (14, 93), + (0, 81), + (12, 153), (0, 5), - (0, 1), - (1, 18), + (0, 17), + (4, 221), + (0, 2), + (0, 47), + (10, 154), + (5, 11), + (0, 100), + (0, 220), + (0, 127), + (0, 0), + (1, 87), ], entries: &[ - ("ImportNamespaceSpecifier", StructDetails { field_order: None }), - ("JSXFragment", StructDetails { field_order: None }), - ("JSXOpeningElement", StructDetails { field_order: None }), - ("TSTemplateLiteralType", StructDetails { field_order: None }), - ("ScopeId", StructDetails { field_order: None }), - ("Modifiers", StructDetails { field_order: None }), - ("PrivateIdentifier", StructDetails { field_order: None }), - ("BigIntLiteral", StructDetails { field_order: None }), - ("CatchParameter", StructDetails { field_order: None }), - ("TSAsExpression", StructDetails { field_order: None }), - ("Hashbang", StructDetails { field_order: None }), - ("TSTypeParameter", StructDetails { field_order: None }), - ("ForStatement", StructDetails { field_order: None }), - ("TSTypeAliasDeclaration", StructDetails { field_order: Some(&[0, 1, 2, 3, 5, 4]) }), + ("ArrayPattern", StructDetails { field_order: None }), + ("ClassStringDisjunction", StructDetails { field_order: Some(&[0, 2, 1]) }), + ("TSModuleDeclaration", StructDetails { field_order: Some(&[0, 1, 2, 4, 5, 3]) }), + ("JSXText", StructDetails { field_order: None }), + ("TSInstantiationExpression", StructDetails { field_order: None }), + ("Span", StructDetails { field_order: None }), + ("PrivateFieldExpression", StructDetails { field_order: None }), + ("ObjectAssignmentTarget", StructDetails { field_order: None }), + ("BoundaryAssertion", StructDetails { field_order: None }), + ("AwaitExpression", StructDetails { field_order: None }), + ("DoWhileStatement", StructDetails { field_order: None }), + ("ChainExpression", StructDetails { field_order: None }), + ("FormalParameters", StructDetails { field_order: Some(&[0, 3, 1, 2]) }), + ("TSTypeParameterDeclaration", StructDetails { field_order: None }), + ("Modifier", StructDetails { field_order: None }), + ("BinaryExpression", StructDetails { field_order: Some(&[0, 1, 3, 2]) }), + ("JSXIdentifier", StructDetails { field_order: None }), + ("SwitchCase", StructDetails { field_order: None }), + ("AssignmentPattern", StructDetails { field_order: None }), + ("VariableDeclaration", StructDetails { field_order: Some(&[0, 2, 1, 3]) }), + ("Class", StructDetails { field_order: Some(&[0, 9, 1, 2, 3, 4, 5, 6, 7, 10, 11, 8]) }), + ("BindingProperty", StructDetails { field_order: None }), ("MetaProperty", StructDetails { field_order: None }), - ("NonMaxU32", StructDetails { field_order: None }), - ("RawTransferData", StructDetails { field_order: None }), - ("JSDocUnknownType", StructDetails { field_order: None }), + ("Dot", StructDetails { field_order: None }), + ("TSTupleType", StructDetails { field_order: None }), + ("NullLiteral", StructDetails { field_order: None }), + ("CommentNewlines", StructDetails { field_order: None }), + ("ImportDefaultSpecifier", StructDetails { field_order: None }), + ("TSIndexSignature", StructDetails { field_order: None }), + ("TSExportAssignment", StructDetails { field_order: None }), ("TSNeverKeyword", StructDetails { field_order: None }), - ("IdentifierName", StructDetails { field_order: None }), - ("StringLiteral", StructDetails { field_order: None }), - ("Error", StructDetails { field_order: Some(&[3, 0, 1, 2]) }), - ("ObjectPattern", StructDetails { field_order: None }), - ("TSNumberKeyword", StructDetails { field_order: None }), - ("EcmaScriptModule", StructDetails { field_order: Some(&[4, 0, 1, 2, 3]) }), - ("TSInstantiationExpression", StructDetails { field_order: None }), + ("BindingPattern", StructDetails { field_order: None }), + ("ComputedMemberExpression", StructDetails { field_order: None }), + ("CatchParameter", StructDetails { field_order: None }), ("CatchClause", StructDetails { field_order: None }), - ("BoundaryAssertion", StructDetails { field_order: None }), - ("TaggedTemplateExpression", StructDetails { field_order: None }), - ("AssignmentTargetPropertyIdentifier", StructDetails { field_order: None }), - ("ObjectProperty", StructDetails { field_order: Some(&[0, 3, 1, 2, 4, 5, 6]) }), - ("TemplateElementValue", StructDetails { field_order: None }), - ("BlockStatement", StructDetails { field_order: None }), - ("TSObjectKeyword", StructDetails { field_order: None }), - ("TSCallSignatureDeclaration", StructDetails { field_order: None }), - ("ConditionalExpression", StructDetails { field_order: None }), - ("TSTypeAssertion", StructDetails { field_order: None }), - ("TemplateLiteral", StructDetails { field_order: None }), - ("TSQualifiedName", StructDetails { field_order: None }), - ("ImportSpecifier", StructDetails { field_order: None }), - ("TryStatement", StructDetails { field_order: None }), - ("TSSymbolKeyword", StructDetails { field_order: None }), - ("UnaryExpression", StructDetails { field_order: Some(&[0, 2, 1]) }), - ("WithStatement", StructDetails { field_order: None }), + ("BreakStatement", StructDetails { field_order: None }), + ("ScopeId", StructDetails { field_order: None }), + ("UnicodePropertyEscape", StructDetails { field_order: Some(&[0, 3, 4, 1, 2]) }), + ("Error", StructDetails { field_order: Some(&[3, 0, 1, 2]) }), ( - "AccessorProperty", - StructDetails { field_order: Some(&[0, 5, 1, 2, 3, 4, 6, 7, 8, 9, 10]) }, + "Function", + StructDetails { field_order: Some(&[0, 8, 1, 9, 10, 11, 2, 3, 4, 5, 6, 7, 12]) }, ), - ("ReturnStatement", StructDetails { field_order: None }), - ("AssignmentPattern", StructDetails { field_order: None }), + ("ObjectPattern", StructDetails { field_order: None }), + ("BlockStatement", StructDetails { field_order: None }), + ("LabeledStatement", StructDetails { field_order: None }), + ("Elision", StructDetails { field_order: None }), ("Program", StructDetails { field_order: Some(&[0, 7, 1, 2, 3, 4, 5, 6]) }), - ("TSInterfaceBody", StructDetails { field_order: None }), - ("JSXMemberExpression", StructDetails { field_order: None }), - ("JSXClosingElement", StructDetails { field_order: None }), - ("TSArrayType", StructDetails { field_order: None }), - ("TSIntrinsicKeyword", StructDetails { field_order: None }), - ("StaticImport", StructDetails { field_order: None }), - ("ExportDefaultDeclaration", StructDetails { field_order: None }), - ("ArrayPattern", StructDetails { field_order: None }), - ("SequenceExpression", StructDetails { field_order: None }), - ("CharacterClassRange", StructDetails { field_order: None }), - ("Disjunction", StructDetails { field_order: None }), - ("ThrowStatement", StructDetails { field_order: None }), - ("ForInStatement", StructDetails { field_order: None }), - ( - "ArrowFunctionExpression", - StructDetails { field_order: Some(&[0, 6, 7, 1, 2, 3, 4, 5, 8]) }, - ), - ("IdentifierReference", StructDetails { field_order: None }), - ("TSTypeOperator", StructDetails { field_order: Some(&[0, 2, 1]) }), - ("ErrorLabel", StructDetails { field_order: Some(&[1, 0]) }), - ("AwaitExpression", StructDetails { field_order: None }), + ("TSPropertySignature", StructDetails { field_order: Some(&[0, 3, 4, 5, 1, 2]) }), + ("BooleanLiteral", StructDetails { field_order: None }), + ("SpreadElement", StructDetails { field_order: None }), + ("TSNullKeyword", StructDetails { field_order: None }), ("Quantifier", StructDetails { field_order: Some(&[0, 1, 2, 4, 3]) }), - ("CharacterClassEscape", StructDetails { field_order: None }), - ("ImportEntry", StructDetails { field_order: None }), - ("FormalParameter", StructDetails { field_order: None }), - ("TSNamespaceExportDeclaration", StructDetails { field_order: None }), - ("BreakStatement", StructDetails { field_order: None }), + ("TSClassImplements", StructDetails { field_order: None }), + ("JSDocUnknownType", StructDetails { field_order: None }), + ("NumericLiteral", StructDetails { field_order: None }), + ("BindingIdentifier", StructDetails { field_order: None }), + ("RegExp", StructDetails { field_order: None }), + ("TSTypeLiteral", StructDetails { field_order: None }), + ("JSXClosingElement", StructDetails { field_order: None }), + ("CallExpression", StructDetails { field_order: None }), + ("SymbolId", StructDetails { field_order: None }), + ("ImportSpecifier", StructDetails { field_order: None }), + ("LookAroundAssertion", StructDetails { field_order: Some(&[0, 2, 1]) }), + ("TSTypeAssertion", StructDetails { field_order: None }), + ("TSOptionalType", StructDetails { field_order: None }), + ("WhileStatement", StructDetails { field_order: None }), + ("LogicalExpression", StructDetails { field_order: Some(&[0, 1, 3, 2]) }), + ("TSObjectKeyword", StructDetails { field_order: None }), + ("TSEnumBody", StructDetails { field_order: None }), + ("TSStringKeyword", StructDetails { field_order: None }), + ("TryStatement", StructDetails { field_order: None }), + ("DebuggerStatement", StructDetails { field_order: None }), ("TSParenthesizedType", StructDetails { field_order: None }), + ("EcmaScriptModule", StructDetails { field_order: Some(&[4, 0, 1, 2, 3]) }), + ("TSModuleBlock", StructDetails { field_order: None }), ("TSLiteralType", StructDetails { field_order: None }), - ("TSVoidKeyword", StructDetails { field_order: None }), - ("StaticExport", StructDetails { field_order: None }), - ("V8IntrinsicExpression", StructDetails { field_order: None }), - ("TSModuleDeclaration", StructDetails { field_order: Some(&[0, 1, 2, 4, 5, 3]) }), + ("NonMaxU32", StructDetails { field_order: None }), + ("ArrayAssignmentTarget", StructDetails { field_order: None }), + ("JSXSpreadAttribute", StructDetails { field_order: None }), ("NamedReference", StructDetails { field_order: None }), - ("StaticBlock", StructDetails { field_order: None }), - ("TSInferType", StructDetails { field_order: None }), - ("TSMethodSignature", StructDetails { field_order: Some(&[0, 1, 7, 8, 9, 2, 3, 4, 5, 6]) }), - ("Elision", StructDetails { field_order: None }), - ("YieldExpression", StructDetails { field_order: Some(&[0, 2, 1]) }), - ("TSSatisfiesExpression", StructDetails { field_order: None }), - ("ThisExpression", StructDetails { field_order: None }), - ("UnicodePropertyEscape", StructDetails { field_order: Some(&[0, 3, 4, 1, 2]) }), - ("Decorator", StructDetails { field_order: None }), - ("ExportNamedDeclaration", StructDetails { field_order: Some(&[0, 1, 2, 3, 5, 4]) }), - ("VariableDeclaration", StructDetails { field_order: Some(&[0, 2, 1, 3]) }), - ("TSTypeAnnotation", StructDetails { field_order: None }), - ("ImportDefaultSpecifier", StructDetails { field_order: None }), - ("TSNullKeyword", StructDetails { field_order: None }), - ("TSBooleanKeyword", StructDetails { field_order: None }), - ("Comment", StructDetails { field_order: None }), + ("VariableDeclarator", StructDetails { field_order: Some(&[0, 3, 1, 2, 4]) }), + ("CharacterClassEscape", StructDetails { field_order: None }), ("TSAnyKeyword", StructDetails { field_order: None }), - ("DynamicImport", StructDetails { field_order: None }), - ("ObjectExpression", StructDetails { field_order: None }), - ("DoWhileStatement", StructDetails { field_order: None }), - ("SymbolId", StructDetails { field_order: None }), - ("TSTypeReference", StructDetails { field_order: None }), - ("TSIndexedAccessType", StructDetails { field_order: None }), - ("ExportSpecifier", StructDetails { field_order: None }), - ("TSImportEqualsDeclaration", StructDetails { field_order: None }), - ("JSXText", StructDetails { field_order: None }), - ("TSIndexSignature", StructDetails { field_order: None }), - ("RegExpFlags", StructDetails { field_order: None }), - ("EmptyStatement", StructDetails { field_order: None }), - ("TSInterfaceDeclaration", StructDetails { field_order: Some(&[0, 1, 2, 3, 4, 6, 5]) }), + ("TSVoidKeyword", StructDetails { field_order: None }), + ("TSImportType", StructDetails { field_order: None }), + ("TSEnumDeclaration", StructDetails { field_order: Some(&[0, 1, 2, 4, 5, 3]) }), + ("ContinueStatement", StructDetails { field_order: None }), + ("JSXAttribute", StructDetails { field_order: None }), + ("NameSpan", StructDetails { field_order: Some(&[1, 0]) }), + ("ImportNamespaceSpecifier", StructDetails { field_order: None }), + ("JSXElement", StructDetails { field_order: None }), ("FunctionBody", StructDetails { field_order: None }), + ("RegExpFlags", StructDetails { field_order: None }), ("UpdateExpression", StructDetails { field_order: Some(&[0, 2, 3, 1]) }), - ("Modifier", StructDetails { field_order: None }), - ("Pattern", StructDetails { field_order: None }), - ("TSUndefinedKeyword", StructDetails { field_order: None }), - ("ExpressionStatement", StructDetails { field_order: None }), - ("DebuggerStatement", StructDetails { field_order: None }), ( "PropertyDefinition", StructDetails { field_order: Some(&[0, 5, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13]) }, ), - ("JSXElement", StructDetails { field_order: None }), - ("IgnoreGroup", StructDetails { field_order: None }), - ("TSClassImplements", StructDetails { field_order: None }), - ("TSNonNullExpression", StructDetails { field_order: None }), - ("AssignmentTargetWithDefault", StructDetails { field_order: None }), - ("TSTypePredicate", StructDetails { field_order: Some(&[0, 1, 3, 2]) }), - ("TSExportAssignment", StructDetails { field_order: None }), - ("Character", StructDetails { field_order: Some(&[0, 2, 1]) }), - ("TSTypeParameterInstantiation", StructDetails { field_order: None }), + ("ObjectExpression", StructDetails { field_order: None }), + ("ExportAllDeclaration", StructDetails { field_order: None }), + ( + "MethodDefinition", + StructDetails { field_order: Some(&[0, 4, 1, 2, 3, 5, 6, 7, 8, 9, 10]) }, + ), ("NewExpression", StructDetails { field_order: None }), - ("JSXOpeningFragment", StructDetails { field_order: None }), - ("ContinueStatement", StructDetails { field_order: None }), - ("SpreadElement", StructDetails { field_order: None }), - ("JSXIdentifier", StructDetails { field_order: None }), - ("PrivateInExpression", StructDetails { field_order: None }), - ("LabeledStatement", StructDetails { field_order: None }), - ("TSInterfaceHeritage", StructDetails { field_order: None }), - ("PrivateFieldExpression", StructDetails { field_order: None }), - ("TSNamedTupleMember", StructDetails { field_order: None }), - ("TSConstructSignatureDeclaration", StructDetails { field_order: None }), - ("LookAroundAssertion", StructDetails { field_order: Some(&[0, 2, 1]) }), - ("BinaryExpression", StructDetails { field_order: Some(&[0, 1, 3, 2]) }), - ("VariableDeclarator", StructDetails { field_order: Some(&[0, 3, 1, 2, 4]) }), - ("CallExpression", StructDetails { field_order: None }), - ("JSXNamespacedName", StructDetails { field_order: None }), - ("ObjectAssignmentTarget", StructDetails { field_order: None }), - ("Span", StructDetails { field_order: None }), - ("BindingIdentifier", StructDetails { field_order: None }), - ("JSXExpressionContainer", StructDetails { field_order: None }), - ("ForOfStatement", StructDetails { field_order: Some(&[0, 5, 1, 2, 3, 4]) }), - ("TSTypeParameterDeclaration", StructDetails { field_order: None }), + ("BindingRestElement", StructDetails { field_order: None }), + ("IdentifierName", StructDetails { field_order: None }), + ("Disjunction", StructDetails { field_order: None }), ("AssignmentExpression", StructDetails { field_order: Some(&[0, 3, 1, 2]) }), - ("TSOptionalType", StructDetails { field_order: None }), - ("ClassString", StructDetails { field_order: Some(&[0, 2, 1]) }), ("AssignmentTargetRest", StructDetails { field_order: None }), - ("ChainExpression", StructDetails { field_order: None }), - ("SwitchStatement", StructDetails { field_order: None }), - ("BindingRestElement", StructDetails { field_order: None }), - ("ArrayAssignmentTarget", StructDetails { field_order: None }), + ("TSTypeQuery", StructDetails { field_order: None }), + ("WithClause", StructDetails { field_order: None }), + ("TSEnumMember", StructDetails { field_order: None }), + ("TSTypePredicate", StructDetails { field_order: Some(&[0, 1, 3, 2]) }), + ("TSTypeAnnotation", StructDetails { field_order: None }), + ("ReturnStatement", StructDetails { field_order: None }), + ("TSTypeParameterInstantiation", StructDetails { field_order: None }), + ("ClassString", StructDetails { field_order: Some(&[0, 2, 1]) }), + ("TSMappedType", StructDetails { field_order: Some(&[0, 1, 2, 3, 5, 6, 4]) }), + ("Directive", StructDetails { field_order: None }), + ("WithStatement", StructDetails { field_order: None }), + ("TSSymbolKeyword", StructDetails { field_order: None }), + ("RegExpLiteral", StructDetails { field_order: None }), + ("TSTypeOperator", StructDetails { field_order: Some(&[0, 2, 1]) }), + ("CharacterClass", StructDetails { field_order: Some(&[0, 2, 3, 4, 1]) }), + ("JSXOpeningFragment", StructDetails { field_order: None }), ("SourceType", StructDetails { field_order: None }), + ("TSTypeAliasDeclaration", StructDetails { field_order: Some(&[0, 1, 2, 3, 5, 4]) }), + ("ObjectProperty", StructDetails { field_order: Some(&[0, 3, 1, 2, 4, 5, 6]) }), + ("ArrayExpression", StructDetails { field_order: None }), + ("ErrorLabel", StructDetails { field_order: Some(&[1, 0]) }), + ("TSIndexedAccessType", StructDetails { field_order: None }), + ("TSNumberKeyword", StructDetails { field_order: None }), + ("TSQualifiedName", StructDetails { field_order: None }), + ("TaggedTemplateExpression", StructDetails { field_order: None }), + ("TSIntersectionType", StructDetails { field_order: None }), + ("SwitchStatement", StructDetails { field_order: None }), + ("ExpressionStatement", StructDetails { field_order: None }), + ("ThrowStatement", StructDetails { field_order: None }), + ("JSDocNonNullableType", StructDetails { field_order: None }), + ("ForStatement", StructDetails { field_order: None }), ( - "Function", - StructDetails { field_order: Some(&[0, 8, 1, 9, 10, 11, 2, 3, 4, 5, 6, 7, 12]) }, + "ArrowFunctionExpression", + StructDetails { field_order: Some(&[0, 6, 7, 1, 2, 3, 4, 5, 8]) }, ), + ("AssignmentTargetPropertyProperty", StructDetails { field_order: None }), + ("TSCallSignatureDeclaration", StructDetails { field_order: None }), ("LabelIdentifier", StructDetails { field_order: None }), - ("FormalParameters", StructDetails { field_order: Some(&[0, 3, 1, 2]) }), - ( - "MethodDefinition", - StructDetails { field_order: Some(&[0, 4, 1, 2, 3, 5, 6, 7, 8, 9, 10]) }, - ), - ("RegExpLiteral", StructDetails { field_order: None }), - ("TSPropertySignature", StructDetails { field_order: Some(&[0, 3, 4, 5, 1, 2]) }), - ("JSXSpreadAttribute", StructDetails { field_order: None }), - ("ClassStringDisjunction", StructDetails { field_order: Some(&[0, 2, 1]) }), - ("BindingPattern", StructDetails { field_order: None }), + ("JSDocNullableType", StructDetails { field_order: None }), + ("ThisExpression", StructDetails { field_order: None }), + ("FormalParameter", StructDetails { field_order: None }), + ("ParenthesizedExpression", StructDetails { field_order: None }), ("CapturingGroup", StructDetails { field_order: None }), + ("TSMethodSignature", StructDetails { field_order: Some(&[0, 1, 7, 8, 9, 2, 3, 4, 5, 6]) }), + ("TSTypeParameter", StructDetails { field_order: None }), + ("SequenceExpression", StructDetails { field_order: None }), + ("Super", StructDetails { field_order: None }), + ("IdentifierReference", StructDetails { field_order: None }), + ("TSConstructSignatureDeclaration", StructDetails { field_order: None }), + ("TSUndefinedKeyword", StructDetails { field_order: None }), + ("TSTemplateLiteralType", StructDetails { field_order: None }), + ("TSInterfaceDeclaration", StructDetails { field_order: Some(&[0, 1, 2, 3, 4, 6, 5]) }), + ("TSIntrinsicKeyword", StructDetails { field_order: None }), + ("JSXMemberExpression", StructDetails { field_order: None }), + ("JSXExpressionContainer", StructDetails { field_order: None }), + ("TSFunctionType", StructDetails { field_order: None }), + ("EmptyStatement", StructDetails { field_order: None }), + ("StringLiteral", StructDetails { field_order: None }), + ("BigIntLiteral", StructDetails { field_order: None }), + ("AssignmentTargetWithDefault", StructDetails { field_order: None }), ("TSBigIntKeyword", StructDetails { field_order: None }), - ("ReferenceId", StructDetails { field_order: None }), + ("TSUnknownKeyword", StructDetails { field_order: None }), + ("TSArrayType", StructDetails { field_order: None }), + ("PrivateInExpression", StructDetails { field_order: None }), + ("ConditionalExpression", StructDetails { field_order: None }), + ("JSXOpeningElement", StructDetails { field_order: None }), + ("PrivateIdentifier", StructDetails { field_order: None }), + ("ImportAttribute", StructDetails { field_order: None }), + ("DynamicImport", StructDetails { field_order: None }), + ("StaticBlock", StructDetails { field_order: None }), ("IndexedReference", StructDetails { field_order: None }), - ("RegExp", StructDetails { field_order: None }), - ("TSFunctionType", StructDetails { field_order: None }), - ("TSExternalModuleReference", StructDetails { field_order: None }), - ("JSDocNonNullableType", StructDetails { field_order: None }), - ("WhileStatement", StructDetails { field_order: None }), - ("NullLiteral", StructDetails { field_order: None }), - ("TSStringKeyword", StructDetails { field_order: None }), - ("Alternative", StructDetails { field_order: None }), - ("TSIntersectionType", StructDetails { field_order: None }), - ("NameSpan", StructDetails { field_order: Some(&[1, 0]) }), - ("NumericLiteral", StructDetails { field_order: None }), - ("ImportDeclaration", StructDetails { field_order: Some(&[0, 1, 2, 4, 3, 5]) }), - ("JSXAttribute", StructDetails { field_order: None }), - ("LogicalExpression", StructDetails { field_order: Some(&[0, 1, 3, 2]) }), - ("TSEnumMember", StructDetails { field_order: None }), - ("TSIndexSignatureName", StructDetails { field_order: None }), - ("WithClause", StructDetails { field_order: None }), - ("TSUnionType", StructDetails { field_order: None }), - ("RegExpPattern", StructDetails { field_order: None }), - ("JSXClosingFragment", StructDetails { field_order: None }), - ("Class", StructDetails { field_order: Some(&[0, 9, 1, 2, 3, 4, 5, 6, 7, 10, 11, 8]) }), - ("TSTupleType", StructDetails { field_order: None }), - ("Dot", StructDetails { field_order: None }), + ("ClassBody", StructDetails { field_order: None }), ("JSXEmptyExpression", StructDetails { field_order: None }), - ("TSUnknownKeyword", StructDetails { field_order: None }), - ("SwitchCase", StructDetails { field_order: None }), - ("TSEnumBody", StructDetails { field_order: None }), + ("RawTransferData", StructDetails { field_order: None }), + ("Decorator", StructDetails { field_order: None }), + ( + "AccessorProperty", + StructDetails { field_order: Some(&[0, 5, 1, 2, 3, 4, 6, 7, 8, 9, 10]) }, + ), + ("ExportNamedDeclaration", StructDetails { field_order: Some(&[0, 1, 2, 3, 5, 4]) }), + ("TSSatisfiesExpression", StructDetails { field_order: None }), + ("TSNamespaceExportDeclaration", StructDetails { field_order: None }), + ("ImportExpression", StructDetails { field_order: None }), + ("AssignmentTargetPropertyIdentifier", StructDetails { field_order: None }), ("JSXSpreadChild", StructDetails { field_order: None }), - ("JSDocNullableType", StructDetails { field_order: None }), + ("JSXClosingFragment", StructDetails { field_order: None }), + ("TSThisType", StructDetails { field_order: None }), + ("Pattern", StructDetails { field_order: None }), + ("YieldExpression", StructDetails { field_order: Some(&[0, 2, 1]) }), + ("TSUnionType", StructDetails { field_order: None }), + ("TemplateLiteral", StructDetails { field_order: None }), + ("Hashbang", StructDetails { field_order: None }), + ("Alternative", StructDetails { field_order: None }), + ("V8IntrinsicExpression", StructDetails { field_order: None }), + ("ImportEntry", StructDetails { field_order: None }), + ("ExportDefaultDeclaration", StructDetails { field_order: None }), + ("TSRestType", StructDetails { field_order: None }), + ("TSTypeReference", StructDetails { field_order: None }), ("StaticMemberExpression", StructDetails { field_order: None }), - ("ClassBody", StructDetails { field_order: None }), - ("ArrayExpression", StructDetails { field_order: None }), - ("ParenthesizedExpression", StructDetails { field_order: None }), - ("ExportEntry", StructDetails { field_order: Some(&[1, 0, 2, 3, 4, 5, 6]) }), - ("ImportExpression", StructDetails { field_order: None }), - ("TSModuleBlock", StructDetails { field_order: None }), - ("TSTypeLiteral", StructDetails { field_order: None }), - ("TSTypeQuery", StructDetails { field_order: None }), - ("AssignmentTargetPropertyProperty", StructDetails { field_order: None }), - ("CharacterClass", StructDetails { field_order: Some(&[0, 2, 3, 4, 1]) }), - ("BooleanLiteral", StructDetails { field_order: None }), - ("TSEnumDeclaration", StructDetails { field_order: Some(&[0, 1, 2, 4, 5, 3]) }), - ("TSConditionalType", StructDetails { field_order: None }), + ("CharacterClassRange", StructDetails { field_order: None }), + ("ForOfStatement", StructDetails { field_order: Some(&[0, 5, 1, 2, 3, 4]) }), ("TemplateElement", StructDetails { field_order: None }), - ("TSMappedType", StructDetails { field_order: Some(&[0, 1, 2, 3, 5, 6, 4]) }), - ("Directive", StructDetails { field_order: None }), - ("IfStatement", StructDetails { field_order: None }), - ("TSImportType", StructDetails { field_order: None }), + ("TSInferType", StructDetails { field_order: None }), + ("Character", StructDetails { field_order: Some(&[0, 2, 1]) }), + ("ExportSpecifier", StructDetails { field_order: None }), ("TSConstructorType", StructDetails { field_order: Some(&[0, 4, 1, 2, 3]) }), - ("ExportAllDeclaration", StructDetails { field_order: None }), - ("TSRestType", StructDetails { field_order: None }), - ("TSThisType", StructDetails { field_order: None }), - ("ImportAttribute", StructDetails { field_order: None }), - ("Super", StructDetails { field_order: None }), - ("BindingProperty", StructDetails { field_order: None }), - ("ComputedMemberExpression", StructDetails { field_order: None }), + ("TSConditionalType", StructDetails { field_order: None }), + ("TSAsExpression", StructDetails { field_order: None }), + ("IgnoreGroup", StructDetails { field_order: None }), + ("JSXFragment", StructDetails { field_order: None }), + ("ImportDeclaration", StructDetails { field_order: Some(&[0, 1, 2, 4, 3, 5]) }), + ("TSIndexSignatureName", StructDetails { field_order: None }), + ("TSBooleanKeyword", StructDetails { field_order: None }), + ("RegExpPattern", StructDetails { field_order: None }), + ("TSNamedTupleMember", StructDetails { field_order: None }), + ("TSNonNullExpression", StructDetails { field_order: None }), + ("StaticImport", StructDetails { field_order: None }), + ("TSInterfaceBody", StructDetails { field_order: None }), + ("IfStatement", StructDetails { field_order: None }), + ("ReferenceId", StructDetails { field_order: None }), + ("TSInterfaceHeritage", StructDetails { field_order: None }), + ("ForInStatement", StructDetails { field_order: None }), + ("TSImportEqualsDeclaration", StructDetails { field_order: None }), + ("TSExternalModuleReference", StructDetails { field_order: None }), + ("Modifiers", StructDetails { field_order: None }), + ("TemplateElementValue", StructDetails { field_order: None }), + ("JSXNamespacedName", StructDetails { field_order: None }), ("TSThisParameter", StructDetails { field_order: None }), + ("UnaryExpression", StructDetails { field_order: Some(&[0, 2, 1]) }), + ("Comment", StructDetails { field_order: None }), + ("StaticExport", StructDetails { field_order: None }), + ("ExportEntry", StructDetails { field_order: Some(&[1, 0, 2, 3, 4, 5, 6]) }), ], }; diff --git a/crates/oxc_parser/src/lexer/trivia_builder.rs b/crates/oxc_parser/src/lexer/trivia_builder.rs index aa4327253f604..6d2c7a83c89fc 100644 --- a/crates/oxc_parser/src/lexer/trivia_builder.rs +++ b/crates/oxc_parser/src/lexer/trivia_builder.rs @@ -268,7 +268,7 @@ mod test { kind: CommentKind::Block, position: CommentPosition::Leading, attached_to: 70, - newlines: CommentNewlines::LeadingAndTrailing, + newlines: CommentNewlines::LEADING_AND_TRAILING, annotation: CommentAnnotation::None, }, Comment { @@ -276,7 +276,7 @@ mod test { kind: CommentKind::Line, position: CommentPosition::Leading, attached_to: 70, - newlines: CommentNewlines::LeadingAndTrailing, + newlines: CommentNewlines::LEADING_AND_TRAILING, annotation: CommentAnnotation::None, }, Comment { @@ -284,7 +284,7 @@ mod test { kind: CommentKind::Block, position: CommentPosition::Leading, attached_to: 70, - newlines: CommentNewlines::Leading, + newlines: CommentNewlines::LEADING, annotation: CommentAnnotation::None, }, Comment { @@ -292,7 +292,7 @@ mod test { kind: CommentKind::Block, position: CommentPosition::Trailing, attached_to: 0, - newlines: CommentNewlines::None, + newlines: CommentNewlines::NONE, annotation: CommentAnnotation::None, }, Comment { @@ -300,7 +300,7 @@ mod test { kind: CommentKind::Line, position: CommentPosition::Trailing, attached_to: 0, - newlines: CommentNewlines::Trailing, + newlines: CommentNewlines::TRAILING, annotation: CommentAnnotation::None, }, Comment { @@ -308,7 +308,7 @@ mod test { kind: CommentKind::Line, position: CommentPosition::Leading, attached_to: 147, - newlines: CommentNewlines::LeadingAndTrailing, + newlines: CommentNewlines::LEADING_AND_TRAILING, annotation: CommentAnnotation::None, }, ]; @@ -332,7 +332,7 @@ token /* Trailing 1 */ kind: CommentKind::Block, position: CommentPosition::Leading, attached_to: 36, - newlines: CommentNewlines::LeadingAndTrailing, + newlines: CommentNewlines::LEADING_AND_TRAILING, annotation: CommentAnnotation::None, }, Comment { @@ -340,7 +340,7 @@ token /* Trailing 1 */ kind: CommentKind::Block, position: CommentPosition::Trailing, attached_to: 0, - newlines: CommentNewlines::Trailing, + newlines: CommentNewlines::TRAILING, annotation: CommentAnnotation::None, }, ]; @@ -365,7 +365,7 @@ token /* Trailing 1 */ kind: CommentKind::Block, position: CommentPosition::Leading, attached_to: 28, - newlines: CommentNewlines::LeadingAndTrailing, + newlines: CommentNewlines::LEADING_AND_TRAILING, annotation: CommentAnnotation::None, }, Comment { @@ -373,7 +373,7 @@ token /* Trailing 1 */ kind: CommentKind::Block, position: CommentPosition::Leading, attached_to: 28, - newlines: CommentNewlines::LeadingAndTrailing, + newlines: CommentNewlines::LEADING_AND_TRAILING, annotation: CommentAnnotation::None, }, ]; @@ -396,7 +396,7 @@ token /* Trailing 1 */ kind: CommentKind::Line, position: CommentPosition::Leading, attached_to: 57, - newlines: CommentNewlines::Trailing, + newlines: CommentNewlines::TRAILING, annotation: CommentAnnotation::None, }, Comment { @@ -404,7 +404,7 @@ token /* Trailing 1 */ kind: CommentKind::Line, position: CommentPosition::Leading, attached_to: 129, - newlines: CommentNewlines::Trailing, + newlines: CommentNewlines::TRAILING, annotation: CommentAnnotation::None, }, ]; @@ -426,7 +426,7 @@ token /* Trailing 1 */ kind: CommentKind::Line, position: CommentPosition::Leading, attached_to: 55, - newlines: CommentNewlines::Trailing, + newlines: CommentNewlines::TRAILING, annotation: CommentAnnotation::None, }, Comment { @@ -434,7 +434,7 @@ token /* Trailing 1 */ kind: CommentKind::Line, position: CommentPosition::Leading, attached_to: 116, - newlines: CommentNewlines::Trailing, + newlines: CommentNewlines::TRAILING, annotation: CommentAnnotation::None, }, ];