diff --git a/Cargo.lock b/Cargo.lock index 74b20a859b933..334df3c005503 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1356,8 +1356,10 @@ dependencies = [ name = "oxc_ast_macros" version = "0.23.0" dependencies = [ + "lazy_static", "proc-macro2", "quote", + "rustc-hash", "syn", ] diff --git a/crates/oxc_ast/src/generated/assert_layouts.rs b/crates/oxc_ast/src/generated/assert_layouts.rs index 93ad4d00329e1..3c07087d74e3a 100644 --- a/crates/oxc_ast/src/generated/assert_layouts.rs +++ b/crates/oxc_ast/src/generated/assert_layouts.rs @@ -14,20 +14,20 @@ const _: () = { assert!(std::mem::offset_of!(NullLiteral, span) == 0usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(NumericLiteral, span) == 0usize); - assert!(std::mem::offset_of!(NumericLiteral, value) == 8usize); - assert!(std::mem::offset_of!(NumericLiteral, raw) == 16usize); + assert!(std::mem::offset_of!(NumericLiteral, span) == 16usize); + assert!(std::mem::offset_of!(NumericLiteral, value) == 24usize); + assert!(std::mem::offset_of!(NumericLiteral, raw) == 0usize); assert!(std::mem::offset_of!(NumericLiteral, base) == 32usize); assert!(size_of::() == 32usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(BigIntLiteral, span) == 0usize); - assert!(std::mem::offset_of!(BigIntLiteral, raw) == 8usize); + assert!(std::mem::offset_of!(BigIntLiteral, span) == 16usize); + assert!(std::mem::offset_of!(BigIntLiteral, raw) == 0usize); assert!(std::mem::offset_of!(BigIntLiteral, base) == 24usize); assert!(size_of::() == 32usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(RegExpLiteral, span) == 0usize); - assert!(std::mem::offset_of!(RegExpLiteral, value) == 8usize); - assert!(std::mem::offset_of!(RegExpLiteral, regex) == 8usize); + assert!(std::mem::offset_of!(RegExpLiteral, span) == 24usize); + assert!(std::mem::offset_of!(RegExpLiteral, value) == 32usize); + assert!(std::mem::offset_of!(RegExpLiteral, regex) == 0usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); assert!(std::mem::offset_of!(RegExp, pattern) == 0usize); @@ -36,45 +36,45 @@ const _: () = { assert!(align_of::() == 1usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(StringLiteral, span) == 0usize); - assert!(std::mem::offset_of!(StringLiteral, value) == 8usize); - assert!(size_of::() == 112usize); + assert!(std::mem::offset_of!(StringLiteral, span) == 16usize); + assert!(std::mem::offset_of!(StringLiteral, value) == 0usize); + assert!(size_of::() == 104usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(Program, span) == 0usize); - assert!(std::mem::offset_of!(Program, source_type) == 8usize); - assert!(std::mem::offset_of!(Program, hashbang) == 16usize); - assert!(std::mem::offset_of!(Program, directives) == 40usize); - assert!(std::mem::offset_of!(Program, body) == 72usize); - assert!(std::mem::offset_of!(Program, scope_id) == 104usize); + assert!(std::mem::offset_of!(Program, span) == 88usize); + assert!(std::mem::offset_of!(Program, source_type) == 96usize); + assert!(std::mem::offset_of!(Program, hashbang) == 64usize); + assert!(std::mem::offset_of!(Program, directives) == 0usize); + assert!(std::mem::offset_of!(Program, body) == 32usize); + assert!(std::mem::offset_of!(Program, scope_id) == 100usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(IdentifierName, span) == 0usize); - assert!(std::mem::offset_of!(IdentifierName, name) == 8usize); + assert!(std::mem::offset_of!(IdentifierName, span) == 16usize); + assert!(std::mem::offset_of!(IdentifierName, name) == 0usize); assert!(size_of::() == 32usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(IdentifierReference, span) == 0usize); - assert!(std::mem::offset_of!(IdentifierReference, name) == 8usize); + assert!(std::mem::offset_of!(IdentifierReference, span) == 16usize); + assert!(std::mem::offset_of!(IdentifierReference, name) == 0usize); assert!(std::mem::offset_of!(IdentifierReference, reference_id) == 24usize); assert!(std::mem::offset_of!(IdentifierReference, reference_flag) == 28usize); assert!(size_of::() == 32usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(BindingIdentifier, span) == 0usize); - assert!(std::mem::offset_of!(BindingIdentifier, name) == 8usize); + assert!(std::mem::offset_of!(BindingIdentifier, span) == 16usize); + assert!(std::mem::offset_of!(BindingIdentifier, name) == 0usize); assert!(std::mem::offset_of!(BindingIdentifier, symbol_id) == 24usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(LabelIdentifier, span) == 0usize); - assert!(std::mem::offset_of!(LabelIdentifier, name) == 8usize); + assert!(std::mem::offset_of!(LabelIdentifier, span) == 16usize); + assert!(std::mem::offset_of!(LabelIdentifier, name) == 0usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(std::mem::offset_of!(ThisExpression, span) == 0usize); assert!(size_of::() == 56usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ArrayExpression, span) == 0usize); - assert!(std::mem::offset_of!(ArrayExpression, elements) == 8usize); - assert!(std::mem::offset_of!(ArrayExpression, trailing_comma) == 40usize); + assert!(std::mem::offset_of!(ArrayExpression, span) == 44usize); + assert!(std::mem::offset_of!(ArrayExpression, elements) == 0usize); + assert!(std::mem::offset_of!(ArrayExpression, trailing_comma) == 32usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 8usize); @@ -82,41 +82,41 @@ const _: () = { assert!(std::mem::offset_of!(Elision, span) == 0usize); assert!(size_of::() == 56usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ObjectExpression, span) == 0usize); - assert!(std::mem::offset_of!(ObjectExpression, properties) == 8usize); - assert!(std::mem::offset_of!(ObjectExpression, trailing_comma) == 40usize); + assert!(std::mem::offset_of!(ObjectExpression, span) == 44usize); + assert!(std::mem::offset_of!(ObjectExpression, properties) == 0usize); + assert!(std::mem::offset_of!(ObjectExpression, trailing_comma) == 32usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); - assert!(size_of::() == 72usize); + assert!(size_of::() == 64usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ObjectProperty, span) == 0usize); - assert!(std::mem::offset_of!(ObjectProperty, kind) == 8usize); - assert!(std::mem::offset_of!(ObjectProperty, key) == 16usize); - assert!(std::mem::offset_of!(ObjectProperty, value) == 32usize); - assert!(std::mem::offset_of!(ObjectProperty, init) == 48usize); - assert!(std::mem::offset_of!(ObjectProperty, method) == 64usize); - assert!(std::mem::offset_of!(ObjectProperty, shorthand) == 65usize); - assert!(std::mem::offset_of!(ObjectProperty, computed) == 66usize); + assert!(std::mem::offset_of!(ObjectProperty, span) == 48usize); + assert!(std::mem::offset_of!(ObjectProperty, kind) == 56usize); + assert!(std::mem::offset_of!(ObjectProperty, key) == 0usize); + assert!(std::mem::offset_of!(ObjectProperty, value) == 16usize); + assert!(std::mem::offset_of!(ObjectProperty, init) == 32usize); + assert!(std::mem::offset_of!(ObjectProperty, method) == 57usize); + assert!(std::mem::offset_of!(ObjectProperty, shorthand) == 58usize); + assert!(std::mem::offset_of!(ObjectProperty, computed) == 59usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); assert!(size_of::() == 72usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TemplateLiteral, span) == 0usize); - assert!(std::mem::offset_of!(TemplateLiteral, quasis) == 8usize); - assert!(std::mem::offset_of!(TemplateLiteral, expressions) == 40usize); + assert!(std::mem::offset_of!(TemplateLiteral, span) == 64usize); + assert!(std::mem::offset_of!(TemplateLiteral, quasis) == 0usize); + assert!(std::mem::offset_of!(TemplateLiteral, expressions) == 32usize); assert!(size_of::() == 104usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TaggedTemplateExpression, span) == 0usize); - assert!(std::mem::offset_of!(TaggedTemplateExpression, tag) == 8usize); - assert!(std::mem::offset_of!(TaggedTemplateExpression, quasi) == 24usize); + assert!(std::mem::offset_of!(TaggedTemplateExpression, span) == 88usize); + assert!(std::mem::offset_of!(TaggedTemplateExpression, tag) == 72usize); + assert!(std::mem::offset_of!(TaggedTemplateExpression, quasi) == 0usize); assert!(std::mem::offset_of!(TaggedTemplateExpression, type_parameters) == 96usize); assert!(size_of::() == 48usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TemplateElement, span) == 0usize); - assert!(std::mem::offset_of!(TemplateElement, tail) == 8usize); - assert!(std::mem::offset_of!(TemplateElement, value) == 16usize); + assert!(std::mem::offset_of!(TemplateElement, span) == 32usize); + assert!(std::mem::offset_of!(TemplateElement, tail) == 40usize); + assert!(std::mem::offset_of!(TemplateElement, value) == 0usize); assert!(size_of::() == 32usize); assert!(align_of::() == 8usize); assert!(std::mem::offset_of!(TemplateElementValue, raw) == 0usize); @@ -125,87 +125,87 @@ const _: () = { assert!(align_of::() == 8usize); assert!(size_of::() == 48usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ComputedMemberExpression, span) == 0usize); - assert!(std::mem::offset_of!(ComputedMemberExpression, object) == 8usize); - assert!(std::mem::offset_of!(ComputedMemberExpression, expression) == 24usize); + assert!(std::mem::offset_of!(ComputedMemberExpression, span) == 32usize); + assert!(std::mem::offset_of!(ComputedMemberExpression, object) == 0usize); + assert!(std::mem::offset_of!(ComputedMemberExpression, expression) == 16usize); assert!(std::mem::offset_of!(ComputedMemberExpression, optional) == 40usize); assert!(size_of::() == 56usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(StaticMemberExpression, span) == 0usize); - assert!(std::mem::offset_of!(StaticMemberExpression, object) == 8usize); - assert!(std::mem::offset_of!(StaticMemberExpression, property) == 24usize); + assert!(std::mem::offset_of!(StaticMemberExpression, span) == 40usize); + assert!(std::mem::offset_of!(StaticMemberExpression, object) == 24usize); + assert!(std::mem::offset_of!(StaticMemberExpression, property) == 0usize); assert!(std::mem::offset_of!(StaticMemberExpression, optional) == 48usize); assert!(size_of::() == 56usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(PrivateFieldExpression, span) == 0usize); - assert!(std::mem::offset_of!(PrivateFieldExpression, object) == 8usize); - assert!(std::mem::offset_of!(PrivateFieldExpression, field) == 24usize); + assert!(std::mem::offset_of!(PrivateFieldExpression, span) == 40usize); + assert!(std::mem::offset_of!(PrivateFieldExpression, object) == 24usize); + assert!(std::mem::offset_of!(PrivateFieldExpression, field) == 0usize); assert!(std::mem::offset_of!(PrivateFieldExpression, optional) == 48usize); assert!(size_of::() == 72usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(CallExpression, span) == 0usize); - assert!(std::mem::offset_of!(CallExpression, arguments) == 8usize); - assert!(std::mem::offset_of!(CallExpression, callee) == 40usize); + assert!(std::mem::offset_of!(CallExpression, span) == 48usize); + assert!(std::mem::offset_of!(CallExpression, arguments) == 0usize); + assert!(std::mem::offset_of!(CallExpression, callee) == 32usize); assert!(std::mem::offset_of!(CallExpression, type_parameters) == 56usize); assert!(std::mem::offset_of!(CallExpression, optional) == 64usize); assert!(size_of::() == 64usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(NewExpression, span) == 0usize); - assert!(std::mem::offset_of!(NewExpression, callee) == 8usize); - assert!(std::mem::offset_of!(NewExpression, arguments) == 24usize); + assert!(std::mem::offset_of!(NewExpression, span) == 48usize); + assert!(std::mem::offset_of!(NewExpression, callee) == 32usize); + assert!(std::mem::offset_of!(NewExpression, arguments) == 0usize); assert!(std::mem::offset_of!(NewExpression, type_parameters) == 56usize); assert!(size_of::() == 56usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(MetaProperty, span) == 0usize); - assert!(std::mem::offset_of!(MetaProperty, meta) == 8usize); - assert!(std::mem::offset_of!(MetaProperty, property) == 32usize); + assert!(std::mem::offset_of!(MetaProperty, span) == 48usize); + assert!(std::mem::offset_of!(MetaProperty, meta) == 0usize); + assert!(std::mem::offset_of!(MetaProperty, property) == 24usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(SpreadElement, span) == 0usize); - assert!(std::mem::offset_of!(SpreadElement, argument) == 8usize); + assert!(std::mem::offset_of!(SpreadElement, span) == 16usize); + assert!(std::mem::offset_of!(SpreadElement, argument) == 0usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 32usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(UpdateExpression, span) == 0usize); - assert!(std::mem::offset_of!(UpdateExpression, operator) == 8usize); - assert!(std::mem::offset_of!(UpdateExpression, prefix) == 9usize); - assert!(std::mem::offset_of!(UpdateExpression, argument) == 16usize); + assert!(std::mem::offset_of!(UpdateExpression, span) == 16usize); + assert!(std::mem::offset_of!(UpdateExpression, operator) == 24usize); + assert!(std::mem::offset_of!(UpdateExpression, prefix) == 25usize); + assert!(std::mem::offset_of!(UpdateExpression, argument) == 0usize); assert!(size_of::() == 32usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(UnaryExpression, span) == 0usize); - assert!(std::mem::offset_of!(UnaryExpression, operator) == 8usize); - assert!(std::mem::offset_of!(UnaryExpression, argument) == 16usize); + assert!(std::mem::offset_of!(UnaryExpression, span) == 16usize); + assert!(std::mem::offset_of!(UnaryExpression, operator) == 24usize); + assert!(std::mem::offset_of!(UnaryExpression, argument) == 0usize); assert!(size_of::() == 48usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(BinaryExpression, span) == 0usize); - assert!(std::mem::offset_of!(BinaryExpression, left) == 8usize); - assert!(std::mem::offset_of!(BinaryExpression, operator) == 24usize); - assert!(std::mem::offset_of!(BinaryExpression, right) == 32usize); + assert!(std::mem::offset_of!(BinaryExpression, span) == 32usize); + assert!(std::mem::offset_of!(BinaryExpression, left) == 0usize); + assert!(std::mem::offset_of!(BinaryExpression, operator) == 40usize); + assert!(std::mem::offset_of!(BinaryExpression, right) == 16usize); assert!(size_of::() == 56usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(PrivateInExpression, span) == 0usize); - assert!(std::mem::offset_of!(PrivateInExpression, left) == 8usize); - assert!(std::mem::offset_of!(PrivateInExpression, operator) == 32usize); - assert!(std::mem::offset_of!(PrivateInExpression, right) == 40usize); + assert!(std::mem::offset_of!(PrivateInExpression, span) == 40usize); + assert!(std::mem::offset_of!(PrivateInExpression, left) == 0usize); + assert!(std::mem::offset_of!(PrivateInExpression, operator) == 48usize); + assert!(std::mem::offset_of!(PrivateInExpression, right) == 24usize); assert!(size_of::() == 48usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(LogicalExpression, span) == 0usize); - assert!(std::mem::offset_of!(LogicalExpression, left) == 8usize); - assert!(std::mem::offset_of!(LogicalExpression, operator) == 24usize); - assert!(std::mem::offset_of!(LogicalExpression, right) == 32usize); + assert!(std::mem::offset_of!(LogicalExpression, span) == 32usize); + assert!(std::mem::offset_of!(LogicalExpression, left) == 0usize); + assert!(std::mem::offset_of!(LogicalExpression, operator) == 40usize); + assert!(std::mem::offset_of!(LogicalExpression, right) == 16usize); assert!(size_of::() == 56usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ConditionalExpression, span) == 0usize); - assert!(std::mem::offset_of!(ConditionalExpression, test) == 8usize); - assert!(std::mem::offset_of!(ConditionalExpression, consequent) == 24usize); - assert!(std::mem::offset_of!(ConditionalExpression, alternate) == 40usize); + assert!(std::mem::offset_of!(ConditionalExpression, span) == 48usize); + assert!(std::mem::offset_of!(ConditionalExpression, test) == 0usize); + assert!(std::mem::offset_of!(ConditionalExpression, consequent) == 16usize); + assert!(std::mem::offset_of!(ConditionalExpression, alternate) == 32usize); assert!(size_of::() == 48usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(AssignmentExpression, span) == 0usize); - assert!(std::mem::offset_of!(AssignmentExpression, operator) == 8usize); - assert!(std::mem::offset_of!(AssignmentExpression, left) == 16usize); - assert!(std::mem::offset_of!(AssignmentExpression, right) == 32usize); + assert!(std::mem::offset_of!(AssignmentExpression, span) == 32usize); + assert!(std::mem::offset_of!(AssignmentExpression, operator) == 40usize); + assert!(std::mem::offset_of!(AssignmentExpression, left) == 0usize); + assert!(std::mem::offset_of!(AssignmentExpression, right) == 16usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 16usize); @@ -214,184 +214,184 @@ const _: () = { assert!(align_of::() == 8usize); assert!(size_of::() == 80usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ArrayAssignmentTarget, span) == 0usize); - assert!(std::mem::offset_of!(ArrayAssignmentTarget, elements) == 8usize); - assert!(std::mem::offset_of!(ArrayAssignmentTarget, rest) == 40usize); - assert!(std::mem::offset_of!(ArrayAssignmentTarget, trailing_comma) == 64usize); + assert!(std::mem::offset_of!(ArrayAssignmentTarget, span) == 68usize); + assert!(std::mem::offset_of!(ArrayAssignmentTarget, elements) == 0usize); + assert!(std::mem::offset_of!(ArrayAssignmentTarget, rest) == 32usize); + assert!(std::mem::offset_of!(ArrayAssignmentTarget, trailing_comma) == 56usize); assert!(size_of::() == 64usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ObjectAssignmentTarget, span) == 0usize); - assert!(std::mem::offset_of!(ObjectAssignmentTarget, properties) == 8usize); - assert!(std::mem::offset_of!(ObjectAssignmentTarget, rest) == 40usize); + assert!(std::mem::offset_of!(ObjectAssignmentTarget, span) == 56usize); + assert!(std::mem::offset_of!(ObjectAssignmentTarget, properties) == 0usize); + assert!(std::mem::offset_of!(ObjectAssignmentTarget, rest) == 32usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(AssignmentTargetRest, span) == 0usize); - assert!(std::mem::offset_of!(AssignmentTargetRest, target) == 8usize); + assert!(std::mem::offset_of!(AssignmentTargetRest, span) == 16usize); + assert!(std::mem::offset_of!(AssignmentTargetRest, target) == 0usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(AssignmentTargetWithDefault, span) == 0usize); - assert!(std::mem::offset_of!(AssignmentTargetWithDefault, binding) == 8usize); - assert!(std::mem::offset_of!(AssignmentTargetWithDefault, init) == 24usize); + assert!(std::mem::offset_of!(AssignmentTargetWithDefault, span) == 32usize); + assert!(std::mem::offset_of!(AssignmentTargetWithDefault, binding) == 0usize); + assert!(std::mem::offset_of!(AssignmentTargetWithDefault, init) == 16usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 56usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(AssignmentTargetPropertyIdentifier, span) == 0usize); - assert!(std::mem::offset_of!(AssignmentTargetPropertyIdentifier, binding) == 8usize); - assert!(std::mem::offset_of!(AssignmentTargetPropertyIdentifier, init) == 40usize); + assert!(std::mem::offset_of!(AssignmentTargetPropertyIdentifier, span) == 48usize); + assert!(std::mem::offset_of!(AssignmentTargetPropertyIdentifier, binding) == 0usize); + assert!(std::mem::offset_of!(AssignmentTargetPropertyIdentifier, init) == 32usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(AssignmentTargetPropertyProperty, span) == 0usize); - assert!(std::mem::offset_of!(AssignmentTargetPropertyProperty, name) == 8usize); - assert!(std::mem::offset_of!(AssignmentTargetPropertyProperty, binding) == 24usize); + assert!(std::mem::offset_of!(AssignmentTargetPropertyProperty, span) == 32usize); + assert!(std::mem::offset_of!(AssignmentTargetPropertyProperty, name) == 0usize); + assert!(std::mem::offset_of!(AssignmentTargetPropertyProperty, binding) == 16usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(SequenceExpression, span) == 0usize); - assert!(std::mem::offset_of!(SequenceExpression, expressions) == 8usize); + assert!(std::mem::offset_of!(SequenceExpression, span) == 32usize); + assert!(std::mem::offset_of!(SequenceExpression, expressions) == 0usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(std::mem::offset_of!(Super, span) == 0usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(AwaitExpression, span) == 0usize); - assert!(std::mem::offset_of!(AwaitExpression, argument) == 8usize); + assert!(std::mem::offset_of!(AwaitExpression, span) == 16usize); + assert!(std::mem::offset_of!(AwaitExpression, argument) == 0usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ChainExpression, span) == 0usize); - assert!(std::mem::offset_of!(ChainExpression, expression) == 8usize); + assert!(std::mem::offset_of!(ChainExpression, span) == 16usize); + assert!(std::mem::offset_of!(ChainExpression, expression) == 0usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ParenthesizedExpression, span) == 0usize); - assert!(std::mem::offset_of!(ParenthesizedExpression, expression) == 8usize); + assert!(std::mem::offset_of!(ParenthesizedExpression, span) == 16usize); + assert!(std::mem::offset_of!(ParenthesizedExpression, expression) == 0usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 48usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(Directive, span) == 0usize); - assert!(std::mem::offset_of!(Directive, expression) == 8usize); - assert!(std::mem::offset_of!(Directive, directive) == 32usize); + assert!(std::mem::offset_of!(Directive, span) == 40usize); + assert!(std::mem::offset_of!(Directive, expression) == 0usize); + assert!(std::mem::offset_of!(Directive, directive) == 24usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(Hashbang, span) == 0usize); - assert!(std::mem::offset_of!(Hashbang, value) == 8usize); + assert!(std::mem::offset_of!(Hashbang, span) == 16usize); + assert!(std::mem::offset_of!(Hashbang, value) == 0usize); assert!(size_of::() == 48usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(BlockStatement, span) == 0usize); - assert!(std::mem::offset_of!(BlockStatement, body) == 8usize); + assert!(std::mem::offset_of!(BlockStatement, span) == 32usize); + assert!(std::mem::offset_of!(BlockStatement, body) == 0usize); assert!(std::mem::offset_of!(BlockStatement, scope_id) == 40usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); - assert!(size_of::() == 56usize); + assert!(size_of::() == 48usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(VariableDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(VariableDeclaration, kind) == 8usize); - assert!(std::mem::offset_of!(VariableDeclaration, declarations) == 16usize); - assert!(std::mem::offset_of!(VariableDeclaration, declare) == 48usize); + assert!(std::mem::offset_of!(VariableDeclaration, span) == 32usize); + assert!(std::mem::offset_of!(VariableDeclaration, kind) == 40usize); + assert!(std::mem::offset_of!(VariableDeclaration, declarations) == 0usize); + assert!(std::mem::offset_of!(VariableDeclaration, declare) == 41usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); - assert!(size_of::() == 72usize); + assert!(size_of::() == 64usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(VariableDeclarator, span) == 0usize); - assert!(std::mem::offset_of!(VariableDeclarator, kind) == 8usize); - assert!(std::mem::offset_of!(VariableDeclarator, id) == 16usize); - assert!(std::mem::offset_of!(VariableDeclarator, init) == 48usize); - assert!(std::mem::offset_of!(VariableDeclarator, definite) == 64usize); + assert!(std::mem::offset_of!(VariableDeclarator, span) == 48usize); + assert!(std::mem::offset_of!(VariableDeclarator, kind) == 56usize); + assert!(std::mem::offset_of!(VariableDeclarator, id) == 0usize); + assert!(std::mem::offset_of!(VariableDeclarator, init) == 32usize); + assert!(std::mem::offset_of!(VariableDeclarator, definite) == 57usize); assert!(size_of::() == 48usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(UsingDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(UsingDeclaration, is_await) == 8usize); - assert!(std::mem::offset_of!(UsingDeclaration, declarations) == 16usize); + assert!(std::mem::offset_of!(UsingDeclaration, span) == 32usize); + assert!(std::mem::offset_of!(UsingDeclaration, is_await) == 40usize); + assert!(std::mem::offset_of!(UsingDeclaration, declarations) == 0usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(std::mem::offset_of!(EmptyStatement, span) == 0usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ExpressionStatement, span) == 0usize); - assert!(std::mem::offset_of!(ExpressionStatement, expression) == 8usize); + assert!(std::mem::offset_of!(ExpressionStatement, span) == 16usize); + assert!(std::mem::offset_of!(ExpressionStatement, expression) == 0usize); assert!(size_of::() == 56usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(IfStatement, span) == 0usize); - assert!(std::mem::offset_of!(IfStatement, test) == 8usize); - assert!(std::mem::offset_of!(IfStatement, consequent) == 24usize); - assert!(std::mem::offset_of!(IfStatement, alternate) == 40usize); + assert!(std::mem::offset_of!(IfStatement, span) == 48usize); + assert!(std::mem::offset_of!(IfStatement, test) == 0usize); + assert!(std::mem::offset_of!(IfStatement, consequent) == 16usize); + assert!(std::mem::offset_of!(IfStatement, alternate) == 32usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(DoWhileStatement, span) == 0usize); - assert!(std::mem::offset_of!(DoWhileStatement, body) == 8usize); - assert!(std::mem::offset_of!(DoWhileStatement, test) == 24usize); + assert!(std::mem::offset_of!(DoWhileStatement, span) == 32usize); + assert!(std::mem::offset_of!(DoWhileStatement, body) == 0usize); + assert!(std::mem::offset_of!(DoWhileStatement, test) == 16usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(WhileStatement, span) == 0usize); - assert!(std::mem::offset_of!(WhileStatement, test) == 8usize); - assert!(std::mem::offset_of!(WhileStatement, body) == 24usize); + assert!(std::mem::offset_of!(WhileStatement, span) == 32usize); + assert!(std::mem::offset_of!(WhileStatement, test) == 0usize); + assert!(std::mem::offset_of!(WhileStatement, body) == 16usize); assert!(size_of::() == 80usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ForStatement, span) == 0usize); - assert!(std::mem::offset_of!(ForStatement, init) == 8usize); - assert!(std::mem::offset_of!(ForStatement, test) == 24usize); - assert!(std::mem::offset_of!(ForStatement, update) == 40usize); - assert!(std::mem::offset_of!(ForStatement, body) == 56usize); + assert!(std::mem::offset_of!(ForStatement, span) == 64usize); + assert!(std::mem::offset_of!(ForStatement, init) == 0usize); + assert!(std::mem::offset_of!(ForStatement, test) == 16usize); + assert!(std::mem::offset_of!(ForStatement, update) == 32usize); + assert!(std::mem::offset_of!(ForStatement, body) == 48usize); assert!(std::mem::offset_of!(ForStatement, scope_id) == 72usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 64usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ForInStatement, span) == 0usize); - assert!(std::mem::offset_of!(ForInStatement, left) == 8usize); - assert!(std::mem::offset_of!(ForInStatement, right) == 24usize); - assert!(std::mem::offset_of!(ForInStatement, body) == 40usize); + assert!(std::mem::offset_of!(ForInStatement, span) == 48usize); + assert!(std::mem::offset_of!(ForInStatement, left) == 0usize); + assert!(std::mem::offset_of!(ForInStatement, right) == 16usize); + assert!(std::mem::offset_of!(ForInStatement, body) == 32usize); assert!(std::mem::offset_of!(ForInStatement, scope_id) == 56usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); - assert!(size_of::() == 72usize); + assert!(size_of::() == 64usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ForOfStatement, span) == 0usize); - assert!(std::mem::offset_of!(ForOfStatement, r#await) == 8usize); - assert!(std::mem::offset_of!(ForOfStatement, left) == 16usize); - assert!(std::mem::offset_of!(ForOfStatement, right) == 32usize); - assert!(std::mem::offset_of!(ForOfStatement, body) == 48usize); - assert!(std::mem::offset_of!(ForOfStatement, scope_id) == 64usize); + assert!(std::mem::offset_of!(ForOfStatement, span) == 48usize); + assert!(std::mem::offset_of!(ForOfStatement, r#await) == 60usize); + assert!(std::mem::offset_of!(ForOfStatement, left) == 0usize); + assert!(std::mem::offset_of!(ForOfStatement, right) == 16usize); + assert!(std::mem::offset_of!(ForOfStatement, body) == 32usize); + assert!(std::mem::offset_of!(ForOfStatement, scope_id) == 56usize); assert!(size_of::() == 32usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ContinueStatement, span) == 0usize); - assert!(std::mem::offset_of!(ContinueStatement, label) == 8usize); + assert!(std::mem::offset_of!(ContinueStatement, span) == 24usize); + assert!(std::mem::offset_of!(ContinueStatement, label) == 0usize); assert!(size_of::() == 32usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(BreakStatement, span) == 0usize); - assert!(std::mem::offset_of!(BreakStatement, label) == 8usize); + assert!(std::mem::offset_of!(BreakStatement, span) == 24usize); + assert!(std::mem::offset_of!(BreakStatement, label) == 0usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ReturnStatement, span) == 0usize); - assert!(std::mem::offset_of!(ReturnStatement, argument) == 8usize); + assert!(std::mem::offset_of!(ReturnStatement, span) == 16usize); + assert!(std::mem::offset_of!(ReturnStatement, argument) == 0usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(WithStatement, span) == 0usize); - assert!(std::mem::offset_of!(WithStatement, object) == 8usize); - assert!(std::mem::offset_of!(WithStatement, body) == 24usize); + assert!(std::mem::offset_of!(WithStatement, span) == 32usize); + assert!(std::mem::offset_of!(WithStatement, object) == 0usize); + assert!(std::mem::offset_of!(WithStatement, body) == 16usize); assert!(size_of::() == 64usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(SwitchStatement, span) == 0usize); - assert!(std::mem::offset_of!(SwitchStatement, discriminant) == 8usize); - assert!(std::mem::offset_of!(SwitchStatement, cases) == 24usize); + assert!(std::mem::offset_of!(SwitchStatement, span) == 48usize); + assert!(std::mem::offset_of!(SwitchStatement, discriminant) == 32usize); + assert!(std::mem::offset_of!(SwitchStatement, cases) == 0usize); assert!(std::mem::offset_of!(SwitchStatement, scope_id) == 56usize); assert!(size_of::() == 56usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(SwitchCase, span) == 0usize); - assert!(std::mem::offset_of!(SwitchCase, test) == 8usize); - assert!(std::mem::offset_of!(SwitchCase, consequent) == 24usize); + assert!(std::mem::offset_of!(SwitchCase, span) == 48usize); + assert!(std::mem::offset_of!(SwitchCase, test) == 32usize); + assert!(std::mem::offset_of!(SwitchCase, consequent) == 0usize); assert!(size_of::() == 48usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(LabeledStatement, span) == 0usize); - assert!(std::mem::offset_of!(LabeledStatement, label) == 8usize); - assert!(std::mem::offset_of!(LabeledStatement, body) == 32usize); + assert!(std::mem::offset_of!(LabeledStatement, span) == 40usize); + assert!(std::mem::offset_of!(LabeledStatement, label) == 0usize); + assert!(std::mem::offset_of!(LabeledStatement, body) == 24usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ThrowStatement, span) == 0usize); - assert!(std::mem::offset_of!(ThrowStatement, argument) == 8usize); + assert!(std::mem::offset_of!(ThrowStatement, span) == 16usize); + assert!(std::mem::offset_of!(ThrowStatement, argument) == 0usize); assert!(size_of::() == 32usize); assert!(align_of::() == 8usize); assert!(std::mem::offset_of!(TryStatement, span) == 0usize); @@ -400,14 +400,14 @@ const _: () = { assert!(std::mem::offset_of!(TryStatement, finalizer) == 24usize); assert!(size_of::() == 64usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(CatchClause, span) == 0usize); - assert!(std::mem::offset_of!(CatchClause, param) == 8usize); + assert!(std::mem::offset_of!(CatchClause, span) == 40usize); + assert!(std::mem::offset_of!(CatchClause, param) == 0usize); assert!(std::mem::offset_of!(CatchClause, body) == 48usize); assert!(std::mem::offset_of!(CatchClause, scope_id) == 56usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(CatchParameter, span) == 0usize); - assert!(std::mem::offset_of!(CatchParameter, pattern) == 8usize); + assert!(std::mem::offset_of!(CatchParameter, span) == 32usize); + assert!(std::mem::offset_of!(CatchParameter, pattern) == 0usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(std::mem::offset_of!(DebuggerStatement, span) == 0usize); @@ -420,57 +420,57 @@ const _: () = { assert!(align_of::() == 8usize); assert!(size_of::() == 56usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(AssignmentPattern, span) == 0usize); - assert!(std::mem::offset_of!(AssignmentPattern, left) == 8usize); - assert!(std::mem::offset_of!(AssignmentPattern, right) == 40usize); + assert!(std::mem::offset_of!(AssignmentPattern, span) == 48usize); + assert!(std::mem::offset_of!(AssignmentPattern, left) == 0usize); + assert!(std::mem::offset_of!(AssignmentPattern, right) == 32usize); assert!(size_of::() == 48usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ObjectPattern, span) == 0usize); - assert!(std::mem::offset_of!(ObjectPattern, properties) == 8usize); + assert!(std::mem::offset_of!(ObjectPattern, span) == 32usize); + assert!(std::mem::offset_of!(ObjectPattern, properties) == 0usize); assert!(std::mem::offset_of!(ObjectPattern, rest) == 40usize); assert!(size_of::() == 64usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(BindingProperty, span) == 0usize); - assert!(std::mem::offset_of!(BindingProperty, key) == 8usize); - assert!(std::mem::offset_of!(BindingProperty, value) == 24usize); + assert!(std::mem::offset_of!(BindingProperty, span) == 48usize); + assert!(std::mem::offset_of!(BindingProperty, key) == 32usize); + assert!(std::mem::offset_of!(BindingProperty, value) == 0usize); assert!(std::mem::offset_of!(BindingProperty, shorthand) == 56usize); assert!(std::mem::offset_of!(BindingProperty, computed) == 57usize); assert!(size_of::() == 48usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ArrayPattern, span) == 0usize); - assert!(std::mem::offset_of!(ArrayPattern, elements) == 8usize); + assert!(std::mem::offset_of!(ArrayPattern, span) == 32usize); + assert!(std::mem::offset_of!(ArrayPattern, elements) == 0usize); assert!(std::mem::offset_of!(ArrayPattern, rest) == 40usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(BindingRestElement, span) == 0usize); - assert!(std::mem::offset_of!(BindingRestElement, argument) == 8usize); - assert!(size_of::() == 136usize); + assert!(std::mem::offset_of!(BindingRestElement, span) == 32usize); + assert!(std::mem::offset_of!(BindingRestElement, argument) == 0usize); + assert!(size_of::() == 120usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(Function, r#type) == 0usize); - assert!(std::mem::offset_of!(Function, span) == 4usize); - assert!(std::mem::offset_of!(Function, id) == 16usize); - assert!(std::mem::offset_of!(Function, generator) == 48usize); - assert!(std::mem::offset_of!(Function, r#async) == 49usize); - assert!(std::mem::offset_of!(Function, declare) == 50usize); - assert!(std::mem::offset_of!(Function, type_parameters) == 56usize); - assert!(std::mem::offset_of!(Function, this_param) == 64usize); - assert!(std::mem::offset_of!(Function, params) == 104usize); - assert!(std::mem::offset_of!(Function, return_type) == 112usize); - assert!(std::mem::offset_of!(Function, body) == 120usize); - assert!(std::mem::offset_of!(Function, scope_id) == 128usize); + assert!(std::mem::offset_of!(Function, r#type) == 116usize); + assert!(std::mem::offset_of!(Function, span) == 72usize); + assert!(std::mem::offset_of!(Function, id) == 40usize); + assert!(std::mem::offset_of!(Function, generator) == 117usize); + assert!(std::mem::offset_of!(Function, r#async) == 118usize); + assert!(std::mem::offset_of!(Function, declare) == 119usize); + assert!(std::mem::offset_of!(Function, type_parameters) == 80usize); + assert!(std::mem::offset_of!(Function, this_param) == 0usize); + assert!(std::mem::offset_of!(Function, params) == 88usize); + assert!(std::mem::offset_of!(Function, return_type) == 96usize); + assert!(std::mem::offset_of!(Function, body) == 104usize); + assert!(std::mem::offset_of!(Function, scope_id) == 112usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); assert!(size_of::() == 56usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(FormalParameters, span) == 0usize); - assert!(std::mem::offset_of!(FormalParameters, kind) == 8usize); - assert!(std::mem::offset_of!(FormalParameters, items) == 16usize); - assert!(std::mem::offset_of!(FormalParameters, rest) == 48usize); + assert!(std::mem::offset_of!(FormalParameters, span) == 32usize); + assert!(std::mem::offset_of!(FormalParameters, kind) == 48usize); + assert!(std::mem::offset_of!(FormalParameters, items) == 0usize); + assert!(std::mem::offset_of!(FormalParameters, rest) == 40usize); assert!(size_of::() == 80usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(FormalParameter, span) == 0usize); - assert!(std::mem::offset_of!(FormalParameter, decorators) == 8usize); - assert!(std::mem::offset_of!(FormalParameter, pattern) == 40usize); + assert!(std::mem::offset_of!(FormalParameter, span) == 64usize); + assert!(std::mem::offset_of!(FormalParameter, decorators) == 0usize); + assert!(std::mem::offset_of!(FormalParameter, pattern) == 32usize); assert!(std::mem::offset_of!(FormalParameter, accessibility) == 72usize); assert!(std::mem::offset_of!(FormalParameter, readonly) == 73usize); assert!(std::mem::offset_of!(FormalParameter, r#override) == 74usize); @@ -478,168 +478,168 @@ const _: () = { assert!(align_of::() == 1usize); assert!(size_of::() == 72usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(FunctionBody, span) == 0usize); - assert!(std::mem::offset_of!(FunctionBody, directives) == 8usize); - assert!(std::mem::offset_of!(FunctionBody, statements) == 40usize); - assert!(size_of::() == 56usize); + assert!(std::mem::offset_of!(FunctionBody, span) == 64usize); + assert!(std::mem::offset_of!(FunctionBody, directives) == 0usize); + assert!(std::mem::offset_of!(FunctionBody, statements) == 32usize); + assert!(size_of::() == 48usize); assert!(align_of::() == 8usize); assert!(std::mem::offset_of!(ArrowFunctionExpression, span) == 0usize); - assert!(std::mem::offset_of!(ArrowFunctionExpression, expression) == 8usize); - assert!(std::mem::offset_of!(ArrowFunctionExpression, r#async) == 9usize); - assert!(std::mem::offset_of!(ArrowFunctionExpression, type_parameters) == 16usize); - assert!(std::mem::offset_of!(ArrowFunctionExpression, params) == 24usize); - assert!(std::mem::offset_of!(ArrowFunctionExpression, return_type) == 32usize); - assert!(std::mem::offset_of!(ArrowFunctionExpression, body) == 40usize); - assert!(std::mem::offset_of!(ArrowFunctionExpression, scope_id) == 48usize); + assert!(std::mem::offset_of!(ArrowFunctionExpression, expression) == 44usize); + assert!(std::mem::offset_of!(ArrowFunctionExpression, r#async) == 45usize); + assert!(std::mem::offset_of!(ArrowFunctionExpression, type_parameters) == 8usize); + assert!(std::mem::offset_of!(ArrowFunctionExpression, params) == 16usize); + assert!(std::mem::offset_of!(ArrowFunctionExpression, return_type) == 24usize); + assert!(std::mem::offset_of!(ArrowFunctionExpression, body) == 32usize); + assert!(std::mem::offset_of!(ArrowFunctionExpression, scope_id) == 40usize); assert!(size_of::() == 32usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(YieldExpression, span) == 0usize); - assert!(std::mem::offset_of!(YieldExpression, delegate) == 8usize); - assert!(std::mem::offset_of!(YieldExpression, argument) == 16usize); - assert!(size_of::() == 160usize); + assert!(std::mem::offset_of!(YieldExpression, span) == 16usize); + assert!(std::mem::offset_of!(YieldExpression, delegate) == 24usize); + assert!(std::mem::offset_of!(YieldExpression, argument) == 0usize); + assert!(size_of::() == 152usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(Class, r#type) == 0usize); - assert!(std::mem::offset_of!(Class, span) == 4usize); - assert!(std::mem::offset_of!(Class, decorators) == 16usize); - assert!(std::mem::offset_of!(Class, id) == 48usize); - assert!(std::mem::offset_of!(Class, type_parameters) == 80usize); - assert!(std::mem::offset_of!(Class, super_class) == 88usize); - assert!(std::mem::offset_of!(Class, super_type_parameters) == 104usize); - assert!(std::mem::offset_of!(Class, implements) == 112usize); - assert!(std::mem::offset_of!(Class, body) == 144usize); - assert!(std::mem::offset_of!(Class, r#abstract) == 152usize); - assert!(std::mem::offset_of!(Class, declare) == 153usize); - assert!(std::mem::offset_of!(Class, scope_id) == 156usize); + assert!(std::mem::offset_of!(Class, r#type) == 148usize); + assert!(std::mem::offset_of!(Class, span) == 112usize); + assert!(std::mem::offset_of!(Class, decorators) == 0usize); + assert!(std::mem::offset_of!(Class, id) == 32usize); + assert!(std::mem::offset_of!(Class, type_parameters) == 120usize); + assert!(std::mem::offset_of!(Class, super_class) == 96usize); + assert!(std::mem::offset_of!(Class, super_type_parameters) == 128usize); + assert!(std::mem::offset_of!(Class, implements) == 64usize); + assert!(std::mem::offset_of!(Class, body) == 136usize); + assert!(std::mem::offset_of!(Class, r#abstract) == 149usize); + assert!(std::mem::offset_of!(Class, declare) == 150usize); + assert!(std::mem::offset_of!(Class, scope_id) == 144usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ClassBody, span) == 0usize); - assert!(std::mem::offset_of!(ClassBody, body) == 8usize); + assert!(std::mem::offset_of!(ClassBody, span) == 32usize); + assert!(std::mem::offset_of!(ClassBody, body) == 0usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); - assert!(size_of::() == 80usize); + assert!(size_of::() == 72usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(MethodDefinition, r#type) == 0usize); - assert!(std::mem::offset_of!(MethodDefinition, span) == 4usize); - assert!(std::mem::offset_of!(MethodDefinition, decorators) == 16usize); - assert!(std::mem::offset_of!(MethodDefinition, key) == 48usize); - assert!(std::mem::offset_of!(MethodDefinition, value) == 64usize); - assert!(std::mem::offset_of!(MethodDefinition, kind) == 72usize); - assert!(std::mem::offset_of!(MethodDefinition, computed) == 73usize); - assert!(std::mem::offset_of!(MethodDefinition, r#static) == 74usize); - assert!(std::mem::offset_of!(MethodDefinition, r#override) == 75usize); - assert!(std::mem::offset_of!(MethodDefinition, optional) == 76usize); - assert!(std::mem::offset_of!(MethodDefinition, accessibility) == 77usize); + assert!(std::mem::offset_of!(MethodDefinition, r#type) == 64usize); + assert!(std::mem::offset_of!(MethodDefinition, span) == 48usize); + assert!(std::mem::offset_of!(MethodDefinition, decorators) == 0usize); + assert!(std::mem::offset_of!(MethodDefinition, key) == 32usize); + assert!(std::mem::offset_of!(MethodDefinition, value) == 56usize); + assert!(std::mem::offset_of!(MethodDefinition, kind) == 65usize); + assert!(std::mem::offset_of!(MethodDefinition, computed) == 66usize); + assert!(std::mem::offset_of!(MethodDefinition, r#static) == 67usize); + assert!(std::mem::offset_of!(MethodDefinition, r#override) == 68usize); + assert!(std::mem::offset_of!(MethodDefinition, optional) == 69usize); + assert!(std::mem::offset_of!(MethodDefinition, accessibility) == 70usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); - assert!(size_of::() == 104usize); + assert!(size_of::() == 96usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(PropertyDefinition, r#type) == 0usize); - assert!(std::mem::offset_of!(PropertyDefinition, span) == 4usize); - assert!(std::mem::offset_of!(PropertyDefinition, decorators) == 16usize); - assert!(std::mem::offset_of!(PropertyDefinition, key) == 48usize); - assert!(std::mem::offset_of!(PropertyDefinition, value) == 64usize); - assert!(std::mem::offset_of!(PropertyDefinition, computed) == 80usize); - assert!(std::mem::offset_of!(PropertyDefinition, r#static) == 81usize); - assert!(std::mem::offset_of!(PropertyDefinition, declare) == 82usize); - assert!(std::mem::offset_of!(PropertyDefinition, r#override) == 83usize); - assert!(std::mem::offset_of!(PropertyDefinition, optional) == 84usize); - assert!(std::mem::offset_of!(PropertyDefinition, definite) == 85usize); - assert!(std::mem::offset_of!(PropertyDefinition, readonly) == 86usize); - assert!(std::mem::offset_of!(PropertyDefinition, type_annotation) == 88usize); - assert!(std::mem::offset_of!(PropertyDefinition, accessibility) == 96usize); + assert!(std::mem::offset_of!(PropertyDefinition, r#type) == 80usize); + assert!(std::mem::offset_of!(PropertyDefinition, span) == 64usize); + assert!(std::mem::offset_of!(PropertyDefinition, decorators) == 0usize); + assert!(std::mem::offset_of!(PropertyDefinition, key) == 32usize); + assert!(std::mem::offset_of!(PropertyDefinition, value) == 48usize); + assert!(std::mem::offset_of!(PropertyDefinition, computed) == 81usize); + assert!(std::mem::offset_of!(PropertyDefinition, r#static) == 82usize); + assert!(std::mem::offset_of!(PropertyDefinition, declare) == 83usize); + assert!(std::mem::offset_of!(PropertyDefinition, r#override) == 84usize); + assert!(std::mem::offset_of!(PropertyDefinition, optional) == 85usize); + assert!(std::mem::offset_of!(PropertyDefinition, definite) == 86usize); + assert!(std::mem::offset_of!(PropertyDefinition, readonly) == 87usize); + assert!(std::mem::offset_of!(PropertyDefinition, type_annotation) == 72usize); + assert!(std::mem::offset_of!(PropertyDefinition, accessibility) == 88usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(PrivateIdentifier, span) == 0usize); - assert!(std::mem::offset_of!(PrivateIdentifier, name) == 8usize); + assert!(std::mem::offset_of!(PrivateIdentifier, span) == 16usize); + assert!(std::mem::offset_of!(PrivateIdentifier, name) == 0usize); assert!(size_of::() == 48usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(StaticBlock, span) == 0usize); - assert!(std::mem::offset_of!(StaticBlock, body) == 8usize); + assert!(std::mem::offset_of!(StaticBlock, span) == 32usize); + assert!(std::mem::offset_of!(StaticBlock, body) == 0usize); assert!(std::mem::offset_of!(StaticBlock, scope_id) == 40usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); - assert!(size_of::() == 88usize); + assert!(size_of::() == 80usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(AccessorProperty, r#type) == 0usize); - assert!(std::mem::offset_of!(AccessorProperty, span) == 4usize); - assert!(std::mem::offset_of!(AccessorProperty, decorators) == 16usize); - assert!(std::mem::offset_of!(AccessorProperty, key) == 48usize); - assert!(std::mem::offset_of!(AccessorProperty, value) == 64usize); - assert!(std::mem::offset_of!(AccessorProperty, computed) == 80usize); - assert!(std::mem::offset_of!(AccessorProperty, r#static) == 81usize); + assert!(std::mem::offset_of!(AccessorProperty, r#type) == 72usize); + assert!(std::mem::offset_of!(AccessorProperty, span) == 64usize); + assert!(std::mem::offset_of!(AccessorProperty, decorators) == 0usize); + assert!(std::mem::offset_of!(AccessorProperty, key) == 32usize); + assert!(std::mem::offset_of!(AccessorProperty, value) == 48usize); + assert!(std::mem::offset_of!(AccessorProperty, computed) == 73usize); + assert!(std::mem::offset_of!(AccessorProperty, r#static) == 74usize); assert!(size_of::() == 56usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ImportExpression, span) == 0usize); - assert!(std::mem::offset_of!(ImportExpression, source) == 8usize); - assert!(std::mem::offset_of!(ImportExpression, arguments) == 24usize); + assert!(std::mem::offset_of!(ImportExpression, span) == 48usize); + assert!(std::mem::offset_of!(ImportExpression, source) == 32usize); + assert!(std::mem::offset_of!(ImportExpression, arguments) == 0usize); assert!(size_of::() == 136usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ImportDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(ImportDeclaration, specifiers) == 8usize); - assert!(std::mem::offset_of!(ImportDeclaration, source) == 40usize); - assert!(std::mem::offset_of!(ImportDeclaration, with_clause) == 64usize); + assert!(std::mem::offset_of!(ImportDeclaration, span) == 120usize); + assert!(std::mem::offset_of!(ImportDeclaration, specifiers) == 64usize); + assert!(std::mem::offset_of!(ImportDeclaration, source) == 96usize); + assert!(std::mem::offset_of!(ImportDeclaration, with_clause) == 0usize); assert!(std::mem::offset_of!(ImportDeclaration, import_kind) == 128usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 88usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ImportSpecifier, span) == 0usize); - assert!(std::mem::offset_of!(ImportSpecifier, imported) == 8usize); - assert!(std::mem::offset_of!(ImportSpecifier, local) == 48usize); + assert!(std::mem::offset_of!(ImportSpecifier, span) == 72usize); + assert!(std::mem::offset_of!(ImportSpecifier, imported) == 0usize); + assert!(std::mem::offset_of!(ImportSpecifier, local) == 40usize); assert!(std::mem::offset_of!(ImportSpecifier, import_kind) == 80usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ImportDefaultSpecifier, span) == 0usize); - assert!(std::mem::offset_of!(ImportDefaultSpecifier, local) == 8usize); + assert!(std::mem::offset_of!(ImportDefaultSpecifier, span) == 32usize); + assert!(std::mem::offset_of!(ImportDefaultSpecifier, local) == 0usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ImportNamespaceSpecifier, span) == 0usize); - assert!(std::mem::offset_of!(ImportNamespaceSpecifier, local) == 8usize); + assert!(std::mem::offset_of!(ImportNamespaceSpecifier, span) == 32usize); + assert!(std::mem::offset_of!(ImportNamespaceSpecifier, local) == 0usize); assert!(size_of::() == 64usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(WithClause, span) == 0usize); - assert!(std::mem::offset_of!(WithClause, attributes_keyword) == 8usize); - assert!(std::mem::offset_of!(WithClause, with_entries) == 32usize); + assert!(std::mem::offset_of!(WithClause, span) == 56usize); + assert!(std::mem::offset_of!(WithClause, attributes_keyword) == 32usize); + assert!(std::mem::offset_of!(WithClause, with_entries) == 0usize); assert!(size_of::() == 64usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ImportAttribute, span) == 0usize); - assert!(std::mem::offset_of!(ImportAttribute, key) == 8usize); - assert!(std::mem::offset_of!(ImportAttribute, value) == 40usize); + assert!(std::mem::offset_of!(ImportAttribute, span) == 56usize); + assert!(std::mem::offset_of!(ImportAttribute, key) == 0usize); + assert!(std::mem::offset_of!(ImportAttribute, value) == 32usize); assert!(size_of::() == 32usize); assert!(align_of::() == 8usize); assert!(size_of::() == 152usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ExportNamedDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(ExportNamedDeclaration, declaration) == 8usize); - assert!(std::mem::offset_of!(ExportNamedDeclaration, specifiers) == 24usize); - assert!(std::mem::offset_of!(ExportNamedDeclaration, source) == 56usize); - assert!(std::mem::offset_of!(ExportNamedDeclaration, export_kind) == 80usize); - assert!(std::mem::offset_of!(ExportNamedDeclaration, with_clause) == 88usize); + assert!(std::mem::offset_of!(ExportNamedDeclaration, span) == 136usize); + assert!(std::mem::offset_of!(ExportNamedDeclaration, declaration) == 120usize); + assert!(std::mem::offset_of!(ExportNamedDeclaration, specifiers) == 64usize); + assert!(std::mem::offset_of!(ExportNamedDeclaration, source) == 96usize); + assert!(std::mem::offset_of!(ExportNamedDeclaration, export_kind) == 144usize); + assert!(std::mem::offset_of!(ExportNamedDeclaration, with_clause) == 0usize); assert!(size_of::() == 64usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ExportDefaultDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(ExportDefaultDeclaration, declaration) == 8usize); - assert!(std::mem::offset_of!(ExportDefaultDeclaration, exported) == 24usize); + assert!(std::mem::offset_of!(ExportDefaultDeclaration, span) == 56usize); + assert!(std::mem::offset_of!(ExportDefaultDeclaration, declaration) == 40usize); + assert!(std::mem::offset_of!(ExportDefaultDeclaration, exported) == 0usize); assert!(size_of::() == 144usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ExportAllDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(ExportAllDeclaration, exported) == 8usize); - assert!(std::mem::offset_of!(ExportAllDeclaration, source) == 48usize); - assert!(std::mem::offset_of!(ExportAllDeclaration, with_clause) == 72usize); + assert!(std::mem::offset_of!(ExportAllDeclaration, span) == 128usize); + assert!(std::mem::offset_of!(ExportAllDeclaration, exported) == 64usize); + assert!(std::mem::offset_of!(ExportAllDeclaration, source) == 104usize); + assert!(std::mem::offset_of!(ExportAllDeclaration, with_clause) == 0usize); assert!(std::mem::offset_of!(ExportAllDeclaration, export_kind) == 136usize); assert!(size_of::() == 96usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(ExportSpecifier, span) == 0usize); - assert!(std::mem::offset_of!(ExportSpecifier, local) == 8usize); - assert!(std::mem::offset_of!(ExportSpecifier, exported) == 48usize); + assert!(std::mem::offset_of!(ExportSpecifier, span) == 80usize); + assert!(std::mem::offset_of!(ExportSpecifier, local) == 0usize); + assert!(std::mem::offset_of!(ExportSpecifier, exported) == 40usize); assert!(std::mem::offset_of!(ExportSpecifier, export_kind) == 88usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); @@ -647,90 +647,90 @@ const _: () = { assert!(align_of::() == 8usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSThisParameter, span) == 0usize); - assert!(std::mem::offset_of!(TSThisParameter, this) == 8usize); + assert!(std::mem::offset_of!(TSThisParameter, span) == 24usize); + assert!(std::mem::offset_of!(TSThisParameter, this) == 0usize); assert!(std::mem::offset_of!(TSThisParameter, type_annotation) == 32usize); assert!(size_of::() == 80usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSEnumDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(TSEnumDeclaration, id) == 8usize); - assert!(std::mem::offset_of!(TSEnumDeclaration, members) == 40usize); - assert!(std::mem::offset_of!(TSEnumDeclaration, r#const) == 72usize); - assert!(std::mem::offset_of!(TSEnumDeclaration, declare) == 73usize); - assert!(std::mem::offset_of!(TSEnumDeclaration, scope_id) == 76usize); + assert!(std::mem::offset_of!(TSEnumDeclaration, span) == 64usize); + assert!(std::mem::offset_of!(TSEnumDeclaration, id) == 0usize); + assert!(std::mem::offset_of!(TSEnumDeclaration, members) == 32usize); + assert!(std::mem::offset_of!(TSEnumDeclaration, r#const) == 76usize); + assert!(std::mem::offset_of!(TSEnumDeclaration, declare) == 77usize); + assert!(std::mem::offset_of!(TSEnumDeclaration, scope_id) == 72usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSEnumMember, span) == 0usize); - assert!(std::mem::offset_of!(TSEnumMember, id) == 8usize); - assert!(std::mem::offset_of!(TSEnumMember, initializer) == 24usize); + assert!(std::mem::offset_of!(TSEnumMember, span) == 32usize); + assert!(std::mem::offset_of!(TSEnumMember, id) == 0usize); + assert!(std::mem::offset_of!(TSEnumMember, initializer) == 16usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSTypeAnnotation, span) == 0usize); - assert!(std::mem::offset_of!(TSTypeAnnotation, type_annotation) == 8usize); + assert!(std::mem::offset_of!(TSTypeAnnotation, span) == 16usize); + assert!(std::mem::offset_of!(TSTypeAnnotation, type_annotation) == 0usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSLiteralType, span) == 0usize); - assert!(std::mem::offset_of!(TSLiteralType, literal) == 8usize); + assert!(std::mem::offset_of!(TSLiteralType, span) == 16usize); + assert!(std::mem::offset_of!(TSLiteralType, literal) == 0usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 80usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSConditionalType, span) == 0usize); - assert!(std::mem::offset_of!(TSConditionalType, check_type) == 8usize); - assert!(std::mem::offset_of!(TSConditionalType, extends_type) == 24usize); - assert!(std::mem::offset_of!(TSConditionalType, true_type) == 40usize); - assert!(std::mem::offset_of!(TSConditionalType, false_type) == 56usize); + assert!(std::mem::offset_of!(TSConditionalType, span) == 64usize); + assert!(std::mem::offset_of!(TSConditionalType, check_type) == 0usize); + assert!(std::mem::offset_of!(TSConditionalType, extends_type) == 16usize); + assert!(std::mem::offset_of!(TSConditionalType, true_type) == 32usize); + assert!(std::mem::offset_of!(TSConditionalType, false_type) == 48usize); assert!(std::mem::offset_of!(TSConditionalType, scope_id) == 72usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSUnionType, span) == 0usize); - assert!(std::mem::offset_of!(TSUnionType, types) == 8usize); + assert!(std::mem::offset_of!(TSUnionType, span) == 32usize); + assert!(std::mem::offset_of!(TSUnionType, types) == 0usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSIntersectionType, span) == 0usize); - assert!(std::mem::offset_of!(TSIntersectionType, types) == 8usize); + assert!(std::mem::offset_of!(TSIntersectionType, span) == 32usize); + assert!(std::mem::offset_of!(TSIntersectionType, types) == 0usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSParenthesizedType, span) == 0usize); - assert!(std::mem::offset_of!(TSParenthesizedType, type_annotation) == 8usize); + assert!(std::mem::offset_of!(TSParenthesizedType, span) == 16usize); + assert!(std::mem::offset_of!(TSParenthesizedType, type_annotation) == 0usize); assert!(size_of::() == 32usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSTypeOperator, span) == 0usize); - assert!(std::mem::offset_of!(TSTypeOperator, operator) == 8usize); - assert!(std::mem::offset_of!(TSTypeOperator, type_annotation) == 16usize); + assert!(std::mem::offset_of!(TSTypeOperator, span) == 16usize); + assert!(std::mem::offset_of!(TSTypeOperator, operator) == 24usize); + assert!(std::mem::offset_of!(TSTypeOperator, type_annotation) == 0usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSArrayType, span) == 0usize); - assert!(std::mem::offset_of!(TSArrayType, element_type) == 8usize); + assert!(std::mem::offset_of!(TSArrayType, span) == 16usize); + assert!(std::mem::offset_of!(TSArrayType, element_type) == 0usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSIndexedAccessType, span) == 0usize); - assert!(std::mem::offset_of!(TSIndexedAccessType, object_type) == 8usize); - assert!(std::mem::offset_of!(TSIndexedAccessType, index_type) == 24usize); + assert!(std::mem::offset_of!(TSIndexedAccessType, span) == 32usize); + assert!(std::mem::offset_of!(TSIndexedAccessType, object_type) == 0usize); + assert!(std::mem::offset_of!(TSIndexedAccessType, index_type) == 16usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSTupleType, span) == 0usize); - assert!(std::mem::offset_of!(TSTupleType, element_types) == 8usize); + assert!(std::mem::offset_of!(TSTupleType, span) == 32usize); + assert!(std::mem::offset_of!(TSTupleType, element_types) == 0usize); assert!(size_of::() == 56usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSNamedTupleMember, span) == 0usize); - assert!(std::mem::offset_of!(TSNamedTupleMember, element_type) == 8usize); - assert!(std::mem::offset_of!(TSNamedTupleMember, label) == 24usize); + assert!(std::mem::offset_of!(TSNamedTupleMember, span) == 40usize); + assert!(std::mem::offset_of!(TSNamedTupleMember, element_type) == 24usize); + assert!(std::mem::offset_of!(TSNamedTupleMember, label) == 0usize); assert!(std::mem::offset_of!(TSNamedTupleMember, optional) == 48usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSOptionalType, span) == 0usize); - assert!(std::mem::offset_of!(TSOptionalType, type_annotation) == 8usize); + assert!(std::mem::offset_of!(TSOptionalType, span) == 16usize); + assert!(std::mem::offset_of!(TSOptionalType, type_annotation) == 0usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSRestType, span) == 0usize); - assert!(std::mem::offset_of!(TSRestType, type_annotation) == 8usize); + assert!(std::mem::offset_of!(TSRestType, span) == 16usize); + assert!(std::mem::offset_of!(TSRestType, type_annotation) == 0usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 8usize); @@ -777,98 +777,98 @@ const _: () = { assert!(std::mem::offset_of!(TSBigIntKeyword, span) == 0usize); assert!(size_of::() == 32usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSTypeReference, span) == 0usize); - assert!(std::mem::offset_of!(TSTypeReference, type_name) == 8usize); + assert!(std::mem::offset_of!(TSTypeReference, span) == 16usize); + assert!(std::mem::offset_of!(TSTypeReference, type_name) == 0usize); assert!(std::mem::offset_of!(TSTypeReference, type_parameters) == 24usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 48usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSQualifiedName, span) == 0usize); - assert!(std::mem::offset_of!(TSQualifiedName, left) == 8usize); - assert!(std::mem::offset_of!(TSQualifiedName, right) == 24usize); + assert!(std::mem::offset_of!(TSQualifiedName, span) == 40usize); + assert!(std::mem::offset_of!(TSQualifiedName, left) == 24usize); + assert!(std::mem::offset_of!(TSQualifiedName, right) == 0usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSTypeParameterInstantiation, span) == 0usize); - assert!(std::mem::offset_of!(TSTypeParameterInstantiation, params) == 8usize); + assert!(std::mem::offset_of!(TSTypeParameterInstantiation, span) == 32usize); + assert!(std::mem::offset_of!(TSTypeParameterInstantiation, params) == 0usize); assert!(size_of::() == 80usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSTypeParameter, span) == 0usize); - assert!(std::mem::offset_of!(TSTypeParameter, name) == 8usize); - assert!(std::mem::offset_of!(TSTypeParameter, constraint) == 40usize); - assert!(std::mem::offset_of!(TSTypeParameter, default) == 56usize); + assert!(std::mem::offset_of!(TSTypeParameter, span) == 64usize); + assert!(std::mem::offset_of!(TSTypeParameter, name) == 0usize); + assert!(std::mem::offset_of!(TSTypeParameter, constraint) == 32usize); + assert!(std::mem::offset_of!(TSTypeParameter, default) == 48usize); assert!(std::mem::offset_of!(TSTypeParameter, r#in) == 72usize); assert!(std::mem::offset_of!(TSTypeParameter, out) == 73usize); assert!(std::mem::offset_of!(TSTypeParameter, r#const) == 74usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSTypeParameterDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(TSTypeParameterDeclaration, params) == 8usize); + assert!(std::mem::offset_of!(TSTypeParameterDeclaration, span) == 32usize); + assert!(std::mem::offset_of!(TSTypeParameterDeclaration, params) == 0usize); assert!(size_of::() == 72usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSTypeAliasDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(TSTypeAliasDeclaration, id) == 8usize); - assert!(std::mem::offset_of!(TSTypeAliasDeclaration, type_parameters) == 40usize); - assert!(std::mem::offset_of!(TSTypeAliasDeclaration, type_annotation) == 48usize); - assert!(std::mem::offset_of!(TSTypeAliasDeclaration, declare) == 64usize); - assert!(std::mem::offset_of!(TSTypeAliasDeclaration, scope_id) == 68usize); + assert!(std::mem::offset_of!(TSTypeAliasDeclaration, span) == 48usize); + assert!(std::mem::offset_of!(TSTypeAliasDeclaration, id) == 0usize); + assert!(std::mem::offset_of!(TSTypeAliasDeclaration, type_parameters) == 56usize); + assert!(std::mem::offset_of!(TSTypeAliasDeclaration, type_annotation) == 32usize); + assert!(std::mem::offset_of!(TSTypeAliasDeclaration, declare) == 68usize); + assert!(std::mem::offset_of!(TSTypeAliasDeclaration, scope_id) == 64usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); assert!(size_of::() == 32usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSClassImplements, span) == 0usize); - assert!(std::mem::offset_of!(TSClassImplements, expression) == 8usize); + assert!(std::mem::offset_of!(TSClassImplements, span) == 16usize); + assert!(std::mem::offset_of!(TSClassImplements, expression) == 0usize); assert!(std::mem::offset_of!(TSClassImplements, type_parameters) == 24usize); assert!(size_of::() == 96usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSInterfaceDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(TSInterfaceDeclaration, id) == 8usize); - assert!(std::mem::offset_of!(TSInterfaceDeclaration, extends) == 40usize); + assert!(std::mem::offset_of!(TSInterfaceDeclaration, span) == 64usize); + assert!(std::mem::offset_of!(TSInterfaceDeclaration, id) == 0usize); + assert!(std::mem::offset_of!(TSInterfaceDeclaration, extends) == 32usize); assert!(std::mem::offset_of!(TSInterfaceDeclaration, type_parameters) == 72usize); assert!(std::mem::offset_of!(TSInterfaceDeclaration, body) == 80usize); - assert!(std::mem::offset_of!(TSInterfaceDeclaration, declare) == 88usize); - assert!(std::mem::offset_of!(TSInterfaceDeclaration, scope_id) == 92usize); + assert!(std::mem::offset_of!(TSInterfaceDeclaration, declare) == 92usize); + assert!(std::mem::offset_of!(TSInterfaceDeclaration, scope_id) == 88usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSInterfaceBody, span) == 0usize); - assert!(std::mem::offset_of!(TSInterfaceBody, body) == 8usize); + assert!(std::mem::offset_of!(TSInterfaceBody, span) == 32usize); + assert!(std::mem::offset_of!(TSInterfaceBody, body) == 0usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSPropertySignature, span) == 0usize); - assert!(std::mem::offset_of!(TSPropertySignature, computed) == 8usize); - assert!(std::mem::offset_of!(TSPropertySignature, optional) == 9usize); - assert!(std::mem::offset_of!(TSPropertySignature, readonly) == 10usize); - assert!(std::mem::offset_of!(TSPropertySignature, key) == 16usize); - assert!(std::mem::offset_of!(TSPropertySignature, type_annotation) == 32usize); + assert!(std::mem::offset_of!(TSPropertySignature, span) == 16usize); + assert!(std::mem::offset_of!(TSPropertySignature, computed) == 32usize); + assert!(std::mem::offset_of!(TSPropertySignature, optional) == 33usize); + assert!(std::mem::offset_of!(TSPropertySignature, readonly) == 34usize); + assert!(std::mem::offset_of!(TSPropertySignature, key) == 0usize); + assert!(std::mem::offset_of!(TSPropertySignature, type_annotation) == 24usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 56usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSIndexSignature, span) == 0usize); - assert!(std::mem::offset_of!(TSIndexSignature, parameters) == 8usize); + assert!(std::mem::offset_of!(TSIndexSignature, span) == 32usize); + assert!(std::mem::offset_of!(TSIndexSignature, parameters) == 0usize); assert!(std::mem::offset_of!(TSIndexSignature, type_annotation) == 40usize); assert!(std::mem::offset_of!(TSIndexSignature, readonly) == 48usize); assert!(size_of::() == 72usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSCallSignatureDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(TSCallSignatureDeclaration, this_param) == 8usize); + assert!(std::mem::offset_of!(TSCallSignatureDeclaration, span) == 40usize); + assert!(std::mem::offset_of!(TSCallSignatureDeclaration, this_param) == 0usize); assert!(std::mem::offset_of!(TSCallSignatureDeclaration, params) == 48usize); assert!(std::mem::offset_of!(TSCallSignatureDeclaration, return_type) == 56usize); assert!(std::mem::offset_of!(TSCallSignatureDeclaration, type_parameters) == 64usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); - assert!(size_of::() == 104usize); + assert!(size_of::() == 96usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSMethodSignature, span) == 0usize); - assert!(std::mem::offset_of!(TSMethodSignature, key) == 8usize); - assert!(std::mem::offset_of!(TSMethodSignature, computed) == 24usize); - assert!(std::mem::offset_of!(TSMethodSignature, optional) == 25usize); - assert!(std::mem::offset_of!(TSMethodSignature, kind) == 26usize); - assert!(std::mem::offset_of!(TSMethodSignature, this_param) == 32usize); - assert!(std::mem::offset_of!(TSMethodSignature, params) == 72usize); - assert!(std::mem::offset_of!(TSMethodSignature, return_type) == 80usize); - assert!(std::mem::offset_of!(TSMethodSignature, type_parameters) == 88usize); - assert!(std::mem::offset_of!(TSMethodSignature, scope_id) == 96usize); + assert!(std::mem::offset_of!(TSMethodSignature, span) == 56usize); + assert!(std::mem::offset_of!(TSMethodSignature, key) == 40usize); + assert!(std::mem::offset_of!(TSMethodSignature, computed) == 92usize); + assert!(std::mem::offset_of!(TSMethodSignature, optional) == 93usize); + assert!(std::mem::offset_of!(TSMethodSignature, kind) == 94usize); + assert!(std::mem::offset_of!(TSMethodSignature, this_param) == 0usize); + assert!(std::mem::offset_of!(TSMethodSignature, params) == 64usize); + assert!(std::mem::offset_of!(TSMethodSignature, return_type) == 72usize); + assert!(std::mem::offset_of!(TSMethodSignature, type_parameters) == 80usize); + assert!(std::mem::offset_of!(TSMethodSignature, scope_id) == 88usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); assert!(std::mem::offset_of!(TSConstructSignatureDeclaration, span) == 0usize); @@ -878,30 +878,30 @@ const _: () = { assert!(std::mem::offset_of!(TSConstructSignatureDeclaration, scope_id) == 32usize); assert!(size_of::() == 32usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSIndexSignatureName, span) == 0usize); - assert!(std::mem::offset_of!(TSIndexSignatureName, name) == 8usize); + assert!(std::mem::offset_of!(TSIndexSignatureName, span) == 16usize); + assert!(std::mem::offset_of!(TSIndexSignatureName, name) == 0usize); assert!(std::mem::offset_of!(TSIndexSignatureName, type_annotation) == 24usize); assert!(size_of::() == 32usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSInterfaceHeritage, span) == 0usize); - assert!(std::mem::offset_of!(TSInterfaceHeritage, expression) == 8usize); + assert!(std::mem::offset_of!(TSInterfaceHeritage, span) == 16usize); + assert!(std::mem::offset_of!(TSInterfaceHeritage, expression) == 0usize); assert!(std::mem::offset_of!(TSInterfaceHeritage, type_parameters) == 24usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSTypePredicate, span) == 0usize); - assert!(std::mem::offset_of!(TSTypePredicate, parameter_name) == 8usize); - assert!(std::mem::offset_of!(TSTypePredicate, asserts) == 24usize); - assert!(std::mem::offset_of!(TSTypePredicate, type_annotation) == 32usize); + assert!(std::mem::offset_of!(TSTypePredicate, span) == 16usize); + assert!(std::mem::offset_of!(TSTypePredicate, parameter_name) == 0usize); + assert!(std::mem::offset_of!(TSTypePredicate, asserts) == 32usize); + assert!(std::mem::offset_of!(TSTypePredicate, type_annotation) == 24usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 64usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSModuleDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(TSModuleDeclaration, id) == 8usize); - assert!(std::mem::offset_of!(TSModuleDeclaration, body) == 40usize); - assert!(std::mem::offset_of!(TSModuleDeclaration, kind) == 56usize); - assert!(std::mem::offset_of!(TSModuleDeclaration, declare) == 57usize); - assert!(std::mem::offset_of!(TSModuleDeclaration, scope_id) == 60usize); + assert!(std::mem::offset_of!(TSModuleDeclaration, span) == 48usize); + assert!(std::mem::offset_of!(TSModuleDeclaration, id) == 0usize); + assert!(std::mem::offset_of!(TSModuleDeclaration, body) == 32usize); + assert!(std::mem::offset_of!(TSModuleDeclaration, kind) == 60usize); + assert!(std::mem::offset_of!(TSModuleDeclaration, declare) == 61usize); + assert!(std::mem::offset_of!(TSModuleDeclaration, scope_id) == 56usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); assert!(size_of::() == 32usize); @@ -910,159 +910,159 @@ const _: () = { assert!(align_of::() == 8usize); assert!(size_of::() == 72usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSModuleBlock, span) == 0usize); - assert!(std::mem::offset_of!(TSModuleBlock, directives) == 8usize); - assert!(std::mem::offset_of!(TSModuleBlock, body) == 40usize); + assert!(std::mem::offset_of!(TSModuleBlock, span) == 64usize); + assert!(std::mem::offset_of!(TSModuleBlock, directives) == 0usize); + assert!(std::mem::offset_of!(TSModuleBlock, body) == 32usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSTypeLiteral, span) == 0usize); - assert!(std::mem::offset_of!(TSTypeLiteral, members) == 8usize); + assert!(std::mem::offset_of!(TSTypeLiteral, span) == 32usize); + assert!(std::mem::offset_of!(TSTypeLiteral, members) == 0usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(std::mem::offset_of!(TSInferType, span) == 0usize); assert!(std::mem::offset_of!(TSInferType, type_parameter) == 8usize); assert!(size_of::() == 32usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSTypeQuery, span) == 0usize); - assert!(std::mem::offset_of!(TSTypeQuery, expr_name) == 8usize); + assert!(std::mem::offset_of!(TSTypeQuery, span) == 16usize); + assert!(std::mem::offset_of!(TSTypeQuery, expr_name) == 0usize); assert!(std::mem::offset_of!(TSTypeQuery, type_parameters) == 24usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 96usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSImportType, span) == 0usize); - assert!(std::mem::offset_of!(TSImportType, is_type_of) == 8usize); - assert!(std::mem::offset_of!(TSImportType, parameter) == 16usize); - assert!(std::mem::offset_of!(TSImportType, qualifier) == 32usize); - assert!(std::mem::offset_of!(TSImportType, attributes) == 48usize); - assert!(std::mem::offset_of!(TSImportType, type_parameters) == 88usize); + assert!(std::mem::offset_of!(TSImportType, span) == 72usize); + assert!(std::mem::offset_of!(TSImportType, is_type_of) == 88usize); + assert!(std::mem::offset_of!(TSImportType, parameter) == 40usize); + assert!(std::mem::offset_of!(TSImportType, qualifier) == 56usize); + assert!(std::mem::offset_of!(TSImportType, attributes) == 0usize); + assert!(std::mem::offset_of!(TSImportType, type_parameters) == 80usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSImportAttributes, span) == 0usize); - assert!(std::mem::offset_of!(TSImportAttributes, elements) == 8usize); + assert!(std::mem::offset_of!(TSImportAttributes, span) == 32usize); + assert!(std::mem::offset_of!(TSImportAttributes, elements) == 0usize); assert!(size_of::() == 56usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSImportAttribute, span) == 0usize); - assert!(std::mem::offset_of!(TSImportAttribute, name) == 8usize); - assert!(std::mem::offset_of!(TSImportAttribute, value) == 40usize); + assert!(std::mem::offset_of!(TSImportAttribute, span) == 48usize); + assert!(std::mem::offset_of!(TSImportAttribute, name) == 0usize); + assert!(std::mem::offset_of!(TSImportAttribute, value) == 32usize); assert!(size_of::() == 32usize); assert!(align_of::() == 8usize); assert!(size_of::() == 72usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSFunctionType, span) == 0usize); - assert!(std::mem::offset_of!(TSFunctionType, this_param) == 8usize); + assert!(std::mem::offset_of!(TSFunctionType, span) == 40usize); + assert!(std::mem::offset_of!(TSFunctionType, this_param) == 0usize); assert!(std::mem::offset_of!(TSFunctionType, params) == 48usize); assert!(std::mem::offset_of!(TSFunctionType, return_type) == 56usize); assert!(std::mem::offset_of!(TSFunctionType, type_parameters) == 64usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); assert!(std::mem::offset_of!(TSConstructorType, span) == 0usize); - assert!(std::mem::offset_of!(TSConstructorType, r#abstract) == 8usize); - assert!(std::mem::offset_of!(TSConstructorType, params) == 16usize); - assert!(std::mem::offset_of!(TSConstructorType, return_type) == 24usize); - assert!(std::mem::offset_of!(TSConstructorType, type_parameters) == 32usize); + assert!(std::mem::offset_of!(TSConstructorType, r#abstract) == 32usize); + assert!(std::mem::offset_of!(TSConstructorType, params) == 8usize); + assert!(std::mem::offset_of!(TSConstructorType, return_type) == 16usize); + assert!(std::mem::offset_of!(TSConstructorType, type_parameters) == 24usize); assert!(size_of::() == 56usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSMappedType, span) == 0usize); - assert!(std::mem::offset_of!(TSMappedType, type_parameter) == 8usize); - assert!(std::mem::offset_of!(TSMappedType, name_type) == 16usize); - assert!(std::mem::offset_of!(TSMappedType, type_annotation) == 32usize); - assert!(std::mem::offset_of!(TSMappedType, optional) == 48usize); - assert!(std::mem::offset_of!(TSMappedType, readonly) == 49usize); - assert!(std::mem::offset_of!(TSMappedType, scope_id) == 52usize); + assert!(std::mem::offset_of!(TSMappedType, span) == 32usize); + assert!(std::mem::offset_of!(TSMappedType, type_parameter) == 40usize); + assert!(std::mem::offset_of!(TSMappedType, name_type) == 0usize); + assert!(std::mem::offset_of!(TSMappedType, type_annotation) == 16usize); + assert!(std::mem::offset_of!(TSMappedType, optional) == 52usize); + assert!(std::mem::offset_of!(TSMappedType, readonly) == 53usize); + assert!(std::mem::offset_of!(TSMappedType, scope_id) == 48usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); assert!(size_of::() == 72usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSTemplateLiteralType, span) == 0usize); - assert!(std::mem::offset_of!(TSTemplateLiteralType, quasis) == 8usize); - assert!(std::mem::offset_of!(TSTemplateLiteralType, types) == 40usize); + assert!(std::mem::offset_of!(TSTemplateLiteralType, span) == 64usize); + assert!(std::mem::offset_of!(TSTemplateLiteralType, quasis) == 0usize); + assert!(std::mem::offset_of!(TSTemplateLiteralType, types) == 32usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSAsExpression, span) == 0usize); - assert!(std::mem::offset_of!(TSAsExpression, expression) == 8usize); - assert!(std::mem::offset_of!(TSAsExpression, type_annotation) == 24usize); + assert!(std::mem::offset_of!(TSAsExpression, span) == 32usize); + assert!(std::mem::offset_of!(TSAsExpression, expression) == 0usize); + assert!(std::mem::offset_of!(TSAsExpression, type_annotation) == 16usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSSatisfiesExpression, span) == 0usize); - assert!(std::mem::offset_of!(TSSatisfiesExpression, expression) == 8usize); - assert!(std::mem::offset_of!(TSSatisfiesExpression, type_annotation) == 24usize); + assert!(std::mem::offset_of!(TSSatisfiesExpression, span) == 32usize); + assert!(std::mem::offset_of!(TSSatisfiesExpression, expression) == 0usize); + assert!(std::mem::offset_of!(TSSatisfiesExpression, type_annotation) == 16usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSTypeAssertion, span) == 0usize); - assert!(std::mem::offset_of!(TSTypeAssertion, expression) == 8usize); - assert!(std::mem::offset_of!(TSTypeAssertion, type_annotation) == 24usize); + assert!(std::mem::offset_of!(TSTypeAssertion, span) == 32usize); + assert!(std::mem::offset_of!(TSTypeAssertion, expression) == 0usize); + assert!(std::mem::offset_of!(TSTypeAssertion, type_annotation) == 16usize); assert!(size_of::() == 64usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSImportEqualsDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(TSImportEqualsDeclaration, id) == 8usize); - assert!(std::mem::offset_of!(TSImportEqualsDeclaration, module_reference) == 40usize); + assert!(std::mem::offset_of!(TSImportEqualsDeclaration, span) == 48usize); + assert!(std::mem::offset_of!(TSImportEqualsDeclaration, id) == 0usize); + assert!(std::mem::offset_of!(TSImportEqualsDeclaration, module_reference) == 32usize); assert!(std::mem::offset_of!(TSImportEqualsDeclaration, import_kind) == 56usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 32usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSExternalModuleReference, span) == 0usize); - assert!(std::mem::offset_of!(TSExternalModuleReference, expression) == 8usize); + assert!(std::mem::offset_of!(TSExternalModuleReference, span) == 24usize); + assert!(std::mem::offset_of!(TSExternalModuleReference, expression) == 0usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSNonNullExpression, span) == 0usize); - assert!(std::mem::offset_of!(TSNonNullExpression, expression) == 8usize); + assert!(std::mem::offset_of!(TSNonNullExpression, span) == 16usize); + assert!(std::mem::offset_of!(TSNonNullExpression, expression) == 0usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(Decorator, span) == 0usize); - assert!(std::mem::offset_of!(Decorator, expression) == 8usize); + assert!(std::mem::offset_of!(Decorator, span) == 16usize); + assert!(std::mem::offset_of!(Decorator, expression) == 0usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSExportAssignment, span) == 0usize); - assert!(std::mem::offset_of!(TSExportAssignment, expression) == 8usize); + assert!(std::mem::offset_of!(TSExportAssignment, span) == 16usize); + assert!(std::mem::offset_of!(TSExportAssignment, expression) == 0usize); assert!(size_of::() == 32usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSNamespaceExportDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(TSNamespaceExportDeclaration, id) == 8usize); + assert!(std::mem::offset_of!(TSNamespaceExportDeclaration, span) == 24usize); + assert!(std::mem::offset_of!(TSNamespaceExportDeclaration, id) == 0usize); assert!(size_of::() == 32usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(TSInstantiationExpression, span) == 0usize); - assert!(std::mem::offset_of!(TSInstantiationExpression, expression) == 8usize); + assert!(std::mem::offset_of!(TSInstantiationExpression, span) == 16usize); + assert!(std::mem::offset_of!(TSInstantiationExpression, expression) == 0usize); assert!(std::mem::offset_of!(TSInstantiationExpression, type_parameters) == 24usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); assert!(size_of::() == 32usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(JSDocNullableType, span) == 0usize); - assert!(std::mem::offset_of!(JSDocNullableType, type_annotation) == 8usize); + assert!(std::mem::offset_of!(JSDocNullableType, span) == 16usize); + assert!(std::mem::offset_of!(JSDocNullableType, type_annotation) == 0usize); assert!(std::mem::offset_of!(JSDocNullableType, postfix) == 24usize); assert!(size_of::() == 32usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(JSDocNonNullableType, span) == 0usize); - assert!(std::mem::offset_of!(JSDocNonNullableType, type_annotation) == 8usize); + assert!(std::mem::offset_of!(JSDocNonNullableType, span) == 16usize); + assert!(std::mem::offset_of!(JSDocNonNullableType, type_annotation) == 0usize); assert!(std::mem::offset_of!(JSDocNonNullableType, postfix) == 24usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(std::mem::offset_of!(JSDocUnknownType, span) == 0usize); assert!(size_of::() == 56usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(JSXElement, span) == 0usize); - assert!(std::mem::offset_of!(JSXElement, opening_element) == 8usize); - assert!(std::mem::offset_of!(JSXElement, closing_element) == 16usize); - assert!(std::mem::offset_of!(JSXElement, children) == 24usize); + assert!(std::mem::offset_of!(JSXElement, span) == 32usize); + assert!(std::mem::offset_of!(JSXElement, opening_element) == 40usize); + assert!(std::mem::offset_of!(JSXElement, closing_element) == 48usize); + assert!(std::mem::offset_of!(JSXElement, children) == 0usize); assert!(size_of::() == 72usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(JSXOpeningElement, span) == 0usize); - assert!(std::mem::offset_of!(JSXOpeningElement, self_closing) == 8usize); - assert!(std::mem::offset_of!(JSXOpeningElement, name) == 16usize); - assert!(std::mem::offset_of!(JSXOpeningElement, attributes) == 32usize); - assert!(std::mem::offset_of!(JSXOpeningElement, type_parameters) == 64usize); + assert!(std::mem::offset_of!(JSXOpeningElement, span) == 48usize); + assert!(std::mem::offset_of!(JSXOpeningElement, self_closing) == 64usize); + assert!(std::mem::offset_of!(JSXOpeningElement, name) == 32usize); + assert!(std::mem::offset_of!(JSXOpeningElement, attributes) == 0usize); + assert!(std::mem::offset_of!(JSXOpeningElement, type_parameters) == 56usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(JSXClosingElement, span) == 0usize); - assert!(std::mem::offset_of!(JSXClosingElement, name) == 8usize); + assert!(std::mem::offset_of!(JSXClosingElement, span) == 16usize); + assert!(std::mem::offset_of!(JSXClosingElement, name) == 0usize); assert!(size_of::() == 56usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(JSXFragment, span) == 0usize); - assert!(std::mem::offset_of!(JSXFragment, opening_fragment) == 8usize); - assert!(std::mem::offset_of!(JSXFragment, closing_fragment) == 16usize); - assert!(std::mem::offset_of!(JSXFragment, children) == 24usize); + assert!(std::mem::offset_of!(JSXFragment, span) == 32usize); + assert!(std::mem::offset_of!(JSXFragment, opening_fragment) == 40usize); + assert!(std::mem::offset_of!(JSXFragment, closing_fragment) == 48usize); + assert!(std::mem::offset_of!(JSXFragment, children) == 0usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(std::mem::offset_of!(JSXOpeningFragment, span) == 0usize); @@ -1073,20 +1073,20 @@ const _: () = { assert!(align_of::() == 8usize); assert!(size_of::() == 56usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(JSXNamespacedName, span) == 0usize); - assert!(std::mem::offset_of!(JSXNamespacedName, namespace) == 8usize); - assert!(std::mem::offset_of!(JSXNamespacedName, property) == 32usize); + assert!(std::mem::offset_of!(JSXNamespacedName, span) == 48usize); + assert!(std::mem::offset_of!(JSXNamespacedName, namespace) == 0usize); + assert!(std::mem::offset_of!(JSXNamespacedName, property) == 24usize); assert!(size_of::() == 48usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(JSXMemberExpression, span) == 0usize); - assert!(std::mem::offset_of!(JSXMemberExpression, object) == 8usize); - assert!(std::mem::offset_of!(JSXMemberExpression, property) == 24usize); + assert!(std::mem::offset_of!(JSXMemberExpression, span) == 40usize); + assert!(std::mem::offset_of!(JSXMemberExpression, object) == 24usize); + assert!(std::mem::offset_of!(JSXMemberExpression, property) == 0usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(JSXExpressionContainer, span) == 0usize); - assert!(std::mem::offset_of!(JSXExpressionContainer, expression) == 8usize); + assert!(std::mem::offset_of!(JSXExpressionContainer, span) == 16usize); + assert!(std::mem::offset_of!(JSXExpressionContainer, expression) == 0usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 8usize); @@ -1096,31 +1096,31 @@ const _: () = { assert!(align_of::() == 8usize); assert!(size_of::() == 40usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(JSXAttribute, span) == 0usize); - assert!(std::mem::offset_of!(JSXAttribute, name) == 8usize); - assert!(std::mem::offset_of!(JSXAttribute, value) == 24usize); + assert!(std::mem::offset_of!(JSXAttribute, span) == 32usize); + assert!(std::mem::offset_of!(JSXAttribute, name) == 0usize); + assert!(std::mem::offset_of!(JSXAttribute, value) == 16usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(JSXSpreadAttribute, span) == 0usize); - assert!(std::mem::offset_of!(JSXSpreadAttribute, argument) == 8usize); + assert!(std::mem::offset_of!(JSXSpreadAttribute, span) == 16usize); + assert!(std::mem::offset_of!(JSXSpreadAttribute, argument) == 0usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(JSXIdentifier, span) == 0usize); - assert!(std::mem::offset_of!(JSXIdentifier, name) == 8usize); + assert!(std::mem::offset_of!(JSXIdentifier, span) == 16usize); + assert!(std::mem::offset_of!(JSXIdentifier, name) == 0usize); assert!(size_of::() == 16usize); assert!(align_of::() == 8usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(JSXSpreadChild, span) == 0usize); - assert!(std::mem::offset_of!(JSXSpreadChild, expression) == 8usize); + assert!(std::mem::offset_of!(JSXSpreadChild, span) == 16usize); + assert!(std::mem::offset_of!(JSXSpreadChild, expression) == 0usize); assert!(size_of::() == 24usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(JSXText, span) == 0usize); - assert!(std::mem::offset_of!(JSXText, value) == 8usize); + assert!(std::mem::offset_of!(JSXText, span) == 16usize); + assert!(std::mem::offset_of!(JSXText, value) == 0usize); }; #[cfg(target_pointer_width = "32")] const _: () = { @@ -1133,20 +1133,20 @@ const _: () = { assert!(std::mem::offset_of!(NullLiteral, span) == 0usize); assert!(size_of::() == 32usize); assert!(align_of::() == 8usize); - assert!(std::mem::offset_of!(NumericLiteral, span) == 0usize); - assert!(std::mem::offset_of!(NumericLiteral, value) == 8usize); - assert!(std::mem::offset_of!(NumericLiteral, raw) == 16usize); + assert!(std::mem::offset_of!(NumericLiteral, span) == 16usize); + assert!(std::mem::offset_of!(NumericLiteral, value) == 24usize); + assert!(std::mem::offset_of!(NumericLiteral, raw) == 0usize); assert!(std::mem::offset_of!(NumericLiteral, base) == 32usize); assert!(size_of::() == 20usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(BigIntLiteral, span) == 0usize); - assert!(std::mem::offset_of!(BigIntLiteral, raw) == 8usize); + assert!(std::mem::offset_of!(BigIntLiteral, span) == 16usize); + assert!(std::mem::offset_of!(BigIntLiteral, raw) == 0usize); assert!(std::mem::offset_of!(BigIntLiteral, base) == 24usize); assert!(size_of::() == 20usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(RegExpLiteral, span) == 0usize); - assert!(std::mem::offset_of!(RegExpLiteral, value) == 8usize); - assert!(std::mem::offset_of!(RegExpLiteral, regex) == 8usize); + assert!(std::mem::offset_of!(RegExpLiteral, span) == 24usize); + assert!(std::mem::offset_of!(RegExpLiteral, value) == 32usize); + assert!(std::mem::offset_of!(RegExpLiteral, regex) == 0usize); assert!(size_of::() == 12usize); assert!(align_of::() == 4usize); assert!(std::mem::offset_of!(RegExp, pattern) == 0usize); @@ -1155,45 +1155,45 @@ const _: () = { assert!(align_of::() == 1usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(StringLiteral, span) == 0usize); - assert!(std::mem::offset_of!(StringLiteral, value) == 8usize); + assert!(std::mem::offset_of!(StringLiteral, span) == 16usize); + assert!(std::mem::offset_of!(StringLiteral, value) == 0usize); assert!(size_of::() == 64usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(Program, span) == 0usize); - assert!(std::mem::offset_of!(Program, source_type) == 8usize); - assert!(std::mem::offset_of!(Program, hashbang) == 16usize); - assert!(std::mem::offset_of!(Program, directives) == 40usize); - assert!(std::mem::offset_of!(Program, body) == 72usize); - assert!(std::mem::offset_of!(Program, scope_id) == 104usize); + assert!(std::mem::offset_of!(Program, span) == 88usize); + assert!(std::mem::offset_of!(Program, source_type) == 96usize); + assert!(std::mem::offset_of!(Program, hashbang) == 64usize); + assert!(std::mem::offset_of!(Program, directives) == 0usize); + assert!(std::mem::offset_of!(Program, body) == 32usize); + assert!(std::mem::offset_of!(Program, scope_id) == 100usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(IdentifierName, span) == 0usize); - assert!(std::mem::offset_of!(IdentifierName, name) == 8usize); + assert!(std::mem::offset_of!(IdentifierName, span) == 16usize); + assert!(std::mem::offset_of!(IdentifierName, name) == 0usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(IdentifierReference, span) == 0usize); - assert!(std::mem::offset_of!(IdentifierReference, name) == 8usize); + assert!(std::mem::offset_of!(IdentifierReference, span) == 16usize); + assert!(std::mem::offset_of!(IdentifierReference, name) == 0usize); assert!(std::mem::offset_of!(IdentifierReference, reference_id) == 24usize); assert!(std::mem::offset_of!(IdentifierReference, reference_flag) == 28usize); assert!(size_of::() == 20usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(BindingIdentifier, span) == 0usize); - assert!(std::mem::offset_of!(BindingIdentifier, name) == 8usize); + assert!(std::mem::offset_of!(BindingIdentifier, span) == 16usize); + assert!(std::mem::offset_of!(BindingIdentifier, name) == 0usize); assert!(std::mem::offset_of!(BindingIdentifier, symbol_id) == 24usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(LabelIdentifier, span) == 0usize); - assert!(std::mem::offset_of!(LabelIdentifier, name) == 8usize); + assert!(std::mem::offset_of!(LabelIdentifier, span) == 16usize); + assert!(std::mem::offset_of!(LabelIdentifier, name) == 0usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(std::mem::offset_of!(ThisExpression, span) == 0usize); assert!(size_of::() == 36usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ArrayExpression, span) == 0usize); - assert!(std::mem::offset_of!(ArrayExpression, elements) == 8usize); - assert!(std::mem::offset_of!(ArrayExpression, trailing_comma) == 40usize); + assert!(std::mem::offset_of!(ArrayExpression, span) == 44usize); + assert!(std::mem::offset_of!(ArrayExpression, elements) == 0usize); + assert!(std::mem::offset_of!(ArrayExpression, trailing_comma) == 32usize); assert!(size_of::() == 12usize); assert!(align_of::() == 4usize); assert!(size_of::() == 8usize); @@ -1201,41 +1201,41 @@ const _: () = { assert!(std::mem::offset_of!(Elision, span) == 0usize); assert!(size_of::() == 36usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ObjectExpression, span) == 0usize); - assert!(std::mem::offset_of!(ObjectExpression, properties) == 8usize); - assert!(std::mem::offset_of!(ObjectExpression, trailing_comma) == 40usize); + assert!(std::mem::offset_of!(ObjectExpression, span) == 44usize); + assert!(std::mem::offset_of!(ObjectExpression, properties) == 0usize); + assert!(std::mem::offset_of!(ObjectExpression, trailing_comma) == 32usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); - assert!(size_of::() == 40usize); + assert!(size_of::() == 36usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ObjectProperty, span) == 0usize); - assert!(std::mem::offset_of!(ObjectProperty, kind) == 8usize); - assert!(std::mem::offset_of!(ObjectProperty, key) == 16usize); - assert!(std::mem::offset_of!(ObjectProperty, value) == 32usize); - assert!(std::mem::offset_of!(ObjectProperty, init) == 48usize); - assert!(std::mem::offset_of!(ObjectProperty, method) == 64usize); - assert!(std::mem::offset_of!(ObjectProperty, shorthand) == 65usize); - assert!(std::mem::offset_of!(ObjectProperty, computed) == 66usize); + assert!(std::mem::offset_of!(ObjectProperty, span) == 48usize); + assert!(std::mem::offset_of!(ObjectProperty, kind) == 56usize); + assert!(std::mem::offset_of!(ObjectProperty, key) == 0usize); + assert!(std::mem::offset_of!(ObjectProperty, value) == 16usize); + assert!(std::mem::offset_of!(ObjectProperty, init) == 32usize); + assert!(std::mem::offset_of!(ObjectProperty, method) == 57usize); + assert!(std::mem::offset_of!(ObjectProperty, shorthand) == 58usize); + assert!(std::mem::offset_of!(ObjectProperty, computed) == 59usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); assert!(size_of::() == 40usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TemplateLiteral, span) == 0usize); - assert!(std::mem::offset_of!(TemplateLiteral, quasis) == 8usize); - assert!(std::mem::offset_of!(TemplateLiteral, expressions) == 40usize); + assert!(std::mem::offset_of!(TemplateLiteral, span) == 64usize); + assert!(std::mem::offset_of!(TemplateLiteral, quasis) == 0usize); + assert!(std::mem::offset_of!(TemplateLiteral, expressions) == 32usize); assert!(size_of::() == 60usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TaggedTemplateExpression, span) == 0usize); - assert!(std::mem::offset_of!(TaggedTemplateExpression, tag) == 8usize); - assert!(std::mem::offset_of!(TaggedTemplateExpression, quasi) == 24usize); + assert!(std::mem::offset_of!(TaggedTemplateExpression, span) == 88usize); + assert!(std::mem::offset_of!(TaggedTemplateExpression, tag) == 72usize); + assert!(std::mem::offset_of!(TaggedTemplateExpression, quasi) == 0usize); assert!(std::mem::offset_of!(TaggedTemplateExpression, type_parameters) == 96usize); assert!(size_of::() == 28usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TemplateElement, span) == 0usize); - assert!(std::mem::offset_of!(TemplateElement, tail) == 8usize); - assert!(std::mem::offset_of!(TemplateElement, value) == 16usize); + assert!(std::mem::offset_of!(TemplateElement, span) == 32usize); + assert!(std::mem::offset_of!(TemplateElement, tail) == 40usize); + assert!(std::mem::offset_of!(TemplateElement, value) == 0usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); assert!(std::mem::offset_of!(TemplateElementValue, raw) == 0usize); @@ -1244,87 +1244,87 @@ const _: () = { assert!(align_of::() == 4usize); assert!(size_of::() == 28usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ComputedMemberExpression, span) == 0usize); - assert!(std::mem::offset_of!(ComputedMemberExpression, object) == 8usize); - assert!(std::mem::offset_of!(ComputedMemberExpression, expression) == 24usize); + assert!(std::mem::offset_of!(ComputedMemberExpression, span) == 32usize); + assert!(std::mem::offset_of!(ComputedMemberExpression, object) == 0usize); + assert!(std::mem::offset_of!(ComputedMemberExpression, expression) == 16usize); assert!(std::mem::offset_of!(ComputedMemberExpression, optional) == 40usize); assert!(size_of::() == 36usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(StaticMemberExpression, span) == 0usize); - assert!(std::mem::offset_of!(StaticMemberExpression, object) == 8usize); - assert!(std::mem::offset_of!(StaticMemberExpression, property) == 24usize); + assert!(std::mem::offset_of!(StaticMemberExpression, span) == 40usize); + assert!(std::mem::offset_of!(StaticMemberExpression, object) == 24usize); + assert!(std::mem::offset_of!(StaticMemberExpression, property) == 0usize); assert!(std::mem::offset_of!(StaticMemberExpression, optional) == 48usize); assert!(size_of::() == 36usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(PrivateFieldExpression, span) == 0usize); - assert!(std::mem::offset_of!(PrivateFieldExpression, object) == 8usize); - assert!(std::mem::offset_of!(PrivateFieldExpression, field) == 24usize); + assert!(std::mem::offset_of!(PrivateFieldExpression, span) == 40usize); + assert!(std::mem::offset_of!(PrivateFieldExpression, object) == 24usize); + assert!(std::mem::offset_of!(PrivateFieldExpression, field) == 0usize); assert!(std::mem::offset_of!(PrivateFieldExpression, optional) == 48usize); assert!(size_of::() == 40usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(CallExpression, span) == 0usize); - assert!(std::mem::offset_of!(CallExpression, arguments) == 8usize); - assert!(std::mem::offset_of!(CallExpression, callee) == 40usize); + assert!(std::mem::offset_of!(CallExpression, span) == 48usize); + assert!(std::mem::offset_of!(CallExpression, arguments) == 0usize); + assert!(std::mem::offset_of!(CallExpression, callee) == 32usize); assert!(std::mem::offset_of!(CallExpression, type_parameters) == 56usize); assert!(std::mem::offset_of!(CallExpression, optional) == 64usize); assert!(size_of::() == 36usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(NewExpression, span) == 0usize); - assert!(std::mem::offset_of!(NewExpression, callee) == 8usize); - assert!(std::mem::offset_of!(NewExpression, arguments) == 24usize); + assert!(std::mem::offset_of!(NewExpression, span) == 48usize); + assert!(std::mem::offset_of!(NewExpression, callee) == 32usize); + assert!(std::mem::offset_of!(NewExpression, arguments) == 0usize); assert!(std::mem::offset_of!(NewExpression, type_parameters) == 56usize); assert!(size_of::() == 40usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(MetaProperty, span) == 0usize); - assert!(std::mem::offset_of!(MetaProperty, meta) == 8usize); - assert!(std::mem::offset_of!(MetaProperty, property) == 32usize); + assert!(std::mem::offset_of!(MetaProperty, span) == 48usize); + assert!(std::mem::offset_of!(MetaProperty, meta) == 0usize); + assert!(std::mem::offset_of!(MetaProperty, property) == 24usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(SpreadElement, span) == 0usize); - assert!(std::mem::offset_of!(SpreadElement, argument) == 8usize); + assert!(std::mem::offset_of!(SpreadElement, span) == 16usize); + assert!(std::mem::offset_of!(SpreadElement, argument) == 0usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(size_of::() == 20usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(UpdateExpression, span) == 0usize); - assert!(std::mem::offset_of!(UpdateExpression, operator) == 8usize); - assert!(std::mem::offset_of!(UpdateExpression, prefix) == 9usize); - assert!(std::mem::offset_of!(UpdateExpression, argument) == 16usize); + assert!(std::mem::offset_of!(UpdateExpression, span) == 16usize); + assert!(std::mem::offset_of!(UpdateExpression, operator) == 24usize); + assert!(std::mem::offset_of!(UpdateExpression, prefix) == 25usize); + assert!(std::mem::offset_of!(UpdateExpression, argument) == 0usize); assert!(size_of::() == 20usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(UnaryExpression, span) == 0usize); - assert!(std::mem::offset_of!(UnaryExpression, operator) == 8usize); - assert!(std::mem::offset_of!(UnaryExpression, argument) == 16usize); + assert!(std::mem::offset_of!(UnaryExpression, span) == 16usize); + assert!(std::mem::offset_of!(UnaryExpression, operator) == 24usize); + assert!(std::mem::offset_of!(UnaryExpression, argument) == 0usize); assert!(size_of::() == 28usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(BinaryExpression, span) == 0usize); - assert!(std::mem::offset_of!(BinaryExpression, left) == 8usize); - assert!(std::mem::offset_of!(BinaryExpression, operator) == 24usize); - assert!(std::mem::offset_of!(BinaryExpression, right) == 32usize); + assert!(std::mem::offset_of!(BinaryExpression, span) == 32usize); + assert!(std::mem::offset_of!(BinaryExpression, left) == 0usize); + assert!(std::mem::offset_of!(BinaryExpression, operator) == 40usize); + assert!(std::mem::offset_of!(BinaryExpression, right) == 16usize); assert!(size_of::() == 36usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(PrivateInExpression, span) == 0usize); - assert!(std::mem::offset_of!(PrivateInExpression, left) == 8usize); - assert!(std::mem::offset_of!(PrivateInExpression, operator) == 32usize); - assert!(std::mem::offset_of!(PrivateInExpression, right) == 40usize); + assert!(std::mem::offset_of!(PrivateInExpression, span) == 40usize); + assert!(std::mem::offset_of!(PrivateInExpression, left) == 0usize); + assert!(std::mem::offset_of!(PrivateInExpression, operator) == 48usize); + assert!(std::mem::offset_of!(PrivateInExpression, right) == 24usize); assert!(size_of::() == 28usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(LogicalExpression, span) == 0usize); - assert!(std::mem::offset_of!(LogicalExpression, left) == 8usize); - assert!(std::mem::offset_of!(LogicalExpression, operator) == 24usize); - assert!(std::mem::offset_of!(LogicalExpression, right) == 32usize); + assert!(std::mem::offset_of!(LogicalExpression, span) == 32usize); + assert!(std::mem::offset_of!(LogicalExpression, left) == 0usize); + assert!(std::mem::offset_of!(LogicalExpression, operator) == 40usize); + assert!(std::mem::offset_of!(LogicalExpression, right) == 16usize); assert!(size_of::() == 32usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ConditionalExpression, span) == 0usize); - assert!(std::mem::offset_of!(ConditionalExpression, test) == 8usize); - assert!(std::mem::offset_of!(ConditionalExpression, consequent) == 24usize); - assert!(std::mem::offset_of!(ConditionalExpression, alternate) == 40usize); + assert!(std::mem::offset_of!(ConditionalExpression, span) == 48usize); + assert!(std::mem::offset_of!(ConditionalExpression, test) == 0usize); + assert!(std::mem::offset_of!(ConditionalExpression, consequent) == 16usize); + assert!(std::mem::offset_of!(ConditionalExpression, alternate) == 32usize); assert!(size_of::() == 28usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(AssignmentExpression, span) == 0usize); - assert!(std::mem::offset_of!(AssignmentExpression, operator) == 8usize); - assert!(std::mem::offset_of!(AssignmentExpression, left) == 16usize); - assert!(std::mem::offset_of!(AssignmentExpression, right) == 32usize); + assert!(std::mem::offset_of!(AssignmentExpression, span) == 32usize); + assert!(std::mem::offset_of!(AssignmentExpression, operator) == 40usize); + assert!(std::mem::offset_of!(AssignmentExpression, left) == 0usize); + assert!(std::mem::offset_of!(AssignmentExpression, right) == 16usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(size_of::() == 8usize); @@ -1333,184 +1333,184 @@ const _: () = { assert!(align_of::() == 4usize); assert!(size_of::() == 52usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ArrayAssignmentTarget, span) == 0usize); - assert!(std::mem::offset_of!(ArrayAssignmentTarget, elements) == 8usize); - assert!(std::mem::offset_of!(ArrayAssignmentTarget, rest) == 40usize); - assert!(std::mem::offset_of!(ArrayAssignmentTarget, trailing_comma) == 64usize); + assert!(std::mem::offset_of!(ArrayAssignmentTarget, span) == 68usize); + assert!(std::mem::offset_of!(ArrayAssignmentTarget, elements) == 0usize); + assert!(std::mem::offset_of!(ArrayAssignmentTarget, rest) == 32usize); + assert!(std::mem::offset_of!(ArrayAssignmentTarget, trailing_comma) == 56usize); assert!(size_of::() == 40usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ObjectAssignmentTarget, span) == 0usize); - assert!(std::mem::offset_of!(ObjectAssignmentTarget, properties) == 8usize); - assert!(std::mem::offset_of!(ObjectAssignmentTarget, rest) == 40usize); + assert!(std::mem::offset_of!(ObjectAssignmentTarget, span) == 56usize); + assert!(std::mem::offset_of!(ObjectAssignmentTarget, properties) == 0usize); + assert!(std::mem::offset_of!(ObjectAssignmentTarget, rest) == 32usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(AssignmentTargetRest, span) == 0usize); - assert!(std::mem::offset_of!(AssignmentTargetRest, target) == 8usize); + assert!(std::mem::offset_of!(AssignmentTargetRest, span) == 16usize); + assert!(std::mem::offset_of!(AssignmentTargetRest, target) == 0usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(AssignmentTargetWithDefault, span) == 0usize); - assert!(std::mem::offset_of!(AssignmentTargetWithDefault, binding) == 8usize); - assert!(std::mem::offset_of!(AssignmentTargetWithDefault, init) == 24usize); + assert!(std::mem::offset_of!(AssignmentTargetWithDefault, span) == 32usize); + assert!(std::mem::offset_of!(AssignmentTargetWithDefault, binding) == 0usize); + assert!(std::mem::offset_of!(AssignmentTargetWithDefault, init) == 16usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(size_of::() == 40usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(AssignmentTargetPropertyIdentifier, span) == 0usize); - assert!(std::mem::offset_of!(AssignmentTargetPropertyIdentifier, binding) == 8usize); - assert!(std::mem::offset_of!(AssignmentTargetPropertyIdentifier, init) == 40usize); + assert!(std::mem::offset_of!(AssignmentTargetPropertyIdentifier, span) == 48usize); + assert!(std::mem::offset_of!(AssignmentTargetPropertyIdentifier, binding) == 0usize); + assert!(std::mem::offset_of!(AssignmentTargetPropertyIdentifier, init) == 32usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(AssignmentTargetPropertyProperty, span) == 0usize); - assert!(std::mem::offset_of!(AssignmentTargetPropertyProperty, name) == 8usize); - assert!(std::mem::offset_of!(AssignmentTargetPropertyProperty, binding) == 24usize); + assert!(std::mem::offset_of!(AssignmentTargetPropertyProperty, span) == 32usize); + assert!(std::mem::offset_of!(AssignmentTargetPropertyProperty, name) == 0usize); + assert!(std::mem::offset_of!(AssignmentTargetPropertyProperty, binding) == 16usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(SequenceExpression, span) == 0usize); - assert!(std::mem::offset_of!(SequenceExpression, expressions) == 8usize); + assert!(std::mem::offset_of!(SequenceExpression, span) == 32usize); + assert!(std::mem::offset_of!(SequenceExpression, expressions) == 0usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(std::mem::offset_of!(Super, span) == 0usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(AwaitExpression, span) == 0usize); - assert!(std::mem::offset_of!(AwaitExpression, argument) == 8usize); + assert!(std::mem::offset_of!(AwaitExpression, span) == 16usize); + assert!(std::mem::offset_of!(AwaitExpression, argument) == 0usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ChainExpression, span) == 0usize); - assert!(std::mem::offset_of!(ChainExpression, expression) == 8usize); + assert!(std::mem::offset_of!(ChainExpression, span) == 16usize); + assert!(std::mem::offset_of!(ChainExpression, expression) == 0usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ParenthesizedExpression, span) == 0usize); - assert!(std::mem::offset_of!(ParenthesizedExpression, expression) == 8usize); + assert!(std::mem::offset_of!(ParenthesizedExpression, span) == 16usize); + assert!(std::mem::offset_of!(ParenthesizedExpression, expression) == 0usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(size_of::() == 32usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(Directive, span) == 0usize); - assert!(std::mem::offset_of!(Directive, expression) == 8usize); - assert!(std::mem::offset_of!(Directive, directive) == 32usize); + assert!(std::mem::offset_of!(Directive, span) == 40usize); + assert!(std::mem::offset_of!(Directive, expression) == 0usize); + assert!(std::mem::offset_of!(Directive, directive) == 24usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(Hashbang, span) == 0usize); - assert!(std::mem::offset_of!(Hashbang, value) == 8usize); + assert!(std::mem::offset_of!(Hashbang, span) == 16usize); + assert!(std::mem::offset_of!(Hashbang, value) == 0usize); assert!(size_of::() == 28usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(BlockStatement, span) == 0usize); - assert!(std::mem::offset_of!(BlockStatement, body) == 8usize); + assert!(std::mem::offset_of!(BlockStatement, span) == 32usize); + assert!(std::mem::offset_of!(BlockStatement, body) == 0usize); assert!(std::mem::offset_of!(BlockStatement, scope_id) == 40usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); - assert!(size_of::() == 32usize); + assert!(size_of::() == 28usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(VariableDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(VariableDeclaration, kind) == 8usize); - assert!(std::mem::offset_of!(VariableDeclaration, declarations) == 16usize); - assert!(std::mem::offset_of!(VariableDeclaration, declare) == 48usize); + assert!(std::mem::offset_of!(VariableDeclaration, span) == 32usize); + assert!(std::mem::offset_of!(VariableDeclaration, kind) == 40usize); + assert!(std::mem::offset_of!(VariableDeclaration, declarations) == 0usize); + assert!(std::mem::offset_of!(VariableDeclaration, declare) == 41usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); - assert!(size_of::() == 40usize); + assert!(size_of::() == 36usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(VariableDeclarator, span) == 0usize); - assert!(std::mem::offset_of!(VariableDeclarator, kind) == 8usize); - assert!(std::mem::offset_of!(VariableDeclarator, id) == 16usize); - assert!(std::mem::offset_of!(VariableDeclarator, init) == 48usize); - assert!(std::mem::offset_of!(VariableDeclarator, definite) == 64usize); + assert!(std::mem::offset_of!(VariableDeclarator, span) == 48usize); + assert!(std::mem::offset_of!(VariableDeclarator, kind) == 56usize); + assert!(std::mem::offset_of!(VariableDeclarator, id) == 0usize); + assert!(std::mem::offset_of!(VariableDeclarator, init) == 32usize); + assert!(std::mem::offset_of!(VariableDeclarator, definite) == 57usize); assert!(size_of::() == 28usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(UsingDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(UsingDeclaration, is_await) == 8usize); - assert!(std::mem::offset_of!(UsingDeclaration, declarations) == 16usize); + assert!(std::mem::offset_of!(UsingDeclaration, span) == 32usize); + assert!(std::mem::offset_of!(UsingDeclaration, is_await) == 40usize); + assert!(std::mem::offset_of!(UsingDeclaration, declarations) == 0usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(std::mem::offset_of!(EmptyStatement, span) == 0usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ExpressionStatement, span) == 0usize); - assert!(std::mem::offset_of!(ExpressionStatement, expression) == 8usize); + assert!(std::mem::offset_of!(ExpressionStatement, span) == 16usize); + assert!(std::mem::offset_of!(ExpressionStatement, expression) == 0usize); assert!(size_of::() == 32usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(IfStatement, span) == 0usize); - assert!(std::mem::offset_of!(IfStatement, test) == 8usize); - assert!(std::mem::offset_of!(IfStatement, consequent) == 24usize); - assert!(std::mem::offset_of!(IfStatement, alternate) == 40usize); + assert!(std::mem::offset_of!(IfStatement, span) == 48usize); + assert!(std::mem::offset_of!(IfStatement, test) == 0usize); + assert!(std::mem::offset_of!(IfStatement, consequent) == 16usize); + assert!(std::mem::offset_of!(IfStatement, alternate) == 32usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(DoWhileStatement, span) == 0usize); - assert!(std::mem::offset_of!(DoWhileStatement, body) == 8usize); - assert!(std::mem::offset_of!(DoWhileStatement, test) == 24usize); + assert!(std::mem::offset_of!(DoWhileStatement, span) == 32usize); + assert!(std::mem::offset_of!(DoWhileStatement, body) == 0usize); + assert!(std::mem::offset_of!(DoWhileStatement, test) == 16usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(WhileStatement, span) == 0usize); - assert!(std::mem::offset_of!(WhileStatement, test) == 8usize); - assert!(std::mem::offset_of!(WhileStatement, body) == 24usize); + assert!(std::mem::offset_of!(WhileStatement, span) == 32usize); + assert!(std::mem::offset_of!(WhileStatement, test) == 0usize); + assert!(std::mem::offset_of!(WhileStatement, body) == 16usize); assert!(size_of::() == 44usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ForStatement, span) == 0usize); - assert!(std::mem::offset_of!(ForStatement, init) == 8usize); - assert!(std::mem::offset_of!(ForStatement, test) == 24usize); - assert!(std::mem::offset_of!(ForStatement, update) == 40usize); - assert!(std::mem::offset_of!(ForStatement, body) == 56usize); + assert!(std::mem::offset_of!(ForStatement, span) == 64usize); + assert!(std::mem::offset_of!(ForStatement, init) == 0usize); + assert!(std::mem::offset_of!(ForStatement, test) == 16usize); + assert!(std::mem::offset_of!(ForStatement, update) == 32usize); + assert!(std::mem::offset_of!(ForStatement, body) == 48usize); assert!(std::mem::offset_of!(ForStatement, scope_id) == 72usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(size_of::() == 36usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ForInStatement, span) == 0usize); - assert!(std::mem::offset_of!(ForInStatement, left) == 8usize); - assert!(std::mem::offset_of!(ForInStatement, right) == 24usize); - assert!(std::mem::offset_of!(ForInStatement, body) == 40usize); + assert!(std::mem::offset_of!(ForInStatement, span) == 48usize); + assert!(std::mem::offset_of!(ForInStatement, left) == 0usize); + assert!(std::mem::offset_of!(ForInStatement, right) == 16usize); + assert!(std::mem::offset_of!(ForInStatement, body) == 32usize); assert!(std::mem::offset_of!(ForInStatement, scope_id) == 56usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(size_of::() == 40usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ForOfStatement, span) == 0usize); - assert!(std::mem::offset_of!(ForOfStatement, r#await) == 8usize); - assert!(std::mem::offset_of!(ForOfStatement, left) == 16usize); - assert!(std::mem::offset_of!(ForOfStatement, right) == 32usize); - assert!(std::mem::offset_of!(ForOfStatement, body) == 48usize); - assert!(std::mem::offset_of!(ForOfStatement, scope_id) == 64usize); + assert!(std::mem::offset_of!(ForOfStatement, span) == 48usize); + assert!(std::mem::offset_of!(ForOfStatement, r#await) == 60usize); + assert!(std::mem::offset_of!(ForOfStatement, left) == 0usize); + assert!(std::mem::offset_of!(ForOfStatement, right) == 16usize); + assert!(std::mem::offset_of!(ForOfStatement, body) == 32usize); + assert!(std::mem::offset_of!(ForOfStatement, scope_id) == 56usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ContinueStatement, span) == 0usize); - assert!(std::mem::offset_of!(ContinueStatement, label) == 8usize); + assert!(std::mem::offset_of!(ContinueStatement, span) == 24usize); + assert!(std::mem::offset_of!(ContinueStatement, label) == 0usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(BreakStatement, span) == 0usize); - assert!(std::mem::offset_of!(BreakStatement, label) == 8usize); + assert!(std::mem::offset_of!(BreakStatement, span) == 24usize); + assert!(std::mem::offset_of!(BreakStatement, label) == 0usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ReturnStatement, span) == 0usize); - assert!(std::mem::offset_of!(ReturnStatement, argument) == 8usize); + assert!(std::mem::offset_of!(ReturnStatement, span) == 16usize); + assert!(std::mem::offset_of!(ReturnStatement, argument) == 0usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(WithStatement, span) == 0usize); - assert!(std::mem::offset_of!(WithStatement, object) == 8usize); - assert!(std::mem::offset_of!(WithStatement, body) == 24usize); + assert!(std::mem::offset_of!(WithStatement, span) == 32usize); + assert!(std::mem::offset_of!(WithStatement, object) == 0usize); + assert!(std::mem::offset_of!(WithStatement, body) == 16usize); assert!(size_of::() == 36usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(SwitchStatement, span) == 0usize); - assert!(std::mem::offset_of!(SwitchStatement, discriminant) == 8usize); - assert!(std::mem::offset_of!(SwitchStatement, cases) == 24usize); + assert!(std::mem::offset_of!(SwitchStatement, span) == 48usize); + assert!(std::mem::offset_of!(SwitchStatement, discriminant) == 32usize); + assert!(std::mem::offset_of!(SwitchStatement, cases) == 0usize); assert!(std::mem::offset_of!(SwitchStatement, scope_id) == 56usize); assert!(size_of::() == 32usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(SwitchCase, span) == 0usize); - assert!(std::mem::offset_of!(SwitchCase, test) == 8usize); - assert!(std::mem::offset_of!(SwitchCase, consequent) == 24usize); + assert!(std::mem::offset_of!(SwitchCase, span) == 48usize); + assert!(std::mem::offset_of!(SwitchCase, test) == 32usize); + assert!(std::mem::offset_of!(SwitchCase, consequent) == 0usize); assert!(size_of::() == 32usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(LabeledStatement, span) == 0usize); - assert!(std::mem::offset_of!(LabeledStatement, label) == 8usize); - assert!(std::mem::offset_of!(LabeledStatement, body) == 32usize); + assert!(std::mem::offset_of!(LabeledStatement, span) == 40usize); + assert!(std::mem::offset_of!(LabeledStatement, label) == 0usize); + assert!(std::mem::offset_of!(LabeledStatement, body) == 24usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ThrowStatement, span) == 0usize); - assert!(std::mem::offset_of!(ThrowStatement, argument) == 8usize); + assert!(std::mem::offset_of!(ThrowStatement, span) == 16usize); + assert!(std::mem::offset_of!(ThrowStatement, argument) == 0usize); assert!(size_of::() == 20usize); assert!(align_of::() == 4usize); assert!(std::mem::offset_of!(TryStatement, span) == 0usize); @@ -1519,14 +1519,14 @@ const _: () = { assert!(std::mem::offset_of!(TryStatement, finalizer) == 24usize); assert!(size_of::() == 40usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(CatchClause, span) == 0usize); - assert!(std::mem::offset_of!(CatchClause, param) == 8usize); + assert!(std::mem::offset_of!(CatchClause, span) == 40usize); + assert!(std::mem::offset_of!(CatchClause, param) == 0usize); assert!(std::mem::offset_of!(CatchClause, body) == 48usize); assert!(std::mem::offset_of!(CatchClause, scope_id) == 56usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(CatchParameter, span) == 0usize); - assert!(std::mem::offset_of!(CatchParameter, pattern) == 8usize); + assert!(std::mem::offset_of!(CatchParameter, span) == 32usize); + assert!(std::mem::offset_of!(CatchParameter, pattern) == 0usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(std::mem::offset_of!(DebuggerStatement, span) == 0usize); @@ -1539,57 +1539,57 @@ const _: () = { assert!(align_of::() == 4usize); assert!(size_of::() == 32usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(AssignmentPattern, span) == 0usize); - assert!(std::mem::offset_of!(AssignmentPattern, left) == 8usize); - assert!(std::mem::offset_of!(AssignmentPattern, right) == 40usize); + assert!(std::mem::offset_of!(AssignmentPattern, span) == 48usize); + assert!(std::mem::offset_of!(AssignmentPattern, left) == 0usize); + assert!(std::mem::offset_of!(AssignmentPattern, right) == 32usize); assert!(size_of::() == 28usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ObjectPattern, span) == 0usize); - assert!(std::mem::offset_of!(ObjectPattern, properties) == 8usize); + assert!(std::mem::offset_of!(ObjectPattern, span) == 32usize); + assert!(std::mem::offset_of!(ObjectPattern, properties) == 0usize); assert!(std::mem::offset_of!(ObjectPattern, rest) == 40usize); assert!(size_of::() == 36usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(BindingProperty, span) == 0usize); - assert!(std::mem::offset_of!(BindingProperty, key) == 8usize); - assert!(std::mem::offset_of!(BindingProperty, value) == 24usize); + assert!(std::mem::offset_of!(BindingProperty, span) == 48usize); + assert!(std::mem::offset_of!(BindingProperty, key) == 32usize); + assert!(std::mem::offset_of!(BindingProperty, value) == 0usize); assert!(std::mem::offset_of!(BindingProperty, shorthand) == 56usize); assert!(std::mem::offset_of!(BindingProperty, computed) == 57usize); assert!(size_of::() == 28usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ArrayPattern, span) == 0usize); - assert!(std::mem::offset_of!(ArrayPattern, elements) == 8usize); + assert!(std::mem::offset_of!(ArrayPattern, span) == 32usize); + assert!(std::mem::offset_of!(ArrayPattern, elements) == 0usize); assert!(std::mem::offset_of!(ArrayPattern, rest) == 40usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(BindingRestElement, span) == 0usize); - assert!(std::mem::offset_of!(BindingRestElement, argument) == 8usize); - assert!(size_of::() == 84usize); + assert!(std::mem::offset_of!(BindingRestElement, span) == 32usize); + assert!(std::mem::offset_of!(BindingRestElement, argument) == 0usize); + assert!(size_of::() == 80usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(Function, r#type) == 0usize); - assert!(std::mem::offset_of!(Function, span) == 4usize); - assert!(std::mem::offset_of!(Function, id) == 16usize); - assert!(std::mem::offset_of!(Function, generator) == 48usize); - assert!(std::mem::offset_of!(Function, r#async) == 49usize); - assert!(std::mem::offset_of!(Function, declare) == 50usize); - assert!(std::mem::offset_of!(Function, type_parameters) == 56usize); - assert!(std::mem::offset_of!(Function, this_param) == 64usize); - assert!(std::mem::offset_of!(Function, params) == 104usize); - assert!(std::mem::offset_of!(Function, return_type) == 112usize); - assert!(std::mem::offset_of!(Function, body) == 120usize); - assert!(std::mem::offset_of!(Function, scope_id) == 128usize); + assert!(std::mem::offset_of!(Function, r#type) == 116usize); + assert!(std::mem::offset_of!(Function, span) == 72usize); + assert!(std::mem::offset_of!(Function, id) == 40usize); + assert!(std::mem::offset_of!(Function, generator) == 117usize); + assert!(std::mem::offset_of!(Function, r#async) == 118usize); + assert!(std::mem::offset_of!(Function, declare) == 119usize); + assert!(std::mem::offset_of!(Function, type_parameters) == 80usize); + assert!(std::mem::offset_of!(Function, this_param) == 0usize); + assert!(std::mem::offset_of!(Function, params) == 88usize); + assert!(std::mem::offset_of!(Function, return_type) == 96usize); + assert!(std::mem::offset_of!(Function, body) == 104usize); + assert!(std::mem::offset_of!(Function, scope_id) == 112usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); assert!(size_of::() == 32usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(FormalParameters, span) == 0usize); - assert!(std::mem::offset_of!(FormalParameters, kind) == 8usize); - assert!(std::mem::offset_of!(FormalParameters, items) == 16usize); - assert!(std::mem::offset_of!(FormalParameters, rest) == 48usize); + assert!(std::mem::offset_of!(FormalParameters, span) == 32usize); + assert!(std::mem::offset_of!(FormalParameters, kind) == 48usize); + assert!(std::mem::offset_of!(FormalParameters, items) == 0usize); + assert!(std::mem::offset_of!(FormalParameters, rest) == 40usize); assert!(size_of::() == 44usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(FormalParameter, span) == 0usize); - assert!(std::mem::offset_of!(FormalParameter, decorators) == 8usize); - assert!(std::mem::offset_of!(FormalParameter, pattern) == 40usize); + assert!(std::mem::offset_of!(FormalParameter, span) == 64usize); + assert!(std::mem::offset_of!(FormalParameter, decorators) == 0usize); + assert!(std::mem::offset_of!(FormalParameter, pattern) == 32usize); assert!(std::mem::offset_of!(FormalParameter, accessibility) == 72usize); assert!(std::mem::offset_of!(FormalParameter, readonly) == 73usize); assert!(std::mem::offset_of!(FormalParameter, r#override) == 74usize); @@ -1597,168 +1597,168 @@ const _: () = { assert!(align_of::() == 1usize); assert!(size_of::() == 40usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(FunctionBody, span) == 0usize); - assert!(std::mem::offset_of!(FunctionBody, directives) == 8usize); - assert!(std::mem::offset_of!(FunctionBody, statements) == 40usize); + assert!(std::mem::offset_of!(FunctionBody, span) == 64usize); + assert!(std::mem::offset_of!(FunctionBody, directives) == 0usize); + assert!(std::mem::offset_of!(FunctionBody, statements) == 32usize); assert!(size_of::() == 32usize); assert!(align_of::() == 4usize); assert!(std::mem::offset_of!(ArrowFunctionExpression, span) == 0usize); - assert!(std::mem::offset_of!(ArrowFunctionExpression, expression) == 8usize); - assert!(std::mem::offset_of!(ArrowFunctionExpression, r#async) == 9usize); - assert!(std::mem::offset_of!(ArrowFunctionExpression, type_parameters) == 16usize); - assert!(std::mem::offset_of!(ArrowFunctionExpression, params) == 24usize); - assert!(std::mem::offset_of!(ArrowFunctionExpression, return_type) == 32usize); - assert!(std::mem::offset_of!(ArrowFunctionExpression, body) == 40usize); - assert!(std::mem::offset_of!(ArrowFunctionExpression, scope_id) == 48usize); + assert!(std::mem::offset_of!(ArrowFunctionExpression, expression) == 44usize); + assert!(std::mem::offset_of!(ArrowFunctionExpression, r#async) == 45usize); + assert!(std::mem::offset_of!(ArrowFunctionExpression, type_parameters) == 8usize); + assert!(std::mem::offset_of!(ArrowFunctionExpression, params) == 16usize); + assert!(std::mem::offset_of!(ArrowFunctionExpression, return_type) == 24usize); + assert!(std::mem::offset_of!(ArrowFunctionExpression, body) == 32usize); + assert!(std::mem::offset_of!(ArrowFunctionExpression, scope_id) == 40usize); assert!(size_of::() == 20usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(YieldExpression, span) == 0usize); - assert!(std::mem::offset_of!(YieldExpression, delegate) == 8usize); - assert!(std::mem::offset_of!(YieldExpression, argument) == 16usize); - assert!(size_of::() == 92usize); + assert!(std::mem::offset_of!(YieldExpression, span) == 16usize); + assert!(std::mem::offset_of!(YieldExpression, delegate) == 24usize); + assert!(std::mem::offset_of!(YieldExpression, argument) == 0usize); + assert!(size_of::() == 88usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(Class, r#type) == 0usize); - assert!(std::mem::offset_of!(Class, span) == 4usize); - assert!(std::mem::offset_of!(Class, decorators) == 16usize); - assert!(std::mem::offset_of!(Class, id) == 48usize); - assert!(std::mem::offset_of!(Class, type_parameters) == 80usize); - assert!(std::mem::offset_of!(Class, super_class) == 88usize); - assert!(std::mem::offset_of!(Class, super_type_parameters) == 104usize); - assert!(std::mem::offset_of!(Class, implements) == 112usize); - assert!(std::mem::offset_of!(Class, body) == 144usize); - assert!(std::mem::offset_of!(Class, r#abstract) == 152usize); - assert!(std::mem::offset_of!(Class, declare) == 153usize); - assert!(std::mem::offset_of!(Class, scope_id) == 156usize); + assert!(std::mem::offset_of!(Class, r#type) == 148usize); + assert!(std::mem::offset_of!(Class, span) == 112usize); + assert!(std::mem::offset_of!(Class, decorators) == 0usize); + assert!(std::mem::offset_of!(Class, id) == 32usize); + assert!(std::mem::offset_of!(Class, type_parameters) == 120usize); + assert!(std::mem::offset_of!(Class, super_class) == 96usize); + assert!(std::mem::offset_of!(Class, super_type_parameters) == 128usize); + assert!(std::mem::offset_of!(Class, implements) == 64usize); + assert!(std::mem::offset_of!(Class, body) == 136usize); + assert!(std::mem::offset_of!(Class, r#abstract) == 149usize); + assert!(std::mem::offset_of!(Class, declare) == 150usize); + assert!(std::mem::offset_of!(Class, scope_id) == 144usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ClassBody, span) == 0usize); - assert!(std::mem::offset_of!(ClassBody, body) == 8usize); + assert!(std::mem::offset_of!(ClassBody, span) == 32usize); + assert!(std::mem::offset_of!(ClassBody, body) == 0usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); - assert!(size_of::() == 48usize); + assert!(size_of::() == 44usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(MethodDefinition, r#type) == 0usize); - assert!(std::mem::offset_of!(MethodDefinition, span) == 4usize); - assert!(std::mem::offset_of!(MethodDefinition, decorators) == 16usize); - assert!(std::mem::offset_of!(MethodDefinition, key) == 48usize); - assert!(std::mem::offset_of!(MethodDefinition, value) == 64usize); - assert!(std::mem::offset_of!(MethodDefinition, kind) == 72usize); - assert!(std::mem::offset_of!(MethodDefinition, computed) == 73usize); - assert!(std::mem::offset_of!(MethodDefinition, r#static) == 74usize); - assert!(std::mem::offset_of!(MethodDefinition, r#override) == 75usize); - assert!(std::mem::offset_of!(MethodDefinition, optional) == 76usize); - assert!(std::mem::offset_of!(MethodDefinition, accessibility) == 77usize); + assert!(std::mem::offset_of!(MethodDefinition, r#type) == 64usize); + assert!(std::mem::offset_of!(MethodDefinition, span) == 48usize); + assert!(std::mem::offset_of!(MethodDefinition, decorators) == 0usize); + assert!(std::mem::offset_of!(MethodDefinition, key) == 32usize); + assert!(std::mem::offset_of!(MethodDefinition, value) == 56usize); + assert!(std::mem::offset_of!(MethodDefinition, kind) == 65usize); + assert!(std::mem::offset_of!(MethodDefinition, computed) == 66usize); + assert!(std::mem::offset_of!(MethodDefinition, r#static) == 67usize); + assert!(std::mem::offset_of!(MethodDefinition, r#override) == 68usize); + assert!(std::mem::offset_of!(MethodDefinition, optional) == 69usize); + assert!(std::mem::offset_of!(MethodDefinition, accessibility) == 70usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); - assert!(size_of::() == 60usize); + assert!(size_of::() == 56usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(PropertyDefinition, r#type) == 0usize); - assert!(std::mem::offset_of!(PropertyDefinition, span) == 4usize); - assert!(std::mem::offset_of!(PropertyDefinition, decorators) == 16usize); - assert!(std::mem::offset_of!(PropertyDefinition, key) == 48usize); - assert!(std::mem::offset_of!(PropertyDefinition, value) == 64usize); - assert!(std::mem::offset_of!(PropertyDefinition, computed) == 80usize); - assert!(std::mem::offset_of!(PropertyDefinition, r#static) == 81usize); - assert!(std::mem::offset_of!(PropertyDefinition, declare) == 82usize); - assert!(std::mem::offset_of!(PropertyDefinition, r#override) == 83usize); - assert!(std::mem::offset_of!(PropertyDefinition, optional) == 84usize); - assert!(std::mem::offset_of!(PropertyDefinition, definite) == 85usize); - assert!(std::mem::offset_of!(PropertyDefinition, readonly) == 86usize); - assert!(std::mem::offset_of!(PropertyDefinition, type_annotation) == 88usize); - assert!(std::mem::offset_of!(PropertyDefinition, accessibility) == 96usize); + assert!(std::mem::offset_of!(PropertyDefinition, r#type) == 80usize); + assert!(std::mem::offset_of!(PropertyDefinition, span) == 64usize); + assert!(std::mem::offset_of!(PropertyDefinition, decorators) == 0usize); + assert!(std::mem::offset_of!(PropertyDefinition, key) == 32usize); + assert!(std::mem::offset_of!(PropertyDefinition, value) == 48usize); + assert!(std::mem::offset_of!(PropertyDefinition, computed) == 81usize); + assert!(std::mem::offset_of!(PropertyDefinition, r#static) == 82usize); + assert!(std::mem::offset_of!(PropertyDefinition, declare) == 83usize); + assert!(std::mem::offset_of!(PropertyDefinition, r#override) == 84usize); + assert!(std::mem::offset_of!(PropertyDefinition, optional) == 85usize); + assert!(std::mem::offset_of!(PropertyDefinition, definite) == 86usize); + assert!(std::mem::offset_of!(PropertyDefinition, readonly) == 87usize); + assert!(std::mem::offset_of!(PropertyDefinition, type_annotation) == 72usize); + assert!(std::mem::offset_of!(PropertyDefinition, accessibility) == 88usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(PrivateIdentifier, span) == 0usize); - assert!(std::mem::offset_of!(PrivateIdentifier, name) == 8usize); + assert!(std::mem::offset_of!(PrivateIdentifier, span) == 16usize); + assert!(std::mem::offset_of!(PrivateIdentifier, name) == 0usize); assert!(size_of::() == 28usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(StaticBlock, span) == 0usize); - assert!(std::mem::offset_of!(StaticBlock, body) == 8usize); + assert!(std::mem::offset_of!(StaticBlock, span) == 32usize); + assert!(std::mem::offset_of!(StaticBlock, body) == 0usize); assert!(std::mem::offset_of!(StaticBlock, scope_id) == 40usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); - assert!(size_of::() == 48usize); + assert!(size_of::() == 44usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(AccessorProperty, r#type) == 0usize); - assert!(std::mem::offset_of!(AccessorProperty, span) == 4usize); - assert!(std::mem::offset_of!(AccessorProperty, decorators) == 16usize); - assert!(std::mem::offset_of!(AccessorProperty, key) == 48usize); - assert!(std::mem::offset_of!(AccessorProperty, value) == 64usize); - assert!(std::mem::offset_of!(AccessorProperty, computed) == 80usize); - assert!(std::mem::offset_of!(AccessorProperty, r#static) == 81usize); + assert!(std::mem::offset_of!(AccessorProperty, r#type) == 72usize); + assert!(std::mem::offset_of!(AccessorProperty, span) == 64usize); + assert!(std::mem::offset_of!(AccessorProperty, decorators) == 0usize); + assert!(std::mem::offset_of!(AccessorProperty, key) == 32usize); + assert!(std::mem::offset_of!(AccessorProperty, value) == 48usize); + assert!(std::mem::offset_of!(AccessorProperty, computed) == 73usize); + assert!(std::mem::offset_of!(AccessorProperty, r#static) == 74usize); assert!(size_of::() == 32usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ImportExpression, span) == 0usize); - assert!(std::mem::offset_of!(ImportExpression, source) == 8usize); - assert!(std::mem::offset_of!(ImportExpression, arguments) == 24usize); + assert!(std::mem::offset_of!(ImportExpression, span) == 48usize); + assert!(std::mem::offset_of!(ImportExpression, source) == 32usize); + assert!(std::mem::offset_of!(ImportExpression, arguments) == 0usize); assert!(size_of::() == 84usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ImportDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(ImportDeclaration, specifiers) == 8usize); - assert!(std::mem::offset_of!(ImportDeclaration, source) == 40usize); - assert!(std::mem::offset_of!(ImportDeclaration, with_clause) == 64usize); + assert!(std::mem::offset_of!(ImportDeclaration, span) == 120usize); + assert!(std::mem::offset_of!(ImportDeclaration, specifiers) == 64usize); + assert!(std::mem::offset_of!(ImportDeclaration, source) == 96usize); + assert!(std::mem::offset_of!(ImportDeclaration, with_clause) == 0usize); assert!(std::mem::offset_of!(ImportDeclaration, import_kind) == 128usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(size_of::() == 60usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ImportSpecifier, span) == 0usize); - assert!(std::mem::offset_of!(ImportSpecifier, imported) == 8usize); - assert!(std::mem::offset_of!(ImportSpecifier, local) == 48usize); + assert!(std::mem::offset_of!(ImportSpecifier, span) == 72usize); + assert!(std::mem::offset_of!(ImportSpecifier, imported) == 0usize); + assert!(std::mem::offset_of!(ImportSpecifier, local) == 40usize); assert!(std::mem::offset_of!(ImportSpecifier, import_kind) == 80usize); assert!(size_of::() == 28usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ImportDefaultSpecifier, span) == 0usize); - assert!(std::mem::offset_of!(ImportDefaultSpecifier, local) == 8usize); + assert!(std::mem::offset_of!(ImportDefaultSpecifier, span) == 32usize); + assert!(std::mem::offset_of!(ImportDefaultSpecifier, local) == 0usize); assert!(size_of::() == 28usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ImportNamespaceSpecifier, span) == 0usize); - assert!(std::mem::offset_of!(ImportNamespaceSpecifier, local) == 8usize); + assert!(std::mem::offset_of!(ImportNamespaceSpecifier, span) == 32usize); + assert!(std::mem::offset_of!(ImportNamespaceSpecifier, local) == 0usize); assert!(size_of::() == 40usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(WithClause, span) == 0usize); - assert!(std::mem::offset_of!(WithClause, attributes_keyword) == 8usize); - assert!(std::mem::offset_of!(WithClause, with_entries) == 32usize); + assert!(std::mem::offset_of!(WithClause, span) == 56usize); + assert!(std::mem::offset_of!(WithClause, attributes_keyword) == 32usize); + assert!(std::mem::offset_of!(WithClause, with_entries) == 0usize); assert!(size_of::() == 44usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ImportAttribute, span) == 0usize); - assert!(std::mem::offset_of!(ImportAttribute, key) == 8usize); - assert!(std::mem::offset_of!(ImportAttribute, value) == 40usize); + assert!(std::mem::offset_of!(ImportAttribute, span) == 56usize); + assert!(std::mem::offset_of!(ImportAttribute, key) == 0usize); + assert!(std::mem::offset_of!(ImportAttribute, value) == 32usize); assert!(size_of::() == 20usize); assert!(align_of::() == 4usize); assert!(size_of::() == 92usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ExportNamedDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(ExportNamedDeclaration, declaration) == 8usize); - assert!(std::mem::offset_of!(ExportNamedDeclaration, specifiers) == 24usize); - assert!(std::mem::offset_of!(ExportNamedDeclaration, source) == 56usize); - assert!(std::mem::offset_of!(ExportNamedDeclaration, export_kind) == 80usize); - assert!(std::mem::offset_of!(ExportNamedDeclaration, with_clause) == 88usize); + assert!(std::mem::offset_of!(ExportNamedDeclaration, span) == 136usize); + assert!(std::mem::offset_of!(ExportNamedDeclaration, declaration) == 120usize); + assert!(std::mem::offset_of!(ExportNamedDeclaration, specifiers) == 64usize); + assert!(std::mem::offset_of!(ExportNamedDeclaration, source) == 96usize); + assert!(std::mem::offset_of!(ExportNamedDeclaration, export_kind) == 144usize); + assert!(std::mem::offset_of!(ExportNamedDeclaration, with_clause) == 0usize); assert!(size_of::() == 44usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ExportDefaultDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(ExportDefaultDeclaration, declaration) == 8usize); - assert!(std::mem::offset_of!(ExportDefaultDeclaration, exported) == 24usize); + assert!(std::mem::offset_of!(ExportDefaultDeclaration, span) == 56usize); + assert!(std::mem::offset_of!(ExportDefaultDeclaration, declaration) == 40usize); + assert!(std::mem::offset_of!(ExportDefaultDeclaration, exported) == 0usize); assert!(size_of::() == 96usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ExportAllDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(ExportAllDeclaration, exported) == 8usize); - assert!(std::mem::offset_of!(ExportAllDeclaration, source) == 48usize); - assert!(std::mem::offset_of!(ExportAllDeclaration, with_clause) == 72usize); + assert!(std::mem::offset_of!(ExportAllDeclaration, span) == 128usize); + assert!(std::mem::offset_of!(ExportAllDeclaration, exported) == 64usize); + assert!(std::mem::offset_of!(ExportAllDeclaration, source) == 104usize); + assert!(std::mem::offset_of!(ExportAllDeclaration, with_clause) == 0usize); assert!(std::mem::offset_of!(ExportAllDeclaration, export_kind) == 136usize); assert!(size_of::() == 68usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(ExportSpecifier, span) == 0usize); - assert!(std::mem::offset_of!(ExportSpecifier, local) == 8usize); - assert!(std::mem::offset_of!(ExportSpecifier, exported) == 48usize); + assert!(std::mem::offset_of!(ExportSpecifier, span) == 80usize); + assert!(std::mem::offset_of!(ExportSpecifier, local) == 0usize); + assert!(std::mem::offset_of!(ExportSpecifier, exported) == 40usize); assert!(std::mem::offset_of!(ExportSpecifier, export_kind) == 88usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); @@ -1766,90 +1766,90 @@ const _: () = { assert!(align_of::() == 4usize); assert!(size_of::() == 28usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSThisParameter, span) == 0usize); - assert!(std::mem::offset_of!(TSThisParameter, this) == 8usize); + assert!(std::mem::offset_of!(TSThisParameter, span) == 24usize); + assert!(std::mem::offset_of!(TSThisParameter, this) == 0usize); assert!(std::mem::offset_of!(TSThisParameter, type_annotation) == 32usize); assert!(size_of::() == 52usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSEnumDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(TSEnumDeclaration, id) == 8usize); - assert!(std::mem::offset_of!(TSEnumDeclaration, members) == 40usize); - assert!(std::mem::offset_of!(TSEnumDeclaration, r#const) == 72usize); - assert!(std::mem::offset_of!(TSEnumDeclaration, declare) == 73usize); - assert!(std::mem::offset_of!(TSEnumDeclaration, scope_id) == 76usize); + assert!(std::mem::offset_of!(TSEnumDeclaration, span) == 64usize); + assert!(std::mem::offset_of!(TSEnumDeclaration, id) == 0usize); + assert!(std::mem::offset_of!(TSEnumDeclaration, members) == 32usize); + assert!(std::mem::offset_of!(TSEnumDeclaration, r#const) == 76usize); + assert!(std::mem::offset_of!(TSEnumDeclaration, declare) == 77usize); + assert!(std::mem::offset_of!(TSEnumDeclaration, scope_id) == 72usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSEnumMember, span) == 0usize); - assert!(std::mem::offset_of!(TSEnumMember, id) == 8usize); - assert!(std::mem::offset_of!(TSEnumMember, initializer) == 24usize); + assert!(std::mem::offset_of!(TSEnumMember, span) == 32usize); + assert!(std::mem::offset_of!(TSEnumMember, id) == 0usize); + assert!(std::mem::offset_of!(TSEnumMember, initializer) == 16usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSTypeAnnotation, span) == 0usize); - assert!(std::mem::offset_of!(TSTypeAnnotation, type_annotation) == 8usize); + assert!(std::mem::offset_of!(TSTypeAnnotation, span) == 16usize); + assert!(std::mem::offset_of!(TSTypeAnnotation, type_annotation) == 0usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSLiteralType, span) == 0usize); - assert!(std::mem::offset_of!(TSLiteralType, literal) == 8usize); + assert!(std::mem::offset_of!(TSLiteralType, span) == 16usize); + assert!(std::mem::offset_of!(TSLiteralType, literal) == 0usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(size_of::() == 44usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSConditionalType, span) == 0usize); - assert!(std::mem::offset_of!(TSConditionalType, check_type) == 8usize); - assert!(std::mem::offset_of!(TSConditionalType, extends_type) == 24usize); - assert!(std::mem::offset_of!(TSConditionalType, true_type) == 40usize); - assert!(std::mem::offset_of!(TSConditionalType, false_type) == 56usize); + assert!(std::mem::offset_of!(TSConditionalType, span) == 64usize); + assert!(std::mem::offset_of!(TSConditionalType, check_type) == 0usize); + assert!(std::mem::offset_of!(TSConditionalType, extends_type) == 16usize); + assert!(std::mem::offset_of!(TSConditionalType, true_type) == 32usize); + assert!(std::mem::offset_of!(TSConditionalType, false_type) == 48usize); assert!(std::mem::offset_of!(TSConditionalType, scope_id) == 72usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSUnionType, span) == 0usize); - assert!(std::mem::offset_of!(TSUnionType, types) == 8usize); + assert!(std::mem::offset_of!(TSUnionType, span) == 32usize); + assert!(std::mem::offset_of!(TSUnionType, types) == 0usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSIntersectionType, span) == 0usize); - assert!(std::mem::offset_of!(TSIntersectionType, types) == 8usize); + assert!(std::mem::offset_of!(TSIntersectionType, span) == 32usize); + assert!(std::mem::offset_of!(TSIntersectionType, types) == 0usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSParenthesizedType, span) == 0usize); - assert!(std::mem::offset_of!(TSParenthesizedType, type_annotation) == 8usize); + assert!(std::mem::offset_of!(TSParenthesizedType, span) == 16usize); + assert!(std::mem::offset_of!(TSParenthesizedType, type_annotation) == 0usize); assert!(size_of::() == 20usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSTypeOperator, span) == 0usize); - assert!(std::mem::offset_of!(TSTypeOperator, operator) == 8usize); - assert!(std::mem::offset_of!(TSTypeOperator, type_annotation) == 16usize); + assert!(std::mem::offset_of!(TSTypeOperator, span) == 16usize); + assert!(std::mem::offset_of!(TSTypeOperator, operator) == 24usize); + assert!(std::mem::offset_of!(TSTypeOperator, type_annotation) == 0usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSArrayType, span) == 0usize); - assert!(std::mem::offset_of!(TSArrayType, element_type) == 8usize); + assert!(std::mem::offset_of!(TSArrayType, span) == 16usize); + assert!(std::mem::offset_of!(TSArrayType, element_type) == 0usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSIndexedAccessType, span) == 0usize); - assert!(std::mem::offset_of!(TSIndexedAccessType, object_type) == 8usize); - assert!(std::mem::offset_of!(TSIndexedAccessType, index_type) == 24usize); + assert!(std::mem::offset_of!(TSIndexedAccessType, span) == 32usize); + assert!(std::mem::offset_of!(TSIndexedAccessType, object_type) == 0usize); + assert!(std::mem::offset_of!(TSIndexedAccessType, index_type) == 16usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSTupleType, span) == 0usize); - assert!(std::mem::offset_of!(TSTupleType, element_types) == 8usize); + assert!(std::mem::offset_of!(TSTupleType, span) == 32usize); + assert!(std::mem::offset_of!(TSTupleType, element_types) == 0usize); assert!(size_of::() == 36usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSNamedTupleMember, span) == 0usize); - assert!(std::mem::offset_of!(TSNamedTupleMember, element_type) == 8usize); - assert!(std::mem::offset_of!(TSNamedTupleMember, label) == 24usize); + assert!(std::mem::offset_of!(TSNamedTupleMember, span) == 40usize); + assert!(std::mem::offset_of!(TSNamedTupleMember, element_type) == 24usize); + assert!(std::mem::offset_of!(TSNamedTupleMember, label) == 0usize); assert!(std::mem::offset_of!(TSNamedTupleMember, optional) == 48usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSOptionalType, span) == 0usize); - assert!(std::mem::offset_of!(TSOptionalType, type_annotation) == 8usize); + assert!(std::mem::offset_of!(TSOptionalType, span) == 16usize); + assert!(std::mem::offset_of!(TSOptionalType, type_annotation) == 0usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSRestType, span) == 0usize); - assert!(std::mem::offset_of!(TSRestType, type_annotation) == 8usize); + assert!(std::mem::offset_of!(TSRestType, span) == 16usize); + assert!(std::mem::offset_of!(TSRestType, type_annotation) == 0usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(size_of::() == 8usize); @@ -1896,81 +1896,81 @@ const _: () = { assert!(std::mem::offset_of!(TSBigIntKeyword, span) == 0usize); assert!(size_of::() == 20usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSTypeReference, span) == 0usize); - assert!(std::mem::offset_of!(TSTypeReference, type_name) == 8usize); + assert!(std::mem::offset_of!(TSTypeReference, span) == 16usize); + assert!(std::mem::offset_of!(TSTypeReference, type_name) == 0usize); assert!(std::mem::offset_of!(TSTypeReference, type_parameters) == 24usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(size_of::() == 32usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSQualifiedName, span) == 0usize); - assert!(std::mem::offset_of!(TSQualifiedName, left) == 8usize); - assert!(std::mem::offset_of!(TSQualifiedName, right) == 24usize); + assert!(std::mem::offset_of!(TSQualifiedName, span) == 40usize); + assert!(std::mem::offset_of!(TSQualifiedName, left) == 24usize); + assert!(std::mem::offset_of!(TSQualifiedName, right) == 0usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSTypeParameterInstantiation, span) == 0usize); - assert!(std::mem::offset_of!(TSTypeParameterInstantiation, params) == 8usize); + assert!(std::mem::offset_of!(TSTypeParameterInstantiation, span) == 32usize); + assert!(std::mem::offset_of!(TSTypeParameterInstantiation, params) == 0usize); assert!(size_of::() == 48usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSTypeParameter, span) == 0usize); - assert!(std::mem::offset_of!(TSTypeParameter, name) == 8usize); - assert!(std::mem::offset_of!(TSTypeParameter, constraint) == 40usize); - assert!(std::mem::offset_of!(TSTypeParameter, default) == 56usize); + assert!(std::mem::offset_of!(TSTypeParameter, span) == 64usize); + assert!(std::mem::offset_of!(TSTypeParameter, name) == 0usize); + assert!(std::mem::offset_of!(TSTypeParameter, constraint) == 32usize); + assert!(std::mem::offset_of!(TSTypeParameter, default) == 48usize); assert!(std::mem::offset_of!(TSTypeParameter, r#in) == 72usize); assert!(std::mem::offset_of!(TSTypeParameter, out) == 73usize); assert!(std::mem::offset_of!(TSTypeParameter, r#const) == 74usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSTypeParameterDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(TSTypeParameterDeclaration, params) == 8usize); + assert!(std::mem::offset_of!(TSTypeParameterDeclaration, span) == 32usize); + assert!(std::mem::offset_of!(TSTypeParameterDeclaration, params) == 0usize); assert!(size_of::() == 48usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSTypeAliasDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(TSTypeAliasDeclaration, id) == 8usize); - assert!(std::mem::offset_of!(TSTypeAliasDeclaration, type_parameters) == 40usize); - assert!(std::mem::offset_of!(TSTypeAliasDeclaration, type_annotation) == 48usize); - assert!(std::mem::offset_of!(TSTypeAliasDeclaration, declare) == 64usize); - assert!(std::mem::offset_of!(TSTypeAliasDeclaration, scope_id) == 68usize); + assert!(std::mem::offset_of!(TSTypeAliasDeclaration, span) == 48usize); + assert!(std::mem::offset_of!(TSTypeAliasDeclaration, id) == 0usize); + assert!(std::mem::offset_of!(TSTypeAliasDeclaration, type_parameters) == 56usize); + assert!(std::mem::offset_of!(TSTypeAliasDeclaration, type_annotation) == 32usize); + assert!(std::mem::offset_of!(TSTypeAliasDeclaration, declare) == 68usize); + assert!(std::mem::offset_of!(TSTypeAliasDeclaration, scope_id) == 64usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); assert!(size_of::() == 20usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSClassImplements, span) == 0usize); - assert!(std::mem::offset_of!(TSClassImplements, expression) == 8usize); + assert!(std::mem::offset_of!(TSClassImplements, span) == 16usize); + assert!(std::mem::offset_of!(TSClassImplements, expression) == 0usize); assert!(std::mem::offset_of!(TSClassImplements, type_parameters) == 24usize); assert!(size_of::() == 60usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSInterfaceDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(TSInterfaceDeclaration, id) == 8usize); - assert!(std::mem::offset_of!(TSInterfaceDeclaration, extends) == 40usize); + assert!(std::mem::offset_of!(TSInterfaceDeclaration, span) == 64usize); + assert!(std::mem::offset_of!(TSInterfaceDeclaration, id) == 0usize); + assert!(std::mem::offset_of!(TSInterfaceDeclaration, extends) == 32usize); assert!(std::mem::offset_of!(TSInterfaceDeclaration, type_parameters) == 72usize); assert!(std::mem::offset_of!(TSInterfaceDeclaration, body) == 80usize); - assert!(std::mem::offset_of!(TSInterfaceDeclaration, declare) == 88usize); - assert!(std::mem::offset_of!(TSInterfaceDeclaration, scope_id) == 92usize); + assert!(std::mem::offset_of!(TSInterfaceDeclaration, declare) == 92usize); + assert!(std::mem::offset_of!(TSInterfaceDeclaration, scope_id) == 88usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSInterfaceBody, span) == 0usize); - assert!(std::mem::offset_of!(TSInterfaceBody, body) == 8usize); + assert!(std::mem::offset_of!(TSInterfaceBody, span) == 32usize); + assert!(std::mem::offset_of!(TSInterfaceBody, body) == 0usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSPropertySignature, span) == 0usize); - assert!(std::mem::offset_of!(TSPropertySignature, computed) == 8usize); - assert!(std::mem::offset_of!(TSPropertySignature, optional) == 9usize); - assert!(std::mem::offset_of!(TSPropertySignature, readonly) == 10usize); - assert!(std::mem::offset_of!(TSPropertySignature, key) == 16usize); - assert!(std::mem::offset_of!(TSPropertySignature, type_annotation) == 32usize); + assert!(std::mem::offset_of!(TSPropertySignature, span) == 16usize); + assert!(std::mem::offset_of!(TSPropertySignature, computed) == 32usize); + assert!(std::mem::offset_of!(TSPropertySignature, optional) == 33usize); + assert!(std::mem::offset_of!(TSPropertySignature, readonly) == 34usize); + assert!(std::mem::offset_of!(TSPropertySignature, key) == 0usize); + assert!(std::mem::offset_of!(TSPropertySignature, type_annotation) == 24usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(size_of::() == 32usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSIndexSignature, span) == 0usize); - assert!(std::mem::offset_of!(TSIndexSignature, parameters) == 8usize); + assert!(std::mem::offset_of!(TSIndexSignature, span) == 32usize); + assert!(std::mem::offset_of!(TSIndexSignature, parameters) == 0usize); assert!(std::mem::offset_of!(TSIndexSignature, type_annotation) == 40usize); assert!(std::mem::offset_of!(TSIndexSignature, readonly) == 48usize); assert!(size_of::() == 48usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSCallSignatureDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(TSCallSignatureDeclaration, this_param) == 8usize); + assert!(std::mem::offset_of!(TSCallSignatureDeclaration, span) == 40usize); + assert!(std::mem::offset_of!(TSCallSignatureDeclaration, this_param) == 0usize); assert!(std::mem::offset_of!(TSCallSignatureDeclaration, params) == 48usize); assert!(std::mem::offset_of!(TSCallSignatureDeclaration, return_type) == 56usize); assert!(std::mem::offset_of!(TSCallSignatureDeclaration, type_parameters) == 64usize); @@ -1978,16 +1978,16 @@ const _: () = { assert!(align_of::() == 1usize); assert!(size_of::() == 64usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSMethodSignature, span) == 0usize); - assert!(std::mem::offset_of!(TSMethodSignature, key) == 8usize); - assert!(std::mem::offset_of!(TSMethodSignature, computed) == 24usize); - assert!(std::mem::offset_of!(TSMethodSignature, optional) == 25usize); - assert!(std::mem::offset_of!(TSMethodSignature, kind) == 26usize); - assert!(std::mem::offset_of!(TSMethodSignature, this_param) == 32usize); - assert!(std::mem::offset_of!(TSMethodSignature, params) == 72usize); - assert!(std::mem::offset_of!(TSMethodSignature, return_type) == 80usize); - assert!(std::mem::offset_of!(TSMethodSignature, type_parameters) == 88usize); - assert!(std::mem::offset_of!(TSMethodSignature, scope_id) == 96usize); + assert!(std::mem::offset_of!(TSMethodSignature, span) == 56usize); + assert!(std::mem::offset_of!(TSMethodSignature, key) == 40usize); + assert!(std::mem::offset_of!(TSMethodSignature, computed) == 92usize); + assert!(std::mem::offset_of!(TSMethodSignature, optional) == 93usize); + assert!(std::mem::offset_of!(TSMethodSignature, kind) == 94usize); + assert!(std::mem::offset_of!(TSMethodSignature, this_param) == 0usize); + assert!(std::mem::offset_of!(TSMethodSignature, params) == 64usize); + assert!(std::mem::offset_of!(TSMethodSignature, return_type) == 72usize); + assert!(std::mem::offset_of!(TSMethodSignature, type_parameters) == 80usize); + assert!(std::mem::offset_of!(TSMethodSignature, scope_id) == 88usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); assert!(std::mem::offset_of!(TSConstructSignatureDeclaration, span) == 0usize); @@ -1997,30 +1997,30 @@ const _: () = { assert!(std::mem::offset_of!(TSConstructSignatureDeclaration, scope_id) == 32usize); assert!(size_of::() == 20usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSIndexSignatureName, span) == 0usize); - assert!(std::mem::offset_of!(TSIndexSignatureName, name) == 8usize); + assert!(std::mem::offset_of!(TSIndexSignatureName, span) == 16usize); + assert!(std::mem::offset_of!(TSIndexSignatureName, name) == 0usize); assert!(std::mem::offset_of!(TSIndexSignatureName, type_annotation) == 24usize); assert!(size_of::() == 20usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSInterfaceHeritage, span) == 0usize); - assert!(std::mem::offset_of!(TSInterfaceHeritage, expression) == 8usize); + assert!(std::mem::offset_of!(TSInterfaceHeritage, span) == 16usize); + assert!(std::mem::offset_of!(TSInterfaceHeritage, expression) == 0usize); assert!(std::mem::offset_of!(TSInterfaceHeritage, type_parameters) == 24usize); assert!(size_of::() == 28usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSTypePredicate, span) == 0usize); - assert!(std::mem::offset_of!(TSTypePredicate, parameter_name) == 8usize); - assert!(std::mem::offset_of!(TSTypePredicate, asserts) == 24usize); - assert!(std::mem::offset_of!(TSTypePredicate, type_annotation) == 32usize); + assert!(std::mem::offset_of!(TSTypePredicate, span) == 16usize); + assert!(std::mem::offset_of!(TSTypePredicate, parameter_name) == 0usize); + assert!(std::mem::offset_of!(TSTypePredicate, asserts) == 32usize); + assert!(std::mem::offset_of!(TSTypePredicate, type_annotation) == 24usize); assert!(size_of::() == 12usize); assert!(align_of::() == 4usize); assert!(size_of::() == 44usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSModuleDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(TSModuleDeclaration, id) == 8usize); - assert!(std::mem::offset_of!(TSModuleDeclaration, body) == 40usize); - assert!(std::mem::offset_of!(TSModuleDeclaration, kind) == 56usize); - assert!(std::mem::offset_of!(TSModuleDeclaration, declare) == 57usize); - assert!(std::mem::offset_of!(TSModuleDeclaration, scope_id) == 60usize); + assert!(std::mem::offset_of!(TSModuleDeclaration, span) == 48usize); + assert!(std::mem::offset_of!(TSModuleDeclaration, id) == 0usize); + assert!(std::mem::offset_of!(TSModuleDeclaration, body) == 32usize); + assert!(std::mem::offset_of!(TSModuleDeclaration, kind) == 60usize); + assert!(std::mem::offset_of!(TSModuleDeclaration, declare) == 61usize); + assert!(std::mem::offset_of!(TSModuleDeclaration, scope_id) == 56usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); assert!(size_of::() == 20usize); @@ -2029,159 +2029,159 @@ const _: () = { assert!(align_of::() == 4usize); assert!(size_of::() == 40usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSModuleBlock, span) == 0usize); - assert!(std::mem::offset_of!(TSModuleBlock, directives) == 8usize); - assert!(std::mem::offset_of!(TSModuleBlock, body) == 40usize); + assert!(std::mem::offset_of!(TSModuleBlock, span) == 64usize); + assert!(std::mem::offset_of!(TSModuleBlock, directives) == 0usize); + assert!(std::mem::offset_of!(TSModuleBlock, body) == 32usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSTypeLiteral, span) == 0usize); - assert!(std::mem::offset_of!(TSTypeLiteral, members) == 8usize); + assert!(std::mem::offset_of!(TSTypeLiteral, span) == 32usize); + assert!(std::mem::offset_of!(TSTypeLiteral, members) == 0usize); assert!(size_of::() == 12usize); assert!(align_of::() == 4usize); assert!(std::mem::offset_of!(TSInferType, span) == 0usize); assert!(std::mem::offset_of!(TSInferType, type_parameter) == 8usize); assert!(size_of::() == 20usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSTypeQuery, span) == 0usize); - assert!(std::mem::offset_of!(TSTypeQuery, expr_name) == 8usize); + assert!(std::mem::offset_of!(TSTypeQuery, span) == 16usize); + assert!(std::mem::offset_of!(TSTypeQuery, expr_name) == 0usize); assert!(std::mem::offset_of!(TSTypeQuery, type_parameters) == 24usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(size_of::() == 56usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSImportType, span) == 0usize); - assert!(std::mem::offset_of!(TSImportType, is_type_of) == 8usize); - assert!(std::mem::offset_of!(TSImportType, parameter) == 16usize); - assert!(std::mem::offset_of!(TSImportType, qualifier) == 32usize); - assert!(std::mem::offset_of!(TSImportType, attributes) == 48usize); - assert!(std::mem::offset_of!(TSImportType, type_parameters) == 88usize); + assert!(std::mem::offset_of!(TSImportType, span) == 72usize); + assert!(std::mem::offset_of!(TSImportType, is_type_of) == 88usize); + assert!(std::mem::offset_of!(TSImportType, parameter) == 40usize); + assert!(std::mem::offset_of!(TSImportType, qualifier) == 56usize); + assert!(std::mem::offset_of!(TSImportType, attributes) == 0usize); + assert!(std::mem::offset_of!(TSImportType, type_parameters) == 80usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSImportAttributes, span) == 0usize); - assert!(std::mem::offset_of!(TSImportAttributes, elements) == 8usize); + assert!(std::mem::offset_of!(TSImportAttributes, span) == 32usize); + assert!(std::mem::offset_of!(TSImportAttributes, elements) == 0usize); assert!(size_of::() == 36usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSImportAttribute, span) == 0usize); - assert!(std::mem::offset_of!(TSImportAttribute, name) == 8usize); - assert!(std::mem::offset_of!(TSImportAttribute, value) == 40usize); + assert!(std::mem::offset_of!(TSImportAttribute, span) == 48usize); + assert!(std::mem::offset_of!(TSImportAttribute, name) == 0usize); + assert!(std::mem::offset_of!(TSImportAttribute, value) == 32usize); assert!(size_of::() == 20usize); assert!(align_of::() == 4usize); assert!(size_of::() == 48usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSFunctionType, span) == 0usize); - assert!(std::mem::offset_of!(TSFunctionType, this_param) == 8usize); + assert!(std::mem::offset_of!(TSFunctionType, span) == 40usize); + assert!(std::mem::offset_of!(TSFunctionType, this_param) == 0usize); assert!(std::mem::offset_of!(TSFunctionType, params) == 48usize); assert!(std::mem::offset_of!(TSFunctionType, return_type) == 56usize); assert!(std::mem::offset_of!(TSFunctionType, type_parameters) == 64usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); assert!(std::mem::offset_of!(TSConstructorType, span) == 0usize); - assert!(std::mem::offset_of!(TSConstructorType, r#abstract) == 8usize); - assert!(std::mem::offset_of!(TSConstructorType, params) == 16usize); - assert!(std::mem::offset_of!(TSConstructorType, return_type) == 24usize); - assert!(std::mem::offset_of!(TSConstructorType, type_parameters) == 32usize); + assert!(std::mem::offset_of!(TSConstructorType, r#abstract) == 32usize); + assert!(std::mem::offset_of!(TSConstructorType, params) == 8usize); + assert!(std::mem::offset_of!(TSConstructorType, return_type) == 16usize); + assert!(std::mem::offset_of!(TSConstructorType, type_parameters) == 24usize); assert!(size_of::() == 36usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSMappedType, span) == 0usize); - assert!(std::mem::offset_of!(TSMappedType, type_parameter) == 8usize); - assert!(std::mem::offset_of!(TSMappedType, name_type) == 16usize); - assert!(std::mem::offset_of!(TSMappedType, type_annotation) == 32usize); - assert!(std::mem::offset_of!(TSMappedType, optional) == 48usize); - assert!(std::mem::offset_of!(TSMappedType, readonly) == 49usize); - assert!(std::mem::offset_of!(TSMappedType, scope_id) == 52usize); + assert!(std::mem::offset_of!(TSMappedType, span) == 32usize); + assert!(std::mem::offset_of!(TSMappedType, type_parameter) == 40usize); + assert!(std::mem::offset_of!(TSMappedType, name_type) == 0usize); + assert!(std::mem::offset_of!(TSMappedType, type_annotation) == 16usize); + assert!(std::mem::offset_of!(TSMappedType, optional) == 52usize); + assert!(std::mem::offset_of!(TSMappedType, readonly) == 53usize); + assert!(std::mem::offset_of!(TSMappedType, scope_id) == 48usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); assert!(size_of::() == 40usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSTemplateLiteralType, span) == 0usize); - assert!(std::mem::offset_of!(TSTemplateLiteralType, quasis) == 8usize); - assert!(std::mem::offset_of!(TSTemplateLiteralType, types) == 40usize); + assert!(std::mem::offset_of!(TSTemplateLiteralType, span) == 64usize); + assert!(std::mem::offset_of!(TSTemplateLiteralType, quasis) == 0usize); + assert!(std::mem::offset_of!(TSTemplateLiteralType, types) == 32usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSAsExpression, span) == 0usize); - assert!(std::mem::offset_of!(TSAsExpression, expression) == 8usize); - assert!(std::mem::offset_of!(TSAsExpression, type_annotation) == 24usize); + assert!(std::mem::offset_of!(TSAsExpression, span) == 32usize); + assert!(std::mem::offset_of!(TSAsExpression, expression) == 0usize); + assert!(std::mem::offset_of!(TSAsExpression, type_annotation) == 16usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSSatisfiesExpression, span) == 0usize); - assert!(std::mem::offset_of!(TSSatisfiesExpression, expression) == 8usize); - assert!(std::mem::offset_of!(TSSatisfiesExpression, type_annotation) == 24usize); + assert!(std::mem::offset_of!(TSSatisfiesExpression, span) == 32usize); + assert!(std::mem::offset_of!(TSSatisfiesExpression, expression) == 0usize); + assert!(std::mem::offset_of!(TSSatisfiesExpression, type_annotation) == 16usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSTypeAssertion, span) == 0usize); - assert!(std::mem::offset_of!(TSTypeAssertion, expression) == 8usize); - assert!(std::mem::offset_of!(TSTypeAssertion, type_annotation) == 24usize); + assert!(std::mem::offset_of!(TSTypeAssertion, span) == 32usize); + assert!(std::mem::offset_of!(TSTypeAssertion, expression) == 0usize); + assert!(std::mem::offset_of!(TSTypeAssertion, type_annotation) == 16usize); assert!(size_of::() == 40usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSImportEqualsDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(TSImportEqualsDeclaration, id) == 8usize); - assert!(std::mem::offset_of!(TSImportEqualsDeclaration, module_reference) == 40usize); + assert!(std::mem::offset_of!(TSImportEqualsDeclaration, span) == 48usize); + assert!(std::mem::offset_of!(TSImportEqualsDeclaration, id) == 0usize); + assert!(std::mem::offset_of!(TSImportEqualsDeclaration, module_reference) == 32usize); assert!(std::mem::offset_of!(TSImportEqualsDeclaration, import_kind) == 56usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSExternalModuleReference, span) == 0usize); - assert!(std::mem::offset_of!(TSExternalModuleReference, expression) == 8usize); + assert!(std::mem::offset_of!(TSExternalModuleReference, span) == 24usize); + assert!(std::mem::offset_of!(TSExternalModuleReference, expression) == 0usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSNonNullExpression, span) == 0usize); - assert!(std::mem::offset_of!(TSNonNullExpression, expression) == 8usize); + assert!(std::mem::offset_of!(TSNonNullExpression, span) == 16usize); + assert!(std::mem::offset_of!(TSNonNullExpression, expression) == 0usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(Decorator, span) == 0usize); - assert!(std::mem::offset_of!(Decorator, expression) == 8usize); + assert!(std::mem::offset_of!(Decorator, span) == 16usize); + assert!(std::mem::offset_of!(Decorator, expression) == 0usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSExportAssignment, span) == 0usize); - assert!(std::mem::offset_of!(TSExportAssignment, expression) == 8usize); + assert!(std::mem::offset_of!(TSExportAssignment, span) == 16usize); + assert!(std::mem::offset_of!(TSExportAssignment, expression) == 0usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSNamespaceExportDeclaration, span) == 0usize); - assert!(std::mem::offset_of!(TSNamespaceExportDeclaration, id) == 8usize); + assert!(std::mem::offset_of!(TSNamespaceExportDeclaration, span) == 24usize); + assert!(std::mem::offset_of!(TSNamespaceExportDeclaration, id) == 0usize); assert!(size_of::() == 20usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(TSInstantiationExpression, span) == 0usize); - assert!(std::mem::offset_of!(TSInstantiationExpression, expression) == 8usize); + assert!(std::mem::offset_of!(TSInstantiationExpression, span) == 16usize); + assert!(std::mem::offset_of!(TSInstantiationExpression, expression) == 0usize); assert!(std::mem::offset_of!(TSInstantiationExpression, type_parameters) == 24usize); assert!(size_of::() == 1usize); assert!(align_of::() == 1usize); assert!(size_of::() == 20usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(JSDocNullableType, span) == 0usize); - assert!(std::mem::offset_of!(JSDocNullableType, type_annotation) == 8usize); + assert!(std::mem::offset_of!(JSDocNullableType, span) == 16usize); + assert!(std::mem::offset_of!(JSDocNullableType, type_annotation) == 0usize); assert!(std::mem::offset_of!(JSDocNullableType, postfix) == 24usize); assert!(size_of::() == 20usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(JSDocNonNullableType, span) == 0usize); - assert!(std::mem::offset_of!(JSDocNonNullableType, type_annotation) == 8usize); + assert!(std::mem::offset_of!(JSDocNonNullableType, span) == 16usize); + assert!(std::mem::offset_of!(JSDocNonNullableType, type_annotation) == 0usize); assert!(std::mem::offset_of!(JSDocNonNullableType, postfix) == 24usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(std::mem::offset_of!(JSDocUnknownType, span) == 0usize); assert!(size_of::() == 32usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(JSXElement, span) == 0usize); - assert!(std::mem::offset_of!(JSXElement, opening_element) == 8usize); - assert!(std::mem::offset_of!(JSXElement, closing_element) == 16usize); - assert!(std::mem::offset_of!(JSXElement, children) == 24usize); + assert!(std::mem::offset_of!(JSXElement, span) == 32usize); + assert!(std::mem::offset_of!(JSXElement, opening_element) == 40usize); + assert!(std::mem::offset_of!(JSXElement, closing_element) == 48usize); + assert!(std::mem::offset_of!(JSXElement, children) == 0usize); assert!(size_of::() == 40usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(JSXOpeningElement, span) == 0usize); - assert!(std::mem::offset_of!(JSXOpeningElement, self_closing) == 8usize); - assert!(std::mem::offset_of!(JSXOpeningElement, name) == 16usize); - assert!(std::mem::offset_of!(JSXOpeningElement, attributes) == 32usize); - assert!(std::mem::offset_of!(JSXOpeningElement, type_parameters) == 64usize); + assert!(std::mem::offset_of!(JSXOpeningElement, span) == 48usize); + assert!(std::mem::offset_of!(JSXOpeningElement, self_closing) == 64usize); + assert!(std::mem::offset_of!(JSXOpeningElement, name) == 32usize); + assert!(std::mem::offset_of!(JSXOpeningElement, attributes) == 0usize); + assert!(std::mem::offset_of!(JSXOpeningElement, type_parameters) == 56usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(JSXClosingElement, span) == 0usize); - assert!(std::mem::offset_of!(JSXClosingElement, name) == 8usize); + assert!(std::mem::offset_of!(JSXClosingElement, span) == 16usize); + assert!(std::mem::offset_of!(JSXClosingElement, name) == 0usize); assert!(size_of::() == 40usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(JSXFragment, span) == 0usize); - assert!(std::mem::offset_of!(JSXFragment, opening_fragment) == 8usize); - assert!(std::mem::offset_of!(JSXFragment, closing_fragment) == 16usize); - assert!(std::mem::offset_of!(JSXFragment, children) == 24usize); + assert!(std::mem::offset_of!(JSXFragment, span) == 32usize); + assert!(std::mem::offset_of!(JSXFragment, opening_fragment) == 40usize); + assert!(std::mem::offset_of!(JSXFragment, closing_fragment) == 48usize); + assert!(std::mem::offset_of!(JSXFragment, children) == 0usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(std::mem::offset_of!(JSXOpeningFragment, span) == 0usize); @@ -2192,20 +2192,20 @@ const _: () = { assert!(align_of::() == 4usize); assert!(size_of::() == 40usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(JSXNamespacedName, span) == 0usize); - assert!(std::mem::offset_of!(JSXNamespacedName, namespace) == 8usize); - assert!(std::mem::offset_of!(JSXNamespacedName, property) == 32usize); + assert!(std::mem::offset_of!(JSXNamespacedName, span) == 48usize); + assert!(std::mem::offset_of!(JSXNamespacedName, namespace) == 0usize); + assert!(std::mem::offset_of!(JSXNamespacedName, property) == 24usize); assert!(size_of::() == 32usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(JSXMemberExpression, span) == 0usize); - assert!(std::mem::offset_of!(JSXMemberExpression, object) == 8usize); - assert!(std::mem::offset_of!(JSXMemberExpression, property) == 24usize); + assert!(std::mem::offset_of!(JSXMemberExpression, span) == 40usize); + assert!(std::mem::offset_of!(JSXMemberExpression, object) == 24usize); + assert!(std::mem::offset_of!(JSXMemberExpression, property) == 0usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(size_of::() == 20usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(JSXExpressionContainer, span) == 0usize); - assert!(std::mem::offset_of!(JSXExpressionContainer, expression) == 8usize); + assert!(std::mem::offset_of!(JSXExpressionContainer, span) == 16usize); + assert!(std::mem::offset_of!(JSXExpressionContainer, expression) == 0usize); assert!(size_of::() == 12usize); assert!(align_of::() == 4usize); assert!(size_of::() == 8usize); @@ -2215,31 +2215,31 @@ const _: () = { assert!(align_of::() == 4usize); assert!(size_of::() == 24usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(JSXAttribute, span) == 0usize); - assert!(std::mem::offset_of!(JSXAttribute, name) == 8usize); - assert!(std::mem::offset_of!(JSXAttribute, value) == 24usize); + assert!(std::mem::offset_of!(JSXAttribute, span) == 32usize); + assert!(std::mem::offset_of!(JSXAttribute, name) == 0usize); + assert!(std::mem::offset_of!(JSXAttribute, value) == 16usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(JSXSpreadAttribute, span) == 0usize); - assert!(std::mem::offset_of!(JSXSpreadAttribute, argument) == 8usize); + assert!(std::mem::offset_of!(JSXSpreadAttribute, span) == 16usize); + assert!(std::mem::offset_of!(JSXSpreadAttribute, argument) == 0usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(JSXIdentifier, span) == 0usize); - assert!(std::mem::offset_of!(JSXIdentifier, name) == 8usize); + assert!(std::mem::offset_of!(JSXIdentifier, span) == 16usize); + assert!(std::mem::offset_of!(JSXIdentifier, name) == 0usize); assert!(size_of::() == 8usize); assert!(align_of::() == 4usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(JSXSpreadChild, span) == 0usize); - assert!(std::mem::offset_of!(JSXSpreadChild, expression) == 8usize); + assert!(std::mem::offset_of!(JSXSpreadChild, span) == 16usize); + assert!(std::mem::offset_of!(JSXSpreadChild, expression) == 0usize); assert!(size_of::() == 16usize); assert!(align_of::() == 4usize); - assert!(std::mem::offset_of!(JSXText, span) == 0usize); - assert!(std::mem::offset_of!(JSXText, value) == 8usize); + assert!(std::mem::offset_of!(JSXText, span) == 16usize); + assert!(std::mem::offset_of!(JSXText, value) == 0usize); }; #[cfg(not(any(target_pointer_width = "64", target_pointer_width = "32")))] const _: () = panic!("Platforms with pointer width other than 64 or 32 bit are not supported"); diff --git a/crates/oxc_ast/src/generated/assert_repr_rust_layout.rs b/crates/oxc_ast/src/generated/assert_repr_rust_layout.rs new file mode 100644 index 0000000000000..7f0c8c5dd3676 --- /dev/null +++ b/crates/oxc_ast/src/generated/assert_repr_rust_layout.rs @@ -0,0 +1,1899 @@ +use crate::ast::*; +macro_rules! wrap { + ($($tt:tt)*) => { + // NOTE: disabled! + // $($tt)* + }; +} +const _: () = { + { + assert!(size_of::() == 12usize); + assert!(align_of::() == 4usize); + wrap!( + assert!(std::mem::offset_of!(BooleanLiteral, span) == 0usize); + assert!(std::mem::offset_of!(BooleanLiteral, value) == 8usize); + ); + } + { + assert!(size_of::() == 8usize); + assert!(align_of::() == 4usize); + wrap!(assert!(std::mem::offset_of!(NullLiteral, span) == 0usize);); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(NumericLiteral < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(NumericLiteral < 'static >, value) == 24usize); + assert!(std::mem::offset_of!(NumericLiteral < 'static >, raw) == 0usize); + assert!(std::mem::offset_of!(NumericLiteral < 'static >, base) == 32usize); + ); + } + { + assert!(size_of::>() == 32usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(BigIntLiteral < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(BigIntLiteral < 'static >, raw) == 0usize); + assert!(std::mem::offset_of!(BigIntLiteral < 'static >, base) == 24usize); + ); + } + { + assert!(size_of::>() == 32usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(RegExpLiteral < 'static >, span) == 24usize); + assert!(std::mem::offset_of!(RegExpLiteral < 'static >, value) == 32usize); + assert!(std::mem::offset_of!(RegExpLiteral < 'static >, regex) == 0usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(RegExp < 'static >, pattern) == 0usize); + assert!(std::mem::offset_of!(RegExp < 'static >, flags) == 16usize); + ); + } + { + assert!(size_of::() == 0usize); + assert!(align_of::() == 1usize); + wrap!(); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(StringLiteral < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(StringLiteral < 'static >, value) == 0usize); + ); + } + { + assert!(size_of::>() == 104usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(Program < 'static >, span) == 64usize); + assert!(std::mem::offset_of!(Program < 'static >, source_type) == 100usize); + assert!(std::mem::offset_of!(Program < 'static >, hashbang) == 72usize); + assert!(std::mem::offset_of!(Program < 'static >, directives) == 0usize); + assert!(std::mem::offset_of!(Program < 'static >, body) == 32usize); + assert!(std::mem::offset_of!(Program < 'static >, scope_id) == 96usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(IdentifierName < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(IdentifierName < 'static >, name) == 0usize); + ); + } + { + assert!(size_of::>() == 32usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(IdentifierReference < 'static >, span) == + 16usize); assert!(std::mem::offset_of!(IdentifierReference < 'static >, name) + == 0usize); assert!(std::mem::offset_of!(IdentifierReference < 'static >, + reference_id) == 24usize); assert!(std::mem::offset_of!(IdentifierReference < + 'static >, reference_flag) == 28usize); + ); + } + { + assert!(size_of::>() == 32usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(BindingIdentifier < 'static >, span) == + 16usize); assert!(std::mem::offset_of!(BindingIdentifier < 'static >, name) + == 0usize); assert!(std::mem::offset_of!(BindingIdentifier < 'static >, + symbol_id) == 24usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(LabelIdentifier < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(LabelIdentifier < 'static >, name) == 0usize); + ); + } + { + assert!(size_of::() == 8usize); + assert!(align_of::() == 4usize); + wrap!(assert!(std::mem::offset_of!(ThisExpression, span) == 0usize);); + } + { + assert!(size_of::>() == 56usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ArrayExpression < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(ArrayExpression < 'static >, elements) == + 0usize); assert!(std::mem::offset_of!(ArrayExpression < 'static >, + trailing_comma) == 40usize); + ); + } + { + assert!(size_of::() == 8usize); + assert!(align_of::() == 4usize); + wrap!(assert!(std::mem::offset_of!(Elision, span) == 0usize);); + } + { + assert!(size_of::>() == 56usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ObjectExpression < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(ObjectExpression < 'static >, properties) == + 0usize); assert!(std::mem::offset_of!(ObjectExpression < 'static >, + trailing_comma) == 40usize); + ); + } + { + assert!(size_of::>() == 64usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ObjectProperty < 'static >, span) == 48usize); + assert!(std::mem::offset_of!(ObjectProperty < 'static >, kind) == 56usize); + assert!(std::mem::offset_of!(ObjectProperty < 'static >, key) == 0usize); + assert!(std::mem::offset_of!(ObjectProperty < 'static >, value) == 32usize); + assert!(std::mem::offset_of!(ObjectProperty < 'static >, init) == 16usize); + assert!(std::mem::offset_of!(ObjectProperty < 'static >, method) == 57usize); + assert!(std::mem::offset_of!(ObjectProperty < 'static >, shorthand) == + 58usize); assert!(std::mem::offset_of!(ObjectProperty < 'static >, computed) + == 59usize); + ); + } + { + assert!(size_of::>() == 72usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TemplateLiteral < 'static >, span) == 64usize); + assert!(std::mem::offset_of!(TemplateLiteral < 'static >, quasis) == 0usize); + assert!(std::mem::offset_of!(TemplateLiteral < 'static >, expressions) == + 32usize); + ); + } + { + assert!(size_of::>() == 104usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TaggedTemplateExpression < 'static >, span) == + 88usize); assert!(std::mem::offset_of!(TaggedTemplateExpression < 'static >, + tag) == 0usize); assert!(std::mem::offset_of!(TaggedTemplateExpression < + 'static >, quasi) == 16usize); + assert!(std::mem::offset_of!(TaggedTemplateExpression < 'static >, + type_parameters) == 96usize); + ); + } + { + assert!(size_of::>() == 48usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TemplateElement < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(TemplateElement < 'static >, tail) == 40usize); + assert!(std::mem::offset_of!(TemplateElement < 'static >, value) == 0usize); + ); + } + { + assert!(size_of::>() == 32usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TemplateElementValue < 'static >, raw) == + 0usize); assert!(std::mem::offset_of!(TemplateElementValue < 'static >, + cooked) == 16usize); + ); + } + { + assert!(size_of::>() == 48usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ComputedMemberExpression < 'static >, span) == + 32usize); assert!(std::mem::offset_of!(ComputedMemberExpression < 'static >, + object) == 0usize); assert!(std::mem::offset_of!(ComputedMemberExpression < + 'static >, expression) == 16usize); + assert!(std::mem::offset_of!(ComputedMemberExpression < 'static >, optional) + == 40usize); + ); + } + { + assert!(size_of::>() == 56usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(StaticMemberExpression < 'static >, span) == + 40usize); assert!(std::mem::offset_of!(StaticMemberExpression < 'static >, + object) == 0usize); assert!(std::mem::offset_of!(StaticMemberExpression < + 'static >, property) == 16usize); + assert!(std::mem::offset_of!(StaticMemberExpression < 'static >, optional) == + 48usize); + ); + } + { + assert!(size_of::>() == 56usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(PrivateFieldExpression < 'static >, span) == + 40usize); assert!(std::mem::offset_of!(PrivateFieldExpression < 'static >, + object) == 0usize); assert!(std::mem::offset_of!(PrivateFieldExpression < + 'static >, field) == 16usize); + assert!(std::mem::offset_of!(PrivateFieldExpression < 'static >, optional) == + 48usize); + ); + } + { + assert!(size_of::>() == 72usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(CallExpression < 'static >, span) == 48usize); + assert!(std::mem::offset_of!(CallExpression < 'static >, arguments) == + 16usize); assert!(std::mem::offset_of!(CallExpression < 'static >, callee) == + 0usize); assert!(std::mem::offset_of!(CallExpression < 'static >, + type_parameters) == 56usize); assert!(std::mem::offset_of!(CallExpression < + 'static >, optional) == 64usize); + ); + } + { + assert!(size_of::>() == 64usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(NewExpression < 'static >, span) == 48usize); + assert!(std::mem::offset_of!(NewExpression < 'static >, callee) == 0usize); + assert!(std::mem::offset_of!(NewExpression < 'static >, arguments) == + 16usize); assert!(std::mem::offset_of!(NewExpression < 'static >, + type_parameters) == 56usize); + ); + } + { + assert!(size_of::>() == 56usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(MetaProperty < 'static >, span) == 48usize); + assert!(std::mem::offset_of!(MetaProperty < 'static >, meta) == 0usize); + assert!(std::mem::offset_of!(MetaProperty < 'static >, property) == 24usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(SpreadElement < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(SpreadElement < 'static >, argument) == 0usize); + ); + } + { + assert!(size_of::>() == 32usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(UpdateExpression < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(UpdateExpression < 'static >, operator) == + 24usize); assert!(std::mem::offset_of!(UpdateExpression < 'static >, prefix) + == 25usize); assert!(std::mem::offset_of!(UpdateExpression < 'static >, + argument) == 0usize); + ); + } + { + assert!(size_of::>() == 32usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(UnaryExpression < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(UnaryExpression < 'static >, operator) == + 24usize); assert!(std::mem::offset_of!(UnaryExpression < 'static >, argument) + == 0usize); + ); + } + { + assert!(size_of::>() == 48usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(BinaryExpression < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(BinaryExpression < 'static >, left) == 0usize); + assert!(std::mem::offset_of!(BinaryExpression < 'static >, operator) == + 40usize); assert!(std::mem::offset_of!(BinaryExpression < 'static >, right) + == 16usize); + ); + } + { + assert!(size_of::>() == 56usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(PrivateInExpression < 'static >, span) == + 40usize); assert!(std::mem::offset_of!(PrivateInExpression < 'static >, left) + == 16usize); assert!(std::mem::offset_of!(PrivateInExpression < 'static >, + operator) == 48usize); assert!(std::mem::offset_of!(PrivateInExpression < + 'static >, right) == 0usize); + ); + } + { + assert!(size_of::>() == 48usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(LogicalExpression < 'static >, span) == + 32usize); assert!(std::mem::offset_of!(LogicalExpression < 'static >, left) + == 0usize); assert!(std::mem::offset_of!(LogicalExpression < 'static >, + operator) == 40usize); assert!(std::mem::offset_of!(LogicalExpression < + 'static >, right) == 16usize); + ); + } + { + assert!(size_of::>() == 56usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ConditionalExpression < 'static >, span) == + 48usize); assert!(std::mem::offset_of!(ConditionalExpression < 'static >, + test) == 0usize); assert!(std::mem::offset_of!(ConditionalExpression < + 'static >, consequent) == 16usize); + assert!(std::mem::offset_of!(ConditionalExpression < 'static >, alternate) == + 32usize); + ); + } + { + assert!(size_of::>() == 48usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(AssignmentExpression < 'static >, span) == + 32usize); assert!(std::mem::offset_of!(AssignmentExpression < 'static >, + operator) == 40usize); assert!(std::mem::offset_of!(AssignmentExpression < + 'static >, left) == 0usize); + assert!(std::mem::offset_of!(AssignmentExpression < 'static >, right) == + 16usize); + ); + } + { + assert!(size_of::>() == 80usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ArrayAssignmentTarget < 'static >, span) == + 56usize); assert!(std::mem::offset_of!(ArrayAssignmentTarget < 'static >, + elements) == 24usize); assert!(std::mem::offset_of!(ArrayAssignmentTarget < + 'static >, rest) == 0usize); + assert!(std::mem::offset_of!(ArrayAssignmentTarget < 'static >, + trailing_comma) == 64usize); + ); + } + { + assert!(size_of::>() == 64usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ObjectAssignmentTarget < 'static >, span) == + 56usize); assert!(std::mem::offset_of!(ObjectAssignmentTarget < 'static >, + properties) == 24usize); assert!(std::mem::offset_of!(ObjectAssignmentTarget + < 'static >, rest) == 0usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(AssignmentTargetRest < 'static >, span) == + 16usize); assert!(std::mem::offset_of!(AssignmentTargetRest < 'static >, + target) == 0usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(AssignmentTargetWithDefault < 'static >, span) + == 32usize); assert!(std::mem::offset_of!(AssignmentTargetWithDefault < + 'static >, binding) == 0usize); + assert!(std::mem::offset_of!(AssignmentTargetWithDefault < 'static >, init) + == 16usize); + ); + } + { + assert!(size_of::>() == 56usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(AssignmentTargetPropertyIdentifier < 'static >, + span) == 48usize); + assert!(std::mem::offset_of!(AssignmentTargetPropertyIdentifier < 'static >, + binding) == 16usize); + assert!(std::mem::offset_of!(AssignmentTargetPropertyIdentifier < 'static >, + init) == 0usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(AssignmentTargetPropertyProperty < 'static >, + span) == 32usize); + assert!(std::mem::offset_of!(AssignmentTargetPropertyProperty < 'static >, + name) == 16usize); + assert!(std::mem::offset_of!(AssignmentTargetPropertyProperty < 'static >, + binding) == 0usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(SequenceExpression < 'static >, span) == + 32usize); assert!(std::mem::offset_of!(SequenceExpression < 'static >, + expressions) == 0usize); + ); + } + { + assert!(size_of::() == 8usize); + assert!(align_of::() == 4usize); + wrap!(assert!(std::mem::offset_of!(Super, span) == 0usize);); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(AwaitExpression < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(AwaitExpression < 'static >, argument) == + 0usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ChainExpression < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(ChainExpression < 'static >, expression) == + 0usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ParenthesizedExpression < 'static >, span) == + 16usize); assert!(std::mem::offset_of!(ParenthesizedExpression < 'static >, + expression) == 0usize); + ); + } + { + assert!(size_of::>() == 48usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(Directive < 'static >, span) == 40usize); + assert!(std::mem::offset_of!(Directive < 'static >, expression) == 0usize); + assert!(std::mem::offset_of!(Directive < 'static >, directive) == 24usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(Hashbang < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(Hashbang < 'static >, value) == 0usize); + ); + } + { + assert!(size_of::>() == 48usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(BlockStatement < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(BlockStatement < 'static >, body) == 0usize); + assert!(std::mem::offset_of!(BlockStatement < 'static >, scope_id) == + 40usize); + ); + } + { + assert!(size_of::>() == 48usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(VariableDeclaration < 'static >, span) == + 32usize); assert!(std::mem::offset_of!(VariableDeclaration < 'static >, kind) + == 40usize); assert!(std::mem::offset_of!(VariableDeclaration < 'static >, + declarations) == 0usize); assert!(std::mem::offset_of!(VariableDeclaration < + 'static >, declare) == 41usize); + ); + } + { + assert!(size_of::>() == 64usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(VariableDeclarator < 'static >, span) == + 16usize); assert!(std::mem::offset_of!(VariableDeclarator < 'static >, kind) + == 56usize); assert!(std::mem::offset_of!(VariableDeclarator < 'static >, id) + == 24usize); assert!(std::mem::offset_of!(VariableDeclarator < 'static >, + init) == 0usize); assert!(std::mem::offset_of!(VariableDeclarator < 'static + >, definite) == 57usize); + ); + } + { + assert!(size_of::>() == 48usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(UsingDeclaration < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(UsingDeclaration < 'static >, is_await) == + 40usize); assert!(std::mem::offset_of!(UsingDeclaration < 'static >, + declarations) == 0usize); + ); + } + { + assert!(size_of::() == 8usize); + assert!(align_of::() == 4usize); + wrap!(assert!(std::mem::offset_of!(EmptyStatement, span) == 0usize);); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ExpressionStatement < 'static >, span) == + 16usize); assert!(std::mem::offset_of!(ExpressionStatement < 'static >, + expression) == 0usize); + ); + } + { + assert!(size_of::>() == 56usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(IfStatement < 'static >, span) == 48usize); + assert!(std::mem::offset_of!(IfStatement < 'static >, test) == 0usize); + assert!(std::mem::offset_of!(IfStatement < 'static >, consequent) == + 16usize); assert!(std::mem::offset_of!(IfStatement < 'static >, alternate) == + 32usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(DoWhileStatement < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(DoWhileStatement < 'static >, body) == 16usize); + assert!(std::mem::offset_of!(DoWhileStatement < 'static >, test) == 0usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(WhileStatement < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(WhileStatement < 'static >, test) == 0usize); + assert!(std::mem::offset_of!(WhileStatement < 'static >, body) == 16usize); + ); + } + { + assert!(size_of::>() == 80usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ForStatement < 'static >, span) == 64usize); + assert!(std::mem::offset_of!(ForStatement < 'static >, init) == 32usize); + assert!(std::mem::offset_of!(ForStatement < 'static >, test) == 0usize); + assert!(std::mem::offset_of!(ForStatement < 'static >, update) == 16usize); + assert!(std::mem::offset_of!(ForStatement < 'static >, body) == 48usize); + assert!(std::mem::offset_of!(ForStatement < 'static >, scope_id) == 72usize); + ); + } + { + assert!(size_of::>() == 64usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ForInStatement < 'static >, span) == 48usize); + assert!(std::mem::offset_of!(ForInStatement < 'static >, left) == 0usize); + assert!(std::mem::offset_of!(ForInStatement < 'static >, right) == 16usize); + assert!(std::mem::offset_of!(ForInStatement < 'static >, body) == 32usize); + assert!(std::mem::offset_of!(ForInStatement < 'static >, scope_id) == + 56usize); + ); + } + { + assert!(size_of::>() == 64usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ForOfStatement < 'static >, span) == 48usize); + assert!(std::mem::offset_of!(ForOfStatement < 'static >, r#await) == + 60usize); assert!(std::mem::offset_of!(ForOfStatement < 'static >, left) == + 0usize); assert!(std::mem::offset_of!(ForOfStatement < 'static >, right) == + 16usize); assert!(std::mem::offset_of!(ForOfStatement < 'static >, body) == + 32usize); assert!(std::mem::offset_of!(ForOfStatement < 'static >, scope_id) + == 56usize); + ); + } + { + assert!(size_of::>() == 32usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ContinueStatement < 'static >, span) == 0usize); + assert!(std::mem::offset_of!(ContinueStatement < 'static >, label) == + 8usize); + ); + } + { + assert!(size_of::>() == 32usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(BreakStatement < 'static >, span) == 0usize); + assert!(std::mem::offset_of!(BreakStatement < 'static >, label) == 8usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ReturnStatement < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(ReturnStatement < 'static >, argument) == + 0usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(WithStatement < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(WithStatement < 'static >, object) == 0usize); + assert!(std::mem::offset_of!(WithStatement < 'static >, body) == 16usize); + ); + } + { + assert!(size_of::>() == 64usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(SwitchStatement < 'static >, span) == 48usize); + assert!(std::mem::offset_of!(SwitchStatement < 'static >, discriminant) == + 0usize); assert!(std::mem::offset_of!(SwitchStatement < 'static >, cases) == + 16usize); assert!(std::mem::offset_of!(SwitchStatement < 'static >, scope_id) + == 56usize); + ); + } + { + assert!(size_of::>() == 56usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(SwitchCase < 'static >, span) == 48usize); + assert!(std::mem::offset_of!(SwitchCase < 'static >, test) == 0usize); + assert!(std::mem::offset_of!(SwitchCase < 'static >, consequent) == 16usize); + ); + } + { + assert!(size_of::>() == 48usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(LabeledStatement < 'static >, span) == 40usize); + assert!(std::mem::offset_of!(LabeledStatement < 'static >, label) == + 16usize); assert!(std::mem::offset_of!(LabeledStatement < 'static >, body) == + 0usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ThrowStatement < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(ThrowStatement < 'static >, argument) == + 0usize); + ); + } + { + assert!(size_of::>() == 32usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TryStatement < 'static >, span) == 8usize); + assert!(std::mem::offset_of!(TryStatement < 'static >, block) == 0usize); + assert!(std::mem::offset_of!(TryStatement < 'static >, handler) == 16usize); + assert!(std::mem::offset_of!(TryStatement < 'static >, finalizer) == + 24usize); + ); + } + { + assert!(size_of::>() == 64usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(CatchClause < 'static >, span) == 0usize); + assert!(std::mem::offset_of!(CatchClause < 'static >, param) == 16usize); + assert!(std::mem::offset_of!(CatchClause < 'static >, body) == 8usize); + assert!(std::mem::offset_of!(CatchClause < 'static >, scope_id) == 56usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(CatchParameter < 'static >, span) == 0usize); + assert!(std::mem::offset_of!(CatchParameter < 'static >, pattern) == 8usize); + ); + } + { + assert!(size_of::() == 8usize); + assert!(align_of::() == 4usize); + wrap!(assert!(std::mem::offset_of!(DebuggerStatement, span) == 0usize);); + } + { + assert!(size_of::>() == 32usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(BindingPattern < 'static >, kind) == 0usize); + assert!(std::mem::offset_of!(BindingPattern < 'static >, type_annotation) == + 16usize); assert!(std::mem::offset_of!(BindingPattern < 'static >, optional) + == 24usize); + ); + } + { + assert!(size_of::>() == 56usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(AssignmentPattern < 'static >, span) == + 16usize); assert!(std::mem::offset_of!(AssignmentPattern < 'static >, left) + == 24usize); assert!(std::mem::offset_of!(AssignmentPattern < 'static >, + right) == 0usize); + ); + } + { + assert!(size_of::>() == 48usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ObjectPattern < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(ObjectPattern < 'static >, properties) == + 0usize); assert!(std::mem::offset_of!(ObjectPattern < 'static >, rest) == + 40usize); + ); + } + { + assert!(size_of::>() == 64usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(BindingProperty < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(BindingProperty < 'static >, key) == 0usize); + assert!(std::mem::offset_of!(BindingProperty < 'static >, value) == 24usize); + assert!(std::mem::offset_of!(BindingProperty < 'static >, shorthand) == + 56usize); assert!(std::mem::offset_of!(BindingProperty < 'static >, computed) + == 57usize); + ); + } + { + assert!(size_of::>() == 48usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ArrayPattern < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(ArrayPattern < 'static >, elements) == 0usize); + assert!(std::mem::offset_of!(ArrayPattern < 'static >, rest) == 40usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(BindingRestElement < 'static >, span) == + 0usize); assert!(std::mem::offset_of!(BindingRestElement < 'static >, + argument) == 8usize); + ); + } + { + assert!(size_of::>() == 120usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(Function < 'static >, r#type) == 116usize); + assert!(std::mem::offset_of!(Function < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(Function < 'static >, id) == 0usize); + assert!(std::mem::offset_of!(Function < 'static >, generator) == 117usize); + assert!(std::mem::offset_of!(Function < 'static >, r#async) == 118usize); + assert!(std::mem::offset_of!(Function < 'static >, declare) == 119usize); + assert!(std::mem::offset_of!(Function < 'static >, type_parameters) == + 40usize); assert!(std::mem::offset_of!(Function < 'static >, this_param) == + 48usize); assert!(std::mem::offset_of!(Function < 'static >, params) == + 104usize); assert!(std::mem::offset_of!(Function < 'static >, return_type) == + 88usize); assert!(std::mem::offset_of!(Function < 'static >, body) == + 96usize); assert!(std::mem::offset_of!(Function < 'static >, scope_id) == + 112usize); + ); + } + { + assert!(size_of::>() == 56usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(FormalParameters < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(FormalParameters < 'static >, kind) == 48usize); + assert!(std::mem::offset_of!(FormalParameters < 'static >, items) == 0usize); + assert!(std::mem::offset_of!(FormalParameters < 'static >, rest) == 40usize); + ); + } + { + assert!(size_of::>() == 80usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(FormalParameter < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(FormalParameter < 'static >, decorators) == + 0usize); assert!(std::mem::offset_of!(FormalParameter < 'static >, pattern) + == 40usize); assert!(std::mem::offset_of!(FormalParameter < 'static >, + accessibility) == 72usize); assert!(std::mem::offset_of!(FormalParameter < + 'static >, readonly) == 73usize); + assert!(std::mem::offset_of!(FormalParameter < 'static >, r#override) == + 74usize); + ); + } + { + assert!(size_of::>() == 72usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(FunctionBody < 'static >, span) == 64usize); + assert!(std::mem::offset_of!(FunctionBody < 'static >, directives) == + 0usize); assert!(std::mem::offset_of!(FunctionBody < 'static >, statements) + == 32usize); + ); + } + { + assert!(size_of::>() == 48usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ArrowFunctionExpression < 'static >, span) == + 0usize); assert!(std::mem::offset_of!(ArrowFunctionExpression < 'static >, + expression) == 44usize); assert!(std::mem::offset_of!(ArrowFunctionExpression + < 'static >, r#async) == 45usize); + assert!(std::mem::offset_of!(ArrowFunctionExpression < 'static >, + type_parameters) == 8usize); + assert!(std::mem::offset_of!(ArrowFunctionExpression < 'static >, params) == + 24usize); assert!(std::mem::offset_of!(ArrowFunctionExpression < 'static >, + return_type) == 16usize); + assert!(std::mem::offset_of!(ArrowFunctionExpression < 'static >, body) == + 32usize); assert!(std::mem::offset_of!(ArrowFunctionExpression < 'static >, + scope_id) == 40usize); + ); + } + { + assert!(size_of::>() == 32usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(YieldExpression < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(YieldExpression < 'static >, delegate) == + 24usize); assert!(std::mem::offset_of!(YieldExpression < 'static >, argument) + == 0usize); + ); + } + { + assert!(size_of::>() == 152usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(Class < 'static >, r#type) == 148usize); + assert!(std::mem::offset_of!(Class < 'static >, span) == 112usize); + assert!(std::mem::offset_of!(Class < 'static >, decorators) == 64usize); + assert!(std::mem::offset_of!(Class < 'static >, id) == 0usize); + assert!(std::mem::offset_of!(Class < 'static >, type_parameters) == + 120usize); assert!(std::mem::offset_of!(Class < 'static >, super_class) == + 96usize); assert!(std::mem::offset_of!(Class < 'static >, + super_type_parameters) == 128usize); assert!(std::mem::offset_of!(Class < + 'static >, implements) == 32usize); assert!(std::mem::offset_of!(Class < + 'static >, body) == 136usize); assert!(std::mem::offset_of!(Class < 'static + >, r#abstract) == 149usize); assert!(std::mem::offset_of!(Class < 'static >, + declare) == 150usize); assert!(std::mem::offset_of!(Class < 'static >, + scope_id) == 144usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ClassBody < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(ClassBody < 'static >, body) == 0usize); + ); + } + { + assert!(size_of::>() == 72usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(MethodDefinition < 'static >, r#type) == + 66usize); assert!(std::mem::offset_of!(MethodDefinition < 'static >, span) == + 48usize); assert!(std::mem::offset_of!(MethodDefinition < 'static >, + decorators) == 0usize); assert!(std::mem::offset_of!(MethodDefinition < + 'static >, key) == 32usize); assert!(std::mem::offset_of!(MethodDefinition < + 'static >, value) == 56usize); assert!(std::mem::offset_of!(MethodDefinition + < 'static >, kind) == 64usize); assert!(std::mem::offset_of!(MethodDefinition + < 'static >, computed) == 67usize); + assert!(std::mem::offset_of!(MethodDefinition < 'static >, r#static) == + 68usize); assert!(std::mem::offset_of!(MethodDefinition < 'static >, + r#override) == 69usize); assert!(std::mem::offset_of!(MethodDefinition < + 'static >, optional) == 70usize); + assert!(std::mem::offset_of!(MethodDefinition < 'static >, accessibility) == + 65usize); + ); + } + { + assert!(size_of::>() == 96usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(PropertyDefinition < 'static >, r#type) == + 81usize); assert!(std::mem::offset_of!(PropertyDefinition < 'static >, span) + == 64usize); assert!(std::mem::offset_of!(PropertyDefinition < 'static >, + decorators) == 0usize); assert!(std::mem::offset_of!(PropertyDefinition < + 'static >, key) == 32usize); assert!(std::mem::offset_of!(PropertyDefinition + < 'static >, value) == 48usize); + assert!(std::mem::offset_of!(PropertyDefinition < 'static >, computed) == + 82usize); assert!(std::mem::offset_of!(PropertyDefinition < 'static >, + r#static) == 83usize); assert!(std::mem::offset_of!(PropertyDefinition < + 'static >, declare) == 84usize); + assert!(std::mem::offset_of!(PropertyDefinition < 'static >, r#override) == + 85usize); assert!(std::mem::offset_of!(PropertyDefinition < 'static >, + optional) == 86usize); assert!(std::mem::offset_of!(PropertyDefinition < + 'static >, definite) == 87usize); + assert!(std::mem::offset_of!(PropertyDefinition < 'static >, readonly) == + 88usize); assert!(std::mem::offset_of!(PropertyDefinition < 'static >, + type_annotation) == 72usize); assert!(std::mem::offset_of!(PropertyDefinition + < 'static >, accessibility) == 80usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(PrivateIdentifier < 'static >, span) == + 16usize); assert!(std::mem::offset_of!(PrivateIdentifier < 'static >, name) + == 0usize); + ); + } + { + assert!(size_of::>() == 48usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(StaticBlock < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(StaticBlock < 'static >, body) == 0usize); + assert!(std::mem::offset_of!(StaticBlock < 'static >, scope_id) == 40usize); + ); + } + { + assert!(size_of::>() == 80usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(AccessorProperty < 'static >, r#type) == + 72usize); assert!(std::mem::offset_of!(AccessorProperty < 'static >, span) == + 64usize); assert!(std::mem::offset_of!(AccessorProperty < 'static >, + decorators) == 0usize); assert!(std::mem::offset_of!(AccessorProperty < + 'static >, key) == 32usize); assert!(std::mem::offset_of!(AccessorProperty < + 'static >, value) == 48usize); assert!(std::mem::offset_of!(AccessorProperty + < 'static >, computed) == 73usize); + assert!(std::mem::offset_of!(AccessorProperty < 'static >, r#static) == + 74usize); + ); + } + { + assert!(size_of::>() == 56usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ImportExpression < 'static >, span) == 48usize); + assert!(std::mem::offset_of!(ImportExpression < 'static >, source) == + 0usize); assert!(std::mem::offset_of!(ImportExpression < 'static >, + arguments) == 16usize); + ); + } + { + assert!(size_of::>() == 136usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ImportDeclaration < 'static >, span) == + 24usize); assert!(std::mem::offset_of!(ImportDeclaration < 'static >, + specifiers) == 32usize); assert!(std::mem::offset_of!(ImportDeclaration < + 'static >, source) == 0usize); assert!(std::mem::offset_of!(ImportDeclaration + < 'static >, with_clause) == 64usize); + assert!(std::mem::offset_of!(ImportDeclaration < 'static >, import_kind) == + 128usize); + ); + } + { + assert!(size_of::>() == 88usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ImportSpecifier < 'static >, span) == 72usize); + assert!(std::mem::offset_of!(ImportSpecifier < 'static >, imported) == + 0usize); assert!(std::mem::offset_of!(ImportSpecifier < 'static >, local) == + 40usize); assert!(std::mem::offset_of!(ImportSpecifier < 'static >, + import_kind) == 80usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ImportDefaultSpecifier < 'static >, span) == + 32usize); assert!(std::mem::offset_of!(ImportDefaultSpecifier < 'static >, + local) == 0usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ImportNamespaceSpecifier < 'static >, span) == + 32usize); assert!(std::mem::offset_of!(ImportNamespaceSpecifier < 'static >, + local) == 0usize); + ); + } + { + assert!(size_of::>() == 64usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(WithClause < 'static >, span) == 56usize); + assert!(std::mem::offset_of!(WithClause < 'static >, attributes_keyword) == + 0usize); assert!(std::mem::offset_of!(WithClause < 'static >, with_entries) + == 24usize); + ); + } + { + assert!(size_of::>() == 64usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ImportAttribute < 'static >, span) == 56usize); + assert!(std::mem::offset_of!(ImportAttribute < 'static >, key) == 0usize); + assert!(std::mem::offset_of!(ImportAttribute < 'static >, value) == 32usize); + ); + } + { + assert!(size_of::>() == 152usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ExportNamedDeclaration < 'static >, span) == + 48usize); assert!(std::mem::offset_of!(ExportNamedDeclaration < 'static >, + declaration) == 0usize); assert!(std::mem::offset_of!(ExportNamedDeclaration + < 'static >, specifiers) == 16usize); + assert!(std::mem::offset_of!(ExportNamedDeclaration < 'static >, source) == + 56usize); assert!(std::mem::offset_of!(ExportNamedDeclaration < 'static >, + export_kind) == 144usize); + assert!(std::mem::offset_of!(ExportNamedDeclaration < 'static >, with_clause) + == 80usize); + ); + } + { + assert!(size_of::>() == 64usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ExportDefaultDeclaration < 'static >, span) == + 56usize); assert!(std::mem::offset_of!(ExportDefaultDeclaration < 'static >, + declaration) == 40usize); + assert!(std::mem::offset_of!(ExportDefaultDeclaration < 'static >, exported) + == 0usize); + ); + } + { + assert!(size_of::>() == 144usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ExportAllDeclaration < 'static >, span) == + 64usize); assert!(std::mem::offset_of!(ExportAllDeclaration < 'static >, + exported) == 0usize); assert!(std::mem::offset_of!(ExportAllDeclaration < + 'static >, source) == 40usize); + assert!(std::mem::offset_of!(ExportAllDeclaration < 'static >, with_clause) + == 72usize); assert!(std::mem::offset_of!(ExportAllDeclaration < 'static >, + export_kind) == 136usize); + ); + } + { + assert!(size_of::>() == 96usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(ExportSpecifier < 'static >, span) == 80usize); + assert!(std::mem::offset_of!(ExportSpecifier < 'static >, local) == 0usize); + assert!(std::mem::offset_of!(ExportSpecifier < 'static >, exported) == + 40usize); assert!(std::mem::offset_of!(ExportSpecifier < 'static >, + export_kind) == 88usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSThisParameter < 'static >, span) == 24usize); + assert!(std::mem::offset_of!(TSThisParameter < 'static >, this) == 0usize); + assert!(std::mem::offset_of!(TSThisParameter < 'static >, type_annotation) == + 32usize); + ); + } + { + assert!(size_of::>() == 80usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSEnumDeclaration < 'static >, span) == + 64usize); assert!(std::mem::offset_of!(TSEnumDeclaration < 'static >, id) == + 0usize); assert!(std::mem::offset_of!(TSEnumDeclaration < 'static >, members) + == 32usize); assert!(std::mem::offset_of!(TSEnumDeclaration < 'static >, + r#const) == 76usize); assert!(std::mem::offset_of!(TSEnumDeclaration < + 'static >, declare) == 77usize); + assert!(std::mem::offset_of!(TSEnumDeclaration < 'static >, scope_id) == + 72usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSEnumMember < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(TSEnumMember < 'static >, id) == 16usize); + assert!(std::mem::offset_of!(TSEnumMember < 'static >, initializer) == + 0usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSTypeAnnotation < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(TSTypeAnnotation < 'static >, type_annotation) + == 0usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSLiteralType < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(TSLiteralType < 'static >, literal) == 0usize); + ); + } + { + assert!(size_of::>() == 80usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSConditionalType < 'static >, span) == + 64usize); assert!(std::mem::offset_of!(TSConditionalType < 'static >, + check_type) == 0usize); assert!(std::mem::offset_of!(TSConditionalType < + 'static >, extends_type) == 16usize); + assert!(std::mem::offset_of!(TSConditionalType < 'static >, true_type) == + 32usize); assert!(std::mem::offset_of!(TSConditionalType < 'static >, + false_type) == 48usize); assert!(std::mem::offset_of!(TSConditionalType < + 'static >, scope_id) == 72usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSUnionType < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(TSUnionType < 'static >, types) == 0usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSIntersectionType < 'static >, span) == + 32usize); assert!(std::mem::offset_of!(TSIntersectionType < 'static >, types) + == 0usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSParenthesizedType < 'static >, span) == + 16usize); assert!(std::mem::offset_of!(TSParenthesizedType < 'static >, + type_annotation) == 0usize); + ); + } + { + assert!(size_of::>() == 32usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSTypeOperator < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(TSTypeOperator < 'static >, operator) == + 24usize); assert!(std::mem::offset_of!(TSTypeOperator < 'static >, + type_annotation) == 0usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSArrayType < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(TSArrayType < 'static >, element_type) == + 0usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSIndexedAccessType < 'static >, span) == + 32usize); assert!(std::mem::offset_of!(TSIndexedAccessType < 'static >, + object_type) == 0usize); assert!(std::mem::offset_of!(TSIndexedAccessType < + 'static >, index_type) == 16usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSTupleType < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(TSTupleType < 'static >, element_types) == + 0usize); + ); + } + { + assert!(size_of::>() == 56usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSNamedTupleMember < 'static >, span) == + 40usize); assert!(std::mem::offset_of!(TSNamedTupleMember < 'static >, + element_type) == 0usize); assert!(std::mem::offset_of!(TSNamedTupleMember < + 'static >, label) == 16usize); + assert!(std::mem::offset_of!(TSNamedTupleMember < 'static >, optional) == + 48usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSOptionalType < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(TSOptionalType < 'static >, type_annotation) == + 0usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSRestType < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(TSRestType < 'static >, type_annotation) == + 0usize); + ); + } + { + assert!(size_of::() == 8usize); + assert!(align_of::() == 4usize); + wrap!(assert!(std::mem::offset_of!(TSAnyKeyword, span) == 0usize);); + } + { + assert!(size_of::() == 8usize); + assert!(align_of::() == 4usize); + wrap!(assert!(std::mem::offset_of!(TSStringKeyword, span) == 0usize);); + } + { + assert!(size_of::() == 8usize); + assert!(align_of::() == 4usize); + wrap!(assert!(std::mem::offset_of!(TSBooleanKeyword, span) == 0usize);); + } + { + assert!(size_of::() == 8usize); + assert!(align_of::() == 4usize); + wrap!(assert!(std::mem::offset_of!(TSNumberKeyword, span) == 0usize);); + } + { + assert!(size_of::() == 8usize); + assert!(align_of::() == 4usize); + wrap!(assert!(std::mem::offset_of!(TSNeverKeyword, span) == 0usize);); + } + { + assert!(size_of::() == 8usize); + assert!(align_of::() == 4usize); + wrap!(assert!(std::mem::offset_of!(TSIntrinsicKeyword, span) == 0usize);); + } + { + assert!(size_of::() == 8usize); + assert!(align_of::() == 4usize); + wrap!(assert!(std::mem::offset_of!(TSUnknownKeyword, span) == 0usize);); + } + { + assert!(size_of::() == 8usize); + assert!(align_of::() == 4usize); + wrap!(assert!(std::mem::offset_of!(TSNullKeyword, span) == 0usize);); + } + { + assert!(size_of::() == 8usize); + assert!(align_of::() == 4usize); + wrap!(assert!(std::mem::offset_of!(TSUndefinedKeyword, span) == 0usize);); + } + { + assert!(size_of::() == 8usize); + assert!(align_of::() == 4usize); + wrap!(assert!(std::mem::offset_of!(TSVoidKeyword, span) == 0usize);); + } + { + assert!(size_of::() == 8usize); + assert!(align_of::() == 4usize); + wrap!(assert!(std::mem::offset_of!(TSSymbolKeyword, span) == 0usize);); + } + { + assert!(size_of::() == 8usize); + assert!(align_of::() == 4usize); + wrap!(assert!(std::mem::offset_of!(TSThisType, span) == 0usize);); + } + { + assert!(size_of::() == 8usize); + assert!(align_of::() == 4usize); + wrap!(assert!(std::mem::offset_of!(TSObjectKeyword, span) == 0usize);); + } + { + assert!(size_of::() == 8usize); + assert!(align_of::() == 4usize); + wrap!(assert!(std::mem::offset_of!(TSBigIntKeyword, span) == 0usize);); + } + { + assert!(size_of::>() == 32usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSTypeReference < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(TSTypeReference < 'static >, type_name) == + 0usize); assert!(std::mem::offset_of!(TSTypeReference < 'static >, + type_parameters) == 24usize); + ); + } + { + assert!(size_of::>() == 48usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSQualifiedName < 'static >, span) == 40usize); + assert!(std::mem::offset_of!(TSQualifiedName < 'static >, left) == 0usize); + assert!(std::mem::offset_of!(TSQualifiedName < 'static >, right) == 16usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSTypeParameterInstantiation < 'static >, span) + == 32usize); assert!(std::mem::offset_of!(TSTypeParameterInstantiation < + 'static >, params) == 0usize); + ); + } + { + assert!(size_of::>() == 80usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSTypeParameter < 'static >, span) == 64usize); + assert!(std::mem::offset_of!(TSTypeParameter < 'static >, name) == 0usize); + assert!(std::mem::offset_of!(TSTypeParameter < 'static >, constraint) == + 32usize); assert!(std::mem::offset_of!(TSTypeParameter < 'static >, default) + == 48usize); assert!(std::mem::offset_of!(TSTypeParameter < 'static >, r#in) + == 72usize); assert!(std::mem::offset_of!(TSTypeParameter < 'static >, out) + == 73usize); assert!(std::mem::offset_of!(TSTypeParameter < 'static >, + r#const) == 74usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSTypeParameterDeclaration < 'static >, span) == + 32usize); assert!(std::mem::offset_of!(TSTypeParameterDeclaration < 'static + >, params) == 0usize); + ); + } + { + assert!(size_of::>() == 72usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSTypeAliasDeclaration < 'static >, span) == + 48usize); assert!(std::mem::offset_of!(TSTypeAliasDeclaration < 'static >, + id) == 16usize); assert!(std::mem::offset_of!(TSTypeAliasDeclaration < + 'static >, type_parameters) == 56usize); + assert!(std::mem::offset_of!(TSTypeAliasDeclaration < 'static >, + type_annotation) == 0usize); + assert!(std::mem::offset_of!(TSTypeAliasDeclaration < 'static >, declare) == + 68usize); assert!(std::mem::offset_of!(TSTypeAliasDeclaration < 'static >, + scope_id) == 64usize); + ); + } + { + assert!(size_of::>() == 32usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSClassImplements < 'static >, span) == + 16usize); assert!(std::mem::offset_of!(TSClassImplements < 'static >, + expression) == 0usize); assert!(std::mem::offset_of!(TSClassImplements < + 'static >, type_parameters) == 24usize); + ); + } + { + assert!(size_of::>() == 96usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSInterfaceDeclaration < 'static >, span) == + 40usize); assert!(std::mem::offset_of!(TSInterfaceDeclaration < 'static >, + id) == 0usize); assert!(std::mem::offset_of!(TSInterfaceDeclaration < 'static + >, extends) == 48usize); assert!(std::mem::offset_of!(TSInterfaceDeclaration + < 'static >, type_parameters) == 80usize); + assert!(std::mem::offset_of!(TSInterfaceDeclaration < 'static >, body) == + 32usize); assert!(std::mem::offset_of!(TSInterfaceDeclaration < 'static >, + declare) == 92usize); assert!(std::mem::offset_of!(TSInterfaceDeclaration < + 'static >, scope_id) == 88usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSInterfaceBody < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(TSInterfaceBody < 'static >, body) == 0usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSPropertySignature < 'static >, span) == + 16usize); assert!(std::mem::offset_of!(TSPropertySignature < 'static >, + computed) == 32usize); assert!(std::mem::offset_of!(TSPropertySignature < + 'static >, optional) == 33usize); + assert!(std::mem::offset_of!(TSPropertySignature < 'static >, readonly) == + 34usize); assert!(std::mem::offset_of!(TSPropertySignature < 'static >, key) + == 0usize); assert!(std::mem::offset_of!(TSPropertySignature < 'static >, + type_annotation) == 24usize); + ); + } + { + assert!(size_of::>() == 56usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSIndexSignature < 'static >, span) == 40usize); + assert!(std::mem::offset_of!(TSIndexSignature < 'static >, parameters) == + 0usize); assert!(std::mem::offset_of!(TSIndexSignature < 'static >, + type_annotation) == 32usize); assert!(std::mem::offset_of!(TSIndexSignature < + 'static >, readonly) == 48usize); + ); + } + { + assert!(size_of::>() == 72usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSCallSignatureDeclaration < 'static >, span) == + 8usize); assert!(std::mem::offset_of!(TSCallSignatureDeclaration < 'static >, + this_param) == 16usize); + assert!(std::mem::offset_of!(TSCallSignatureDeclaration < 'static >, params) + == 0usize); assert!(std::mem::offset_of!(TSCallSignatureDeclaration < 'static + >, return_type) == 56usize); + assert!(std::mem::offset_of!(TSCallSignatureDeclaration < 'static >, + type_parameters) == 64usize); + ); + } + { + assert!(size_of::>() == 96usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSMethodSignature < 'static >, span) == + 16usize); assert!(std::mem::offset_of!(TSMethodSignature < 'static >, key) == + 0usize); assert!(std::mem::offset_of!(TSMethodSignature < 'static >, + computed) == 93usize); assert!(std::mem::offset_of!(TSMethodSignature < + 'static >, optional) == 94usize); + assert!(std::mem::offset_of!(TSMethodSignature < 'static >, kind) == + 92usize); assert!(std::mem::offset_of!(TSMethodSignature < 'static >, + this_param) == 24usize); assert!(std::mem::offset_of!(TSMethodSignature < + 'static >, params) == 80usize); + assert!(std::mem::offset_of!(TSMethodSignature < 'static >, return_type) == + 64usize); assert!(std::mem::offset_of!(TSMethodSignature < 'static >, + type_parameters) == 72usize); assert!(std::mem::offset_of!(TSMethodSignature + < 'static >, scope_id) == 88usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSConstructSignatureDeclaration < 'static >, + span) == 8usize); + assert!(std::mem::offset_of!(TSConstructSignatureDeclaration < 'static >, + params) == 0usize); + assert!(std::mem::offset_of!(TSConstructSignatureDeclaration < 'static >, + return_type) == 16usize); + assert!(std::mem::offset_of!(TSConstructSignatureDeclaration < 'static >, + type_parameters) == 24usize); + assert!(std::mem::offset_of!(TSConstructSignatureDeclaration < 'static >, + scope_id) == 32usize); + ); + } + { + assert!(size_of::>() == 32usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSIndexSignatureName < 'static >, span) == + 24usize); assert!(std::mem::offset_of!(TSIndexSignatureName < 'static >, + name) == 0usize); assert!(std::mem::offset_of!(TSIndexSignatureName < 'static + >, type_annotation) == 16usize); + ); + } + { + assert!(size_of::>() == 32usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSInterfaceHeritage < 'static >, span) == + 16usize); assert!(std::mem::offset_of!(TSInterfaceHeritage < 'static >, + expression) == 0usize); assert!(std::mem::offset_of!(TSInterfaceHeritage < + 'static >, type_parameters) == 24usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSTypePredicate < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(TSTypePredicate < 'static >, parameter_name) == + 0usize); assert!(std::mem::offset_of!(TSTypePredicate < 'static >, asserts) + == 32usize); assert!(std::mem::offset_of!(TSTypePredicate < 'static >, + type_annotation) == 24usize); + ); + } + { + assert!(size_of::>() == 64usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSModuleDeclaration < 'static >, span) == + 48usize); assert!(std::mem::offset_of!(TSModuleDeclaration < 'static >, id) + == 0usize); assert!(std::mem::offset_of!(TSModuleDeclaration < 'static >, + body) == 32usize); assert!(std::mem::offset_of!(TSModuleDeclaration < 'static + >, kind) == 61usize); assert!(std::mem::offset_of!(TSModuleDeclaration < + 'static >, declare) == 60usize); + assert!(std::mem::offset_of!(TSModuleDeclaration < 'static >, scope_id) == + 56usize); + ); + } + { + assert!(size_of::>() == 72usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSModuleBlock < 'static >, span) == 64usize); + assert!(std::mem::offset_of!(TSModuleBlock < 'static >, directives) == + 0usize); assert!(std::mem::offset_of!(TSModuleBlock < 'static >, body) == + 32usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSTypeLiteral < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(TSTypeLiteral < 'static >, members) == 0usize); + ); + } + { + assert!(size_of::>() == 16usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSInferType < 'static >, span) == 8usize); + assert!(std::mem::offset_of!(TSInferType < 'static >, type_parameter) == + 0usize); + ); + } + { + assert!(size_of::>() == 32usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSTypeQuery < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(TSTypeQuery < 'static >, expr_name) == 0usize); + assert!(std::mem::offset_of!(TSTypeQuery < 'static >, type_parameters) == + 24usize); + ); + } + { + assert!(size_of::>() == 96usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSImportType < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(TSImportType < 'static >, is_type_of) == + 88usize); assert!(std::mem::offset_of!(TSImportType < 'static >, parameter) + == 16usize); assert!(std::mem::offset_of!(TSImportType < 'static >, + qualifier) == 0usize); assert!(std::mem::offset_of!(TSImportType < 'static >, + attributes) == 40usize); assert!(std::mem::offset_of!(TSImportType < 'static + >, type_parameters) == 80usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSImportAttributes < 'static >, span) == + 32usize); assert!(std::mem::offset_of!(TSImportAttributes < 'static >, + elements) == 0usize); + ); + } + { + assert!(size_of::>() == 56usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSImportAttribute < 'static >, span) == + 48usize); assert!(std::mem::offset_of!(TSImportAttribute < 'static >, name) + == 0usize); assert!(std::mem::offset_of!(TSImportAttribute < 'static >, + value) == 32usize); + ); + } + { + assert!(size_of::>() == 72usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSFunctionType < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(TSFunctionType < 'static >, this_param) == + 24usize); assert!(std::mem::offset_of!(TSFunctionType < 'static >, params) == + 0usize); assert!(std::mem::offset_of!(TSFunctionType < 'static >, + return_type) == 8usize); assert!(std::mem::offset_of!(TSFunctionType < + 'static >, type_parameters) == 64usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSConstructorType < 'static >, span) == + 16usize); assert!(std::mem::offset_of!(TSConstructorType < 'static >, + r#abstract) == 32usize); assert!(std::mem::offset_of!(TSConstructorType < + 'static >, params) == 0usize); assert!(std::mem::offset_of!(TSConstructorType + < 'static >, return_type) == 8usize); + assert!(std::mem::offset_of!(TSConstructorType < 'static >, type_parameters) + == 24usize); + ); + } + { + assert!(size_of::>() == 56usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSMappedType < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(TSMappedType < 'static >, type_parameter) == + 40usize); assert!(std::mem::offset_of!(TSMappedType < 'static >, name_type) + == 0usize); assert!(std::mem::offset_of!(TSMappedType < 'static >, + type_annotation) == 16usize); assert!(std::mem::offset_of!(TSMappedType < + 'static >, optional) == 52usize); assert!(std::mem::offset_of!(TSMappedType < + 'static >, readonly) == 53usize); assert!(std::mem::offset_of!(TSMappedType < + 'static >, scope_id) == 48usize); + ); + } + { + assert!(size_of::>() == 72usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSTemplateLiteralType < 'static >, span) == + 64usize); assert!(std::mem::offset_of!(TSTemplateLiteralType < 'static >, + quasis) == 0usize); assert!(std::mem::offset_of!(TSTemplateLiteralType < + 'static >, types) == 32usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSAsExpression < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(TSAsExpression < 'static >, expression) == + 16usize); assert!(std::mem::offset_of!(TSAsExpression < 'static >, + type_annotation) == 0usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSSatisfiesExpression < 'static >, span) == + 32usize); assert!(std::mem::offset_of!(TSSatisfiesExpression < 'static >, + expression) == 16usize); assert!(std::mem::offset_of!(TSSatisfiesExpression < + 'static >, type_annotation) == 0usize); + ); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSTypeAssertion < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(TSTypeAssertion < 'static >, expression) == + 16usize); assert!(std::mem::offset_of!(TSTypeAssertion < 'static >, + type_annotation) == 0usize); + ); + } + { + assert!(size_of::>() == 64usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSImportEqualsDeclaration < 'static >, span) == + 48usize); assert!(std::mem::offset_of!(TSImportEqualsDeclaration < 'static >, + id) == 16usize); assert!(std::mem::offset_of!(TSImportEqualsDeclaration < + 'static >, module_reference) == 0usize); + assert!(std::mem::offset_of!(TSImportEqualsDeclaration < 'static >, + import_kind) == 56usize); + ); + } + { + assert!(size_of::>() == 32usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSExternalModuleReference < 'static >, span) == + 24usize); assert!(std::mem::offset_of!(TSExternalModuleReference < 'static >, + expression) == 0usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSNonNullExpression < 'static >, span) == + 16usize); assert!(std::mem::offset_of!(TSNonNullExpression < 'static >, + expression) == 0usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(Decorator < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(Decorator < 'static >, expression) == 0usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSExportAssignment < 'static >, span) == + 16usize); assert!(std::mem::offset_of!(TSExportAssignment < 'static >, + expression) == 0usize); + ); + } + { + assert!(size_of::>() == 32usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSNamespaceExportDeclaration < 'static >, span) + == 24usize); assert!(std::mem::offset_of!(TSNamespaceExportDeclaration < + 'static >, id) == 0usize); + ); + } + { + assert!(size_of::>() == 32usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(TSInstantiationExpression < 'static >, span) == + 24usize); assert!(std::mem::offset_of!(TSInstantiationExpression < 'static >, + expression) == 0usize); + assert!(std::mem::offset_of!(TSInstantiationExpression < 'static >, + type_parameters) == 16usize); + ); + } + { + assert!(size_of::>() == 32usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(JSDocNullableType < 'static >, span) == + 16usize); assert!(std::mem::offset_of!(JSDocNullableType < 'static >, + type_annotation) == 0usize); assert!(std::mem::offset_of!(JSDocNullableType < + 'static >, postfix) == 24usize); + ); + } + { + assert!(size_of::>() == 32usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(JSDocNonNullableType < 'static >, span) == + 16usize); assert!(std::mem::offset_of!(JSDocNonNullableType < 'static >, + type_annotation) == 0usize); + assert!(std::mem::offset_of!(JSDocNonNullableType < 'static >, postfix) == + 24usize); + ); + } + { + assert!(size_of::() == 8usize); + assert!(align_of::() == 4usize); + wrap!(assert!(std::mem::offset_of!(JSDocUnknownType, span) == 0usize);); + } + { + assert!(size_of::>() == 56usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(JSXElement < 'static >, span) == 40usize); + assert!(std::mem::offset_of!(JSXElement < 'static >, opening_element) == + 0usize); assert!(std::mem::offset_of!(JSXElement < 'static >, + closing_element) == 48usize); assert!(std::mem::offset_of!(JSXElement < + 'static >, children) == 8usize); + ); + } + { + assert!(size_of::>() == 72usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(JSXOpeningElement < 'static >, span) == + 48usize); assert!(std::mem::offset_of!(JSXOpeningElement < 'static >, + self_closing) == 64usize); assert!(std::mem::offset_of!(JSXOpeningElement < + 'static >, name) == 0usize); assert!(std::mem::offset_of!(JSXOpeningElement < + 'static >, attributes) == 16usize); + assert!(std::mem::offset_of!(JSXOpeningElement < 'static >, type_parameters) + == 56usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(JSXClosingElement < 'static >, span) == + 16usize); assert!(std::mem::offset_of!(JSXClosingElement < 'static >, name) + == 0usize); + ); + } + { + assert!(size_of::>() == 56usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(JSXFragment < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(JSXFragment < 'static >, opening_fragment) == + 40usize); assert!(std::mem::offset_of!(JSXFragment < 'static >, + closing_fragment) == 48usize); assert!(std::mem::offset_of!(JSXFragment < + 'static >, children) == 0usize); + ); + } + { + assert!(size_of::() == 8usize); + assert!(align_of::() == 4usize); + wrap!(assert!(std::mem::offset_of!(JSXOpeningFragment, span) == 0usize);); + } + { + assert!(size_of::() == 8usize); + assert!(align_of::() == 4usize); + wrap!(assert!(std::mem::offset_of!(JSXClosingFragment, span) == 0usize);); + } + { + assert!(size_of::>() == 56usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(JSXNamespacedName < 'static >, span) == + 48usize); assert!(std::mem::offset_of!(JSXNamespacedName < 'static >, + namespace) == 0usize); assert!(std::mem::offset_of!(JSXNamespacedName < + 'static >, property) == 24usize); + ); + } + { + assert!(size_of::>() == 48usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(JSXMemberExpression < 'static >, span) == + 40usize); assert!(std::mem::offset_of!(JSXMemberExpression < 'static >, + object) == 0usize); assert!(std::mem::offset_of!(JSXMemberExpression < + 'static >, property) == 16usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(JSXExpressionContainer < 'static >, span) == + 16usize); assert!(std::mem::offset_of!(JSXExpressionContainer < 'static >, + expression) == 0usize); + ); + } + { + assert!(size_of::() == 8usize); + assert!(align_of::() == 4usize); + wrap!(assert!(std::mem::offset_of!(JSXEmptyExpression, span) == 0usize);); + } + { + assert!(size_of::>() == 40usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(JSXAttribute < 'static >, span) == 32usize); + assert!(std::mem::offset_of!(JSXAttribute < 'static >, name) == 0usize); + assert!(std::mem::offset_of!(JSXAttribute < 'static >, value) == 16usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(JSXSpreadAttribute < 'static >, span) == + 16usize); assert!(std::mem::offset_of!(JSXSpreadAttribute < 'static >, + argument) == 0usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(JSXIdentifier < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(JSXIdentifier < 'static >, name) == 0usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(JSXSpreadChild < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(JSXSpreadChild < 'static >, expression) == + 0usize); + ); + } + { + assert!(size_of::>() == 24usize); + assert!(align_of::>() == 8usize); + wrap!( + assert!(std::mem::offset_of!(JSXText < 'static >, span) == 16usize); + assert!(std::mem::offset_of!(JSXText < 'static >, value) == 0usize); + ); + } +}; diff --git a/crates/oxc_ast/src/lib.rs b/crates/oxc_ast/src/lib.rs index 13f0efb7ba4ba..c3e4673c42ec1 100644 --- a/crates/oxc_ast/src/lib.rs +++ b/crates/oxc_ast/src/lib.rs @@ -1,4 +1,5 @@ #![allow(clippy::wildcard_imports)] +#![allow(clippy::inconsistent_struct_constructor)] // TODO: I'm not sure if it is a but or intentional but clippy needs this allowed both on this // module and the generated one. #![allow(clippy::self_named_module_files)] @@ -24,7 +25,6 @@ //! [`AssignmentTarget`]: ast::AssignmentTarget //! [`oxc_parser`]: //! [`Parser`]: - #[cfg(feature = "serialize")] mod serialize; @@ -39,6 +39,8 @@ mod trivia; mod generated { #[cfg(test)] pub mod assert_layouts; + // TODO: remove me; don't merge to upstream!! + pub mod assert_repr_rust_layout; pub mod ast_builder; pub mod ast_kind; pub mod span; diff --git a/crates/oxc_ast_macros/Cargo.toml b/crates/oxc_ast_macros/Cargo.toml index 5286f5812c24a..966084a110b80 100644 --- a/crates/oxc_ast_macros/Cargo.toml +++ b/crates/oxc_ast_macros/Cargo.toml @@ -24,3 +24,5 @@ doctest = false quote = { workspace = true } syn = { workspace = true, features = ["full"] } proc-macro2 = { workspace = true } +lazy_static = { workspace = true } +rustc-hash = { workspace = true } diff --git a/crates/oxc_ast_macros/src/generated/ast_field_order_data.rs b/crates/oxc_ast_macros/src/generated/ast_field_order_data.rs new file mode 100644 index 0000000000000..a1ee8f9280d18 --- /dev/null +++ b/crates/oxc_ast_macros/src/generated/ast_field_order_data.rs @@ -0,0 +1,405 @@ +// Auto-generated code, DO NOT EDIT DIRECTLY! +// To edit this generated file you have to edit `tasks/ast_codegen/src/generators/ast_field_order.rs` + +use lazy_static::lazy_static; +use rustc_hash::FxHashMap; + +pub fn get(ident: &str) -> Option<&[u8]> { + #[cfg(not(any(target_pointer_width = "64", target_pointer_width = "32")))] + std::compile_error!("Platforms with pointer width other than 64 or 32 bit are not supported"); + #[cfg(target_pointer_width = "64")] + lazy_static! { + static ref DATA: FxHashMap<&'static str, &'static [u8]> = FxHashMap::from_iter([ + ("BooleanLiteral", &[0u8, 1u8][..]), + ("NullLiteral", &[0u8][..]), + ("NumericLiteral", &[1u8, 2u8, 0u8, 3u8][..]), + ("BigIntLiteral", &[1u8, 0u8, 2u8][..]), + ("RegExpLiteral", &[1u8, 2u8, 0u8][..]), + ("RegExp", &[0u8, 1u8][..]), + ("StringLiteral", &[1u8, 0u8][..]), + ("Program", &[3u8, 4u8, 2u8, 0u8, 1u8, 5u8][..]), + ("IdentifierName", &[1u8, 0u8][..]), + ("IdentifierReference", &[1u8, 0u8, 2u8, 3u8][..]), + ("BindingIdentifier", &[1u8, 0u8, 2u8][..]), + ("LabelIdentifier", &[1u8, 0u8][..]), + ("ThisExpression", &[0u8][..]), + ("ArrayExpression", &[2u8, 0u8, 1u8][..]), + ("Elision", &[0u8][..]), + ("ObjectExpression", &[2u8, 0u8, 1u8][..]), + ("ObjectProperty", &[3u8, 4u8, 0u8, 1u8, 2u8, 5u8, 6u8, 7u8][..]), + ("TemplateLiteral", &[2u8, 0u8, 1u8][..]), + ("TaggedTemplateExpression", &[2u8, 1u8, 0u8, 3u8][..]), + ("TemplateElement", &[1u8, 2u8, 0u8][..]), + ("TemplateElementValue", &[0u8, 1u8][..]), + ("ComputedMemberExpression", &[2u8, 0u8, 1u8, 3u8][..]), + ("StaticMemberExpression", &[2u8, 1u8, 0u8, 3u8][..]), + ("PrivateFieldExpression", &[2u8, 1u8, 0u8, 3u8][..]), + ("CallExpression", &[2u8, 0u8, 1u8, 3u8, 4u8][..]), + ("NewExpression", &[2u8, 1u8, 0u8, 3u8][..]), + ("MetaProperty", &[2u8, 0u8, 1u8][..]), + ("SpreadElement", &[1u8, 0u8][..]), + ("UpdateExpression", &[1u8, 2u8, 3u8, 0u8][..]), + ("UnaryExpression", &[1u8, 2u8, 0u8][..]), + ("BinaryExpression", &[2u8, 0u8, 3u8, 1u8][..]), + ("PrivateInExpression", &[2u8, 0u8, 3u8, 1u8][..]), + ("LogicalExpression", &[2u8, 0u8, 3u8, 1u8][..]), + ("ConditionalExpression", &[3u8, 0u8, 1u8, 2u8][..]), + ("AssignmentExpression", &[2u8, 3u8, 0u8, 1u8][..]), + ("ArrayAssignmentTarget", &[3u8, 0u8, 1u8, 2u8][..]), + ("ObjectAssignmentTarget", &[2u8, 0u8, 1u8][..]), + ("AssignmentTargetRest", &[1u8, 0u8][..]), + ("AssignmentTargetWithDefault", &[2u8, 0u8, 1u8][..]), + ("AssignmentTargetPropertyIdentifier", &[2u8, 0u8, 1u8][..]), + ("AssignmentTargetPropertyProperty", &[2u8, 0u8, 1u8][..]), + ("SequenceExpression", &[1u8, 0u8][..]), + ("Super", &[0u8][..]), + ("AwaitExpression", &[1u8, 0u8][..]), + ("ChainExpression", &[1u8, 0u8][..]), + ("ParenthesizedExpression", &[1u8, 0u8][..]), + ("Directive", &[2u8, 0u8, 1u8][..]), + ("Hashbang", &[1u8, 0u8][..]), + ("BlockStatement", &[1u8, 0u8, 2u8][..]), + ("VariableDeclaration", &[1u8, 2u8, 0u8, 3u8][..]), + ("VariableDeclarator", &[2u8, 3u8, 0u8, 1u8, 4u8][..]), + ("UsingDeclaration", &[1u8, 2u8, 0u8][..]), + ("EmptyStatement", &[0u8][..]), + ("ExpressionStatement", &[1u8, 0u8][..]), + ("IfStatement", &[3u8, 0u8, 1u8, 2u8][..]), + ("DoWhileStatement", &[2u8, 0u8, 1u8][..]), + ("WhileStatement", &[2u8, 0u8, 1u8][..]), + ("ForStatement", &[4u8, 0u8, 1u8, 2u8, 3u8, 5u8][..]), + ("ForInStatement", &[3u8, 0u8, 1u8, 2u8, 4u8][..]), + ("ForOfStatement", &[3u8, 5u8, 0u8, 1u8, 2u8, 4u8][..]), + ("ContinueStatement", &[1u8, 0u8][..]), + ("BreakStatement", &[1u8, 0u8][..]), + ("ReturnStatement", &[1u8, 0u8][..]), + ("WithStatement", &[2u8, 0u8, 1u8][..]), + ("SwitchStatement", &[2u8, 1u8, 0u8, 3u8][..]), + ("SwitchCase", &[2u8, 1u8, 0u8][..]), + ("LabeledStatement", &[2u8, 0u8, 1u8][..]), + ("ThrowStatement", &[1u8, 0u8][..]), + ("TryStatement", &[0u8, 1u8, 2u8, 3u8][..]), + ("CatchClause", &[1u8, 0u8, 2u8, 3u8][..]), + ("CatchParameter", &[1u8, 0u8][..]), + ("DebuggerStatement", &[0u8][..]), + ("BindingPattern", &[0u8, 1u8, 2u8][..]), + ("AssignmentPattern", &[2u8, 0u8, 1u8][..]), + ("ObjectPattern", &[1u8, 0u8, 2u8][..]), + ("BindingProperty", &[2u8, 1u8, 0u8, 3u8, 4u8][..]), + ("ArrayPattern", &[1u8, 0u8, 2u8][..]), + ("BindingRestElement", &[1u8, 0u8][..]), + ("Function", &[8u8, 2u8, 1u8, 9u8, 10u8, 11u8, 3u8, 0u8, 4u8, 5u8, 6u8, 7u8][..]), + ("FormalParameters", &[1u8, 3u8, 0u8, 2u8][..]), + ("FormalParameter", &[2u8, 0u8, 1u8, 3u8, 4u8, 5u8][..]), + ("FunctionBody", &[2u8, 0u8, 1u8][..]), + ("ArrowFunctionExpression", &[0u8, 6u8, 7u8, 1u8, 2u8, 3u8, 4u8, 5u8][..]), + ("YieldExpression", &[1u8, 2u8, 0u8][..]), + ("Class", &[9u8, 4u8, 0u8, 1u8, 5u8, 3u8, 6u8, 2u8, 7u8, 10u8, 11u8, 8u8][..]), + ("ClassBody", &[1u8, 0u8][..]), + ("MethodDefinition", &[4u8, 2u8, 0u8, 1u8, 3u8, 5u8, 6u8, 7u8, 8u8, 9u8, 10u8][..]), + ( + "PropertyDefinition", + &[5u8, 3u8, 0u8, 1u8, 2u8, 6u8, 7u8, 8u8, 9u8, 10u8, 11u8, 12u8, 4u8, 13u8][..] + ), + ("PrivateIdentifier", &[1u8, 0u8][..]), + ("StaticBlock", &[1u8, 0u8, 2u8][..]), + ("AccessorProperty", &[4u8, 3u8, 0u8, 1u8, 2u8, 5u8, 6u8][..]), + ("ImportExpression", &[2u8, 1u8, 0u8][..]), + ("ImportDeclaration", &[3u8, 1u8, 2u8, 0u8, 4u8][..]), + ("ImportSpecifier", &[2u8, 0u8, 1u8, 3u8][..]), + ("ImportDefaultSpecifier", &[1u8, 0u8][..]), + ("ImportNamespaceSpecifier", &[1u8, 0u8][..]), + ("WithClause", &[2u8, 1u8, 0u8][..]), + ("ImportAttribute", &[2u8, 0u8, 1u8][..]), + ("ExportNamedDeclaration", &[4u8, 3u8, 1u8, 2u8, 5u8, 0u8][..]), + ("ExportDefaultDeclaration", &[2u8, 1u8, 0u8][..]), + ("ExportAllDeclaration", &[3u8, 1u8, 2u8, 0u8, 4u8][..]), + ("ExportSpecifier", &[2u8, 0u8, 1u8, 3u8][..]), + ("TSThisParameter", &[1u8, 0u8, 2u8][..]), + ("TSEnumDeclaration", &[2u8, 0u8, 1u8, 4u8, 5u8, 3u8][..]), + ("TSEnumMember", &[2u8, 0u8, 1u8][..]), + ("TSTypeAnnotation", &[1u8, 0u8][..]), + ("TSLiteralType", &[1u8, 0u8][..]), + ("TSConditionalType", &[4u8, 0u8, 1u8, 2u8, 3u8, 5u8][..]), + ("TSUnionType", &[1u8, 0u8][..]), + ("TSIntersectionType", &[1u8, 0u8][..]), + ("TSParenthesizedType", &[1u8, 0u8][..]), + ("TSTypeOperator", &[1u8, 2u8, 0u8][..]), + ("TSArrayType", &[1u8, 0u8][..]), + ("TSIndexedAccessType", &[2u8, 0u8, 1u8][..]), + ("TSTupleType", &[1u8, 0u8][..]), + ("TSNamedTupleMember", &[2u8, 1u8, 0u8, 3u8][..]), + ("TSOptionalType", &[1u8, 0u8][..]), + ("TSRestType", &[1u8, 0u8][..]), + ("TSAnyKeyword", &[0u8][..]), + ("TSStringKeyword", &[0u8][..]), + ("TSBooleanKeyword", &[0u8][..]), + ("TSNumberKeyword", &[0u8][..]), + ("TSNeverKeyword", &[0u8][..]), + ("TSIntrinsicKeyword", &[0u8][..]), + ("TSUnknownKeyword", &[0u8][..]), + ("TSNullKeyword", &[0u8][..]), + ("TSUndefinedKeyword", &[0u8][..]), + ("TSVoidKeyword", &[0u8][..]), + ("TSSymbolKeyword", &[0u8][..]), + ("TSThisType", &[0u8][..]), + ("TSObjectKeyword", &[0u8][..]), + ("TSBigIntKeyword", &[0u8][..]), + ("TSTypeReference", &[1u8, 0u8, 2u8][..]), + ("TSQualifiedName", &[2u8, 1u8, 0u8][..]), + ("TSTypeParameterInstantiation", &[1u8, 0u8][..]), + ("TSTypeParameter", &[3u8, 0u8, 1u8, 2u8, 4u8, 5u8, 6u8][..]), + ("TSTypeParameterDeclaration", &[1u8, 0u8][..]), + ("TSTypeAliasDeclaration", &[2u8, 0u8, 3u8, 1u8, 5u8, 4u8][..]), + ("TSClassImplements", &[1u8, 0u8, 2u8][..]), + ("TSInterfaceDeclaration", &[2u8, 0u8, 1u8, 3u8, 4u8, 6u8, 5u8][..]), + ("TSInterfaceBody", &[1u8, 0u8][..]), + ("TSPropertySignature", &[1u8, 3u8, 4u8, 5u8, 0u8, 2u8][..]), + ("TSIndexSignature", &[1u8, 0u8, 2u8, 3u8][..]), + ("TSCallSignatureDeclaration", &[1u8, 0u8, 2u8, 3u8, 4u8][..]), + ("TSMethodSignature", &[2u8, 1u8, 7u8, 8u8, 9u8, 0u8, 3u8, 4u8, 5u8, 6u8][..]), + ("TSConstructSignatureDeclaration", &[0u8, 1u8, 2u8, 3u8, 4u8][..]), + ("TSIndexSignatureName", &[1u8, 0u8, 2u8][..]), + ("TSInterfaceHeritage", &[1u8, 0u8, 2u8][..]), + ("TSTypePredicate", &[1u8, 0u8, 3u8, 2u8][..]), + ("TSModuleDeclaration", &[2u8, 0u8, 1u8, 4u8, 5u8, 3u8][..]), + ("TSModuleBlock", &[2u8, 0u8, 1u8][..]), + ("TSTypeLiteral", &[1u8, 0u8][..]), + ("TSInferType", &[0u8, 1u8][..]), + ("TSTypeQuery", &[1u8, 0u8, 2u8][..]), + ("TSImportType", &[3u8, 5u8, 1u8, 2u8, 0u8, 4u8][..]), + ("TSImportAttributes", &[1u8, 0u8][..]), + ("TSImportAttribute", &[2u8, 0u8, 1u8][..]), + ("TSFunctionType", &[1u8, 0u8, 2u8, 3u8, 4u8][..]), + ("TSConstructorType", &[0u8, 4u8, 1u8, 2u8, 3u8][..]), + ("TSMappedType", &[2u8, 3u8, 0u8, 1u8, 5u8, 6u8, 4u8][..]), + ("TSTemplateLiteralType", &[2u8, 0u8, 1u8][..]), + ("TSAsExpression", &[2u8, 0u8, 1u8][..]), + ("TSSatisfiesExpression", &[2u8, 0u8, 1u8][..]), + ("TSTypeAssertion", &[2u8, 0u8, 1u8][..]), + ("TSImportEqualsDeclaration", &[2u8, 0u8, 1u8, 3u8][..]), + ("TSExternalModuleReference", &[1u8, 0u8][..]), + ("TSNonNullExpression", &[1u8, 0u8][..]), + ("Decorator", &[1u8, 0u8][..]), + ("TSExportAssignment", &[1u8, 0u8][..]), + ("TSNamespaceExportDeclaration", &[1u8, 0u8][..]), + ("TSInstantiationExpression", &[1u8, 0u8, 2u8][..]), + ("JSDocNullableType", &[1u8, 0u8, 2u8][..]), + ("JSDocNonNullableType", &[1u8, 0u8, 2u8][..]), + ("JSDocUnknownType", &[0u8][..]), + ("JSXElement", &[1u8, 2u8, 3u8, 0u8][..]), + ("JSXOpeningElement", &[2u8, 4u8, 1u8, 0u8, 3u8][..]), + ("JSXClosingElement", &[1u8, 0u8][..]), + ("JSXFragment", &[1u8, 2u8, 3u8, 0u8][..]), + ("JSXOpeningFragment", &[0u8][..]), + ("JSXClosingFragment", &[0u8][..]), + ("JSXNamespacedName", &[2u8, 0u8, 1u8][..]), + ("JSXMemberExpression", &[2u8, 1u8, 0u8][..]), + ("JSXExpressionContainer", &[1u8, 0u8][..]), + ("JSXEmptyExpression", &[0u8][..]), + ("JSXAttribute", &[2u8, 0u8, 1u8][..]), + ("JSXSpreadAttribute", &[1u8, 0u8][..]), + ("JSXIdentifier", &[1u8, 0u8][..]), + ("JSXSpreadChild", &[1u8, 0u8][..]), + ("JSXText", &[1u8, 0u8][..]) + ]); + } + #[cfg(target_pointer_width = "32")] + lazy_static! { + static ref DATA: FxHashMap<&'static str, &'static [u8]> = FxHashMap::from_iter([ + ("BooleanLiteral", &[0u8, 1u8][..]), + ("NullLiteral", &[0u8][..]), + ("NumericLiteral", &[1u8, 2u8, 0u8, 3u8][..]), + ("BigIntLiteral", &[1u8, 0u8, 2u8][..]), + ("RegExpLiteral", &[1u8, 2u8, 0u8][..]), + ("RegExp", &[0u8, 1u8][..]), + ("StringLiteral", &[1u8, 0u8][..]), + ("Program", &[3u8, 4u8, 2u8, 0u8, 1u8, 5u8][..]), + ("IdentifierName", &[1u8, 0u8][..]), + ("IdentifierReference", &[1u8, 0u8, 2u8, 3u8][..]), + ("BindingIdentifier", &[1u8, 0u8, 2u8][..]), + ("LabelIdentifier", &[1u8, 0u8][..]), + ("ThisExpression", &[0u8][..]), + ("ArrayExpression", &[2u8, 0u8, 1u8][..]), + ("Elision", &[0u8][..]), + ("ObjectExpression", &[2u8, 0u8, 1u8][..]), + ("ObjectProperty", &[3u8, 4u8, 0u8, 1u8, 2u8, 5u8, 6u8, 7u8][..]), + ("TemplateLiteral", &[2u8, 0u8, 1u8][..]), + ("TaggedTemplateExpression", &[2u8, 1u8, 0u8, 3u8][..]), + ("TemplateElement", &[1u8, 2u8, 0u8][..]), + ("TemplateElementValue", &[0u8, 1u8][..]), + ("ComputedMemberExpression", &[2u8, 0u8, 1u8, 3u8][..]), + ("StaticMemberExpression", &[2u8, 1u8, 0u8, 3u8][..]), + ("PrivateFieldExpression", &[2u8, 1u8, 0u8, 3u8][..]), + ("CallExpression", &[2u8, 0u8, 1u8, 3u8, 4u8][..]), + ("NewExpression", &[2u8, 1u8, 0u8, 3u8][..]), + ("MetaProperty", &[2u8, 0u8, 1u8][..]), + ("SpreadElement", &[1u8, 0u8][..]), + ("UpdateExpression", &[1u8, 2u8, 3u8, 0u8][..]), + ("UnaryExpression", &[1u8, 2u8, 0u8][..]), + ("BinaryExpression", &[2u8, 0u8, 3u8, 1u8][..]), + ("PrivateInExpression", &[2u8, 0u8, 3u8, 1u8][..]), + ("LogicalExpression", &[2u8, 0u8, 3u8, 1u8][..]), + ("ConditionalExpression", &[3u8, 0u8, 1u8, 2u8][..]), + ("AssignmentExpression", &[2u8, 3u8, 0u8, 1u8][..]), + ("ArrayAssignmentTarget", &[3u8, 0u8, 1u8, 2u8][..]), + ("ObjectAssignmentTarget", &[2u8, 0u8, 1u8][..]), + ("AssignmentTargetRest", &[1u8, 0u8][..]), + ("AssignmentTargetWithDefault", &[2u8, 0u8, 1u8][..]), + ("AssignmentTargetPropertyIdentifier", &[2u8, 0u8, 1u8][..]), + ("AssignmentTargetPropertyProperty", &[2u8, 0u8, 1u8][..]), + ("SequenceExpression", &[1u8, 0u8][..]), + ("Super", &[0u8][..]), + ("AwaitExpression", &[1u8, 0u8][..]), + ("ChainExpression", &[1u8, 0u8][..]), + ("ParenthesizedExpression", &[1u8, 0u8][..]), + ("Directive", &[2u8, 0u8, 1u8][..]), + ("Hashbang", &[1u8, 0u8][..]), + ("BlockStatement", &[1u8, 0u8, 2u8][..]), + ("VariableDeclaration", &[1u8, 2u8, 0u8, 3u8][..]), + ("VariableDeclarator", &[2u8, 3u8, 0u8, 1u8, 4u8][..]), + ("UsingDeclaration", &[1u8, 2u8, 0u8][..]), + ("EmptyStatement", &[0u8][..]), + ("ExpressionStatement", &[1u8, 0u8][..]), + ("IfStatement", &[3u8, 0u8, 1u8, 2u8][..]), + ("DoWhileStatement", &[2u8, 0u8, 1u8][..]), + ("WhileStatement", &[2u8, 0u8, 1u8][..]), + ("ForStatement", &[4u8, 0u8, 1u8, 2u8, 3u8, 5u8][..]), + ("ForInStatement", &[3u8, 0u8, 1u8, 2u8, 4u8][..]), + ("ForOfStatement", &[3u8, 5u8, 0u8, 1u8, 2u8, 4u8][..]), + ("ContinueStatement", &[1u8, 0u8][..]), + ("BreakStatement", &[1u8, 0u8][..]), + ("ReturnStatement", &[1u8, 0u8][..]), + ("WithStatement", &[2u8, 0u8, 1u8][..]), + ("SwitchStatement", &[2u8, 1u8, 0u8, 3u8][..]), + ("SwitchCase", &[2u8, 1u8, 0u8][..]), + ("LabeledStatement", &[2u8, 0u8, 1u8][..]), + ("ThrowStatement", &[1u8, 0u8][..]), + ("TryStatement", &[0u8, 1u8, 2u8, 3u8][..]), + ("CatchClause", &[1u8, 0u8, 2u8, 3u8][..]), + ("CatchParameter", &[1u8, 0u8][..]), + ("DebuggerStatement", &[0u8][..]), + ("BindingPattern", &[0u8, 1u8, 2u8][..]), + ("AssignmentPattern", &[2u8, 0u8, 1u8][..]), + ("ObjectPattern", &[1u8, 0u8, 2u8][..]), + ("BindingProperty", &[2u8, 1u8, 0u8, 3u8, 4u8][..]), + ("ArrayPattern", &[1u8, 0u8, 2u8][..]), + ("BindingRestElement", &[1u8, 0u8][..]), + ("Function", &[8u8, 2u8, 1u8, 9u8, 10u8, 11u8, 3u8, 0u8, 4u8, 5u8, 6u8, 7u8][..]), + ("FormalParameters", &[1u8, 3u8, 0u8, 2u8][..]), + ("FormalParameter", &[2u8, 0u8, 1u8, 3u8, 4u8, 5u8][..]), + ("FunctionBody", &[2u8, 0u8, 1u8][..]), + ("ArrowFunctionExpression", &[0u8, 6u8, 7u8, 1u8, 2u8, 3u8, 4u8, 5u8][..]), + ("YieldExpression", &[1u8, 2u8, 0u8][..]), + ("Class", &[9u8, 4u8, 0u8, 1u8, 5u8, 3u8, 6u8, 2u8, 7u8, 10u8, 11u8, 8u8][..]), + ("ClassBody", &[1u8, 0u8][..]), + ("MethodDefinition", &[4u8, 2u8, 0u8, 1u8, 3u8, 5u8, 6u8, 7u8, 8u8, 9u8, 10u8][..]), + ( + "PropertyDefinition", + &[5u8, 3u8, 0u8, 1u8, 2u8, 6u8, 7u8, 8u8, 9u8, 10u8, 11u8, 12u8, 4u8, 13u8][..] + ), + ("PrivateIdentifier", &[1u8, 0u8][..]), + ("StaticBlock", &[1u8, 0u8, 2u8][..]), + ("AccessorProperty", &[4u8, 3u8, 0u8, 1u8, 2u8, 5u8, 6u8][..]), + ("ImportExpression", &[2u8, 1u8, 0u8][..]), + ("ImportDeclaration", &[3u8, 1u8, 2u8, 0u8, 4u8][..]), + ("ImportSpecifier", &[2u8, 0u8, 1u8, 3u8][..]), + ("ImportDefaultSpecifier", &[1u8, 0u8][..]), + ("ImportNamespaceSpecifier", &[1u8, 0u8][..]), + ("WithClause", &[2u8, 1u8, 0u8][..]), + ("ImportAttribute", &[2u8, 0u8, 1u8][..]), + ("ExportNamedDeclaration", &[4u8, 3u8, 1u8, 2u8, 5u8, 0u8][..]), + ("ExportDefaultDeclaration", &[2u8, 1u8, 0u8][..]), + ("ExportAllDeclaration", &[3u8, 1u8, 2u8, 0u8, 4u8][..]), + ("ExportSpecifier", &[2u8, 0u8, 1u8, 3u8][..]), + ("TSThisParameter", &[1u8, 0u8, 2u8][..]), + ("TSEnumDeclaration", &[2u8, 0u8, 1u8, 4u8, 5u8, 3u8][..]), + ("TSEnumMember", &[2u8, 0u8, 1u8][..]), + ("TSTypeAnnotation", &[1u8, 0u8][..]), + ("TSLiteralType", &[1u8, 0u8][..]), + ("TSConditionalType", &[4u8, 0u8, 1u8, 2u8, 3u8, 5u8][..]), + ("TSUnionType", &[1u8, 0u8][..]), + ("TSIntersectionType", &[1u8, 0u8][..]), + ("TSParenthesizedType", &[1u8, 0u8][..]), + ("TSTypeOperator", &[1u8, 2u8, 0u8][..]), + ("TSArrayType", &[1u8, 0u8][..]), + ("TSIndexedAccessType", &[2u8, 0u8, 1u8][..]), + ("TSTupleType", &[1u8, 0u8][..]), + ("TSNamedTupleMember", &[2u8, 1u8, 0u8, 3u8][..]), + ("TSOptionalType", &[1u8, 0u8][..]), + ("TSRestType", &[1u8, 0u8][..]), + ("TSAnyKeyword", &[0u8][..]), + ("TSStringKeyword", &[0u8][..]), + ("TSBooleanKeyword", &[0u8][..]), + ("TSNumberKeyword", &[0u8][..]), + ("TSNeverKeyword", &[0u8][..]), + ("TSIntrinsicKeyword", &[0u8][..]), + ("TSUnknownKeyword", &[0u8][..]), + ("TSNullKeyword", &[0u8][..]), + ("TSUndefinedKeyword", &[0u8][..]), + ("TSVoidKeyword", &[0u8][..]), + ("TSSymbolKeyword", &[0u8][..]), + ("TSThisType", &[0u8][..]), + ("TSObjectKeyword", &[0u8][..]), + ("TSBigIntKeyword", &[0u8][..]), + ("TSTypeReference", &[1u8, 0u8, 2u8][..]), + ("TSQualifiedName", &[2u8, 1u8, 0u8][..]), + ("TSTypeParameterInstantiation", &[1u8, 0u8][..]), + ("TSTypeParameter", &[3u8, 0u8, 1u8, 2u8, 4u8, 5u8, 6u8][..]), + ("TSTypeParameterDeclaration", &[1u8, 0u8][..]), + ("TSTypeAliasDeclaration", &[2u8, 0u8, 3u8, 1u8, 5u8, 4u8][..]), + ("TSClassImplements", &[1u8, 0u8, 2u8][..]), + ("TSInterfaceDeclaration", &[2u8, 0u8, 1u8, 3u8, 4u8, 6u8, 5u8][..]), + ("TSInterfaceBody", &[1u8, 0u8][..]), + ("TSPropertySignature", &[1u8, 3u8, 4u8, 5u8, 0u8, 2u8][..]), + ("TSIndexSignature", &[1u8, 0u8, 2u8, 3u8][..]), + ("TSCallSignatureDeclaration", &[1u8, 0u8, 2u8, 3u8, 4u8][..]), + ("TSMethodSignature", &[2u8, 1u8, 7u8, 8u8, 9u8, 0u8, 3u8, 4u8, 5u8, 6u8][..]), + ("TSConstructSignatureDeclaration", &[0u8, 1u8, 2u8, 3u8, 4u8][..]), + ("TSIndexSignatureName", &[1u8, 0u8, 2u8][..]), + ("TSInterfaceHeritage", &[1u8, 0u8, 2u8][..]), + ("TSTypePredicate", &[1u8, 0u8, 3u8, 2u8][..]), + ("TSModuleDeclaration", &[2u8, 0u8, 1u8, 4u8, 5u8, 3u8][..]), + ("TSModuleBlock", &[2u8, 0u8, 1u8][..]), + ("TSTypeLiteral", &[1u8, 0u8][..]), + ("TSInferType", &[0u8, 1u8][..]), + ("TSTypeQuery", &[1u8, 0u8, 2u8][..]), + ("TSImportType", &[3u8, 5u8, 1u8, 2u8, 0u8, 4u8][..]), + ("TSImportAttributes", &[1u8, 0u8][..]), + ("TSImportAttribute", &[2u8, 0u8, 1u8][..]), + ("TSFunctionType", &[1u8, 0u8, 2u8, 3u8, 4u8][..]), + ("TSConstructorType", &[0u8, 4u8, 1u8, 2u8, 3u8][..]), + ("TSMappedType", &[2u8, 3u8, 0u8, 1u8, 5u8, 6u8, 4u8][..]), + ("TSTemplateLiteralType", &[2u8, 0u8, 1u8][..]), + ("TSAsExpression", &[2u8, 0u8, 1u8][..]), + ("TSSatisfiesExpression", &[2u8, 0u8, 1u8][..]), + ("TSTypeAssertion", &[2u8, 0u8, 1u8][..]), + ("TSImportEqualsDeclaration", &[2u8, 0u8, 1u8, 3u8][..]), + ("TSExternalModuleReference", &[1u8, 0u8][..]), + ("TSNonNullExpression", &[1u8, 0u8][..]), + ("Decorator", &[1u8, 0u8][..]), + ("TSExportAssignment", &[1u8, 0u8][..]), + ("TSNamespaceExportDeclaration", &[1u8, 0u8][..]), + ("TSInstantiationExpression", &[1u8, 0u8, 2u8][..]), + ("JSDocNullableType", &[1u8, 0u8, 2u8][..]), + ("JSDocNonNullableType", &[1u8, 0u8, 2u8][..]), + ("JSDocUnknownType", &[0u8][..]), + ("JSXElement", &[1u8, 2u8, 3u8, 0u8][..]), + ("JSXOpeningElement", &[2u8, 4u8, 1u8, 0u8, 3u8][..]), + ("JSXClosingElement", &[1u8, 0u8][..]), + ("JSXFragment", &[1u8, 2u8, 3u8, 0u8][..]), + ("JSXOpeningFragment", &[0u8][..]), + ("JSXClosingFragment", &[0u8][..]), + ("JSXNamespacedName", &[2u8, 0u8, 1u8][..]), + ("JSXMemberExpression", &[2u8, 1u8, 0u8][..]), + ("JSXExpressionContainer", &[1u8, 0u8][..]), + ("JSXEmptyExpression", &[0u8][..]), + ("JSXAttribute", &[2u8, 0u8, 1u8][..]), + ("JSXSpreadAttribute", &[1u8, 0u8][..]), + ("JSXIdentifier", &[1u8, 0u8][..]), + ("JSXSpreadChild", &[1u8, 0u8][..]), + ("JSXText", &[1u8, 0u8][..]) + ]); + } + DATA.get(ident).copied() +} diff --git a/crates/oxc_ast_macros/src/lib.rs b/crates/oxc_ast_macros/src/lib.rs index 6b4220cdd8c6a..280d64cac08ad 100644 --- a/crates/oxc_ast_macros/src/lib.rs +++ b/crates/oxc_ast_macros/src/lib.rs @@ -1,6 +1,12 @@ +mod reorder_fields; +mod generated { + pub mod ast_field_order_data; +} + use proc_macro::TokenStream; use proc_macro2::TokenStream as TokenStream2; use quote::quote; +use reorder_fields::reorder_fields; /// returns `#[repr(C, u8)]` if `enum_` has any non-unit variant, /// Otherwise it would return `#[repr(u8)]`. @@ -25,10 +31,16 @@ fn enum_repr(enum_: &syn::ItemEnum) -> TokenStream2 { #[allow(clippy::missing_panics_doc)] pub fn ast(_args: TokenStream, input: TokenStream) -> TokenStream { let input = syn::parse_macro_input!(input as syn::Item); - - let repr = match input { - syn::Item::Enum(ref enum_) => enum_repr(enum_), - syn::Item::Struct(_) => quote!(#[repr(C)]), + let (repr, item) = match input { + syn::Item::Enum(enum_) => (enum_repr(&enum_), syn::Item::Enum(enum_)), + syn::Item::Struct(mut struct_) => { + let id = struct_.ident.to_string(); + // if we have field ordering data for this type use it to reorder. + if let Some(data) = generated::ast_field_order_data::get(id.as_str()) { + reorder_fields(&mut struct_, data); + }; + (quote!(#[repr(C)]), syn::Item::Struct(struct_)) + } _ => { unreachable!() @@ -38,7 +50,7 @@ pub fn ast(_args: TokenStream, input: TokenStream) -> TokenStream { let expanded = quote! { #[derive(::oxc_ast_macros::Ast)] #repr - #input + #item }; TokenStream::from(expanded) } diff --git a/crates/oxc_ast_macros/src/reorder_fields.rs b/crates/oxc_ast_macros/src/reorder_fields.rs new file mode 100644 index 0000000000000..2165ce854e850 --- /dev/null +++ b/crates/oxc_ast_macros/src/reorder_fields.rs @@ -0,0 +1,58 @@ +use proc_macro2::TokenStream; +use quote::format_ident; +use syn::{Field, Fields, FieldsNamed, FieldsUnnamed, ItemStruct}; + +const DUMMY: &str = "DUMMY"; + +#[inline] +pub fn reorder_fields(ty: &mut ItemStruct, data: &[u8]) { + let (Fields::Named(FieldsNamed { named: fields, .. }) + | Fields::Unnamed(FieldsUnnamed { unnamed: fields, .. })) = &mut ty.fields + else { + debug_assert!(false, "Entered unreachable code!"); + // SAFETY: We don't generate any ordering data for empty structs, And the debug assertions + // are on in CI runs; The debug assertion above would ensure any possible mistake gets caught + // by tests early on in the PR's life span. This allows us to avoid a branch here. + unsafe { std::hint::unreachable_unchecked() } + }; + + // TODO: We can replace this with uninitialized memory, It might be faster if we use one byte + // to check if a field is placeholder or not and keep the rest of the bytes uninitialized as we + // never read them. I'm not sure if it is safe with a mutable reference or not but I believe it + // would be safe with exclusive ownership of the field. + let mut pick = Field { + attrs: Vec::default(), + vis: syn::Visibility::Inherited, + mutability: syn::FieldMutability::None, + ident: Some(format_ident!("{DUMMY}")), + colon_token: None, + ty: syn::Type::Verbatim(TokenStream::default()), + }; + // TODO: use bit array here? + let mut is_ordered = vec![false; fields.len()]; + let mut target; + // Best case O(n), Worst case O(2n) + for i in 0..fields.len() { + if is_ordered[i] { + continue; + } + + let field = &mut fields[i]; + // `pick` the first unordered field + pick = std::mem::replace(field, pick); + // capture its ideal position + target = data[i]; + + // while we have something in our `pick` + while pick.ident.as_ref().is_some_and(|it| it != DUMMY) { + // select the slot of target position + let field = &mut fields[target as usize]; + // put the picked field in the target slot and pick the previous item + pick = std::mem::replace(field, pick); + // mark the field as ordered + is_ordered[target as usize] = true; + // capture the ideal position of our new pick + target = data[target as usize]; + } + } +} diff --git a/tasks/ast_codegen/src/generators/ast_field_order.rs b/tasks/ast_codegen/src/generators/ast_field_order.rs new file mode 100644 index 0000000000000..c44ebde54da86 --- /dev/null +++ b/tasks/ast_codegen/src/generators/ast_field_order.rs @@ -0,0 +1,90 @@ +use itertools::Itertools; +use proc_macro2::TokenStream; +use quote::quote; +use syn::ItemStruct; + +use crate::{layout::Layout, output, schema::RType, CodegenCtx, Generator, GeneratorOutput}; + +use super::{define_generator, generated_header}; + +define_generator! { + pub struct AstFieldOrder; +} + +impl Generator for AstFieldOrder { + fn name(&self) -> &'static str { + stringify!(AstFieldOrder) + } + + fn generate(&mut self, ctx: &CodegenCtx) -> GeneratorOutput { + let orders_64 = ctx + .ty_table + .iter() + .filter(|ty| matches!(&*ty.borrow(), RType::Struct(s) if !s.item.fields.is_empty())) + .map(|ty| { + let RType::Struct(ty) = &*ty.borrow() else { unreachable!() }; + generate_orders(&ty.item, &ty.meta.layout_64) + }); + let orders_32 = ctx + .ty_table + .iter() + .filter(|ty| matches!(&*ty.borrow(), RType::Struct(s) if !s.item.fields.is_empty())) + .map(|ty| { + let RType::Struct(ty) = &*ty.borrow() else { unreachable!() }; + generate_orders(&ty.item, &ty.meta.layout_64) + }); + let header = generated_header!(); + GeneratorOutput::Stream(( + output(crate::AST_MACROS_CRATE, "ast_field_order_data.rs"), + quote! { + #header + use lazy_static::lazy_static; + use rustc_hash::FxHashMap; + + endl!(); + + pub fn get(ident: &str) -> Option<&[u8]> { + + #[cfg(not(any(target_pointer_width = "64", target_pointer_width = "32")))] + std::compile_error!( + "Platforms with pointer width other than 64 or 32 bit are not supported" + ); + #[cfg(target_pointer_width = "64")] + lazy_static! { + static ref DATA: FxHashMap<&'static str, &'static [u8]> = + FxHashMap::from_iter([#(#orders_64),*]); + } + #[cfg(target_pointer_width = "32")] + lazy_static! { + static ref DATA: FxHashMap<&'static str, &'static [u8]> = + FxHashMap::from_iter([#(#orders_32),*]); + } + + + DATA.get(ident).copied() + } + }, + )) + } +} + +fn generate_orders(ty: &ItemStruct, layout: &Layout) -> Option { + let ident = &ty.ident.to_string(); + let Layout::Layout(layout) = layout else { panic!("Layout isn't determined yet!") }; + let offsets = layout.offsets(); + if let Some(offsets) = offsets { + let orders = offsets + .iter() + .zip(ty.fields.iter().enumerate()) + .sorted_by(|a, b| Ord::cmp(a.0, b.0)) + .map(|(_, fi)| fi) + .enumerate() + .sorted_by(|a, b| Ord::cmp(&a.1 .0, &b.1 .0)) + .map(|it| { + u8::try_from(it.0).expect("We have no AST type with enough fields to exhaust `u8`.") + }); + Some(quote!((#ident, &[#(#orders),*][..]))) + } else { + None + } +} diff --git a/tasks/ast_codegen/src/generators/mod.rs b/tasks/ast_codegen/src/generators/mod.rs index c8476221c53e9..9c76688272b30 100644 --- a/tasks/ast_codegen/src/generators/mod.rs +++ b/tasks/ast_codegen/src/generators/mod.rs @@ -1,5 +1,6 @@ mod assert_layouts; mod ast_builder; +mod ast_field_order; mod ast_kind; mod impl_get_span; mod visit; @@ -42,6 +43,7 @@ pub(crate) use insert; pub use assert_layouts::AssertLayouts; pub use ast_builder::AstBuilderGenerator; +pub use ast_field_order::AstFieldOrder; pub use ast_kind::AstKindGenerator; pub use impl_get_span::ImplGetSpanGenerator; pub use visit::{VisitGenerator, VisitMutGenerator}; diff --git a/tasks/ast_codegen/src/main.rs b/tasks/ast_codegen/src/main.rs index 997a0c3b3b155..1c0b7ff22395e 100644 --- a/tasks/ast_codegen/src/main.rs +++ b/tasks/ast_codegen/src/main.rs @@ -1,5 +1,4 @@ const AST_CRATE: &str = "crates/oxc_ast"; -#[allow(dead_code)] const AST_MACROS_CRATE: &str = "crates/oxc_ast_macros"; mod defs; @@ -22,7 +21,7 @@ use syn::parse_file; use defs::TypeDef; use generators::{ - AssertLayouts, AstBuilderGenerator, AstKindGenerator, Generator, VisitGenerator, + AssertLayouts, AstBuilderGenerator, AstFieldOrder, AstKindGenerator, Generator, VisitGenerator, VisitMutGenerator, }; use schema::{Module, REnum, RStruct, RType, Schema}; @@ -265,6 +264,7 @@ fn main() -> std::result::Result<(), Box> { .pass(CalcLayout) .pass(BuildSchema) .gen(AssertLayouts) + .gen(AstFieldOrder) .gen(AstKindGenerator) .gen(AstBuilderGenerator) .gen(ImplGetSpanGenerator) diff --git a/tasks/ast_codegen/src/passes/calc_layout.rs b/tasks/ast_codegen/src/passes/calc_layout.rs index b9b8e3200821a..bd9a2d9fc7aba 100644 --- a/tasks/ast_codegen/src/passes/calc_layout.rs +++ b/tasks/ast_codegen/src/passes/calc_layout.rs @@ -164,7 +164,16 @@ fn calc_struct_layout(ty: &mut RStruct, ctx: &CodegenCtx) -> Result std::result::Result { - let layouts = layouts.iter().enumerate(); + // reorder fields + let layouts = layouts.iter().enumerate().sorted_by(|a, b| { + let (ia, a) = a; + let (ib, b) = b; + if b.size() == a.size() { + Ord::cmp(&ia, &ib) + } else { + Ord::cmp(&b.size(), &a.size()) + } + }); let mut offsets = vec![0; layouts.len()]; let mut output = std::alloc::Layout::from_size_align(0, 1)?; let mut niches = 0;