mirror of
https://github.com/oxc-project/oxc.git
synced 2026-11-04 18:43:44 +00:00
perf(napi/parser, linter/plugins): raw transfer deserialize Span fields as i32s (#21135)
Continuation of #21132. Get span `start` and `end` from the `Int32Array` view of the buffer, instead of the `Uint32Array`view. This allows V8 to statically see that they are SMIs, and skip type checks.
This commit is contained in:
1 parent
bc1bcdd95e
commit
8c51121e4c
22 files changed
+3845
-3801
No files matched your search
File diff suppressed because it is too large.
Load diff
@@ -185,8 +185,8 @@ impl ESTree for CatchParameterConverter<'_, '_> {
|
||||
typeAnnotation: null,
|
||||
value: null,
|
||||
}),
|
||||
start: start = DESER[u32]( POS_OFFSET<FormalParameterRest>.rest.span.start ),
|
||||
end: end = DESER[u32]( POS_OFFSET<FormalParameterRest>.rest.span.end ),
|
||||
start: start = DESER[i32]( POS_OFFSET<FormalParameterRest>.rest.span.start ),
|
||||
end: end = DESER[i32]( POS_OFFSET<FormalParameterRest>.rest.span.end ),
|
||||
...(RANGE && { range: [start, end] }),
|
||||
...(PARENT && { parent: previousParent }),
|
||||
};
|
||||
@@ -273,8 +273,8 @@ impl ESTree for FormalParameterRest<'_> {
|
||||
right: null,
|
||||
optional,
|
||||
typeAnnotation: null,
|
||||
start: start = DESER[u32]( POS_OFFSET.span.start ),
|
||||
end: end = DESER[u32]( POS_OFFSET.span.end ),
|
||||
start: start = DESER[i32]( POS_OFFSET.span.start ),
|
||||
end: end = DESER[i32]( POS_OFFSET.span.end ),
|
||||
...(RANGE && { range: [start, end] }),
|
||||
...(PARENT && { parent: previousParent }),
|
||||
};
|
||||
@@ -305,8 +305,8 @@ impl ESTree for FormalParameterRest<'_> {
|
||||
param.end = typeAnnotation.end;
|
||||
if (RANGE) param.range[1] = typeAnnotation.end;
|
||||
} else if (optional) {
|
||||
param.end = DESER[u32]( POS_OFFSET.span.end );
|
||||
if (RANGE) param.range[1] = DESER[u32]( POS_OFFSET.span.end );
|
||||
param.end = DESER[i32]( POS_OFFSET.span.end );
|
||||
if (RANGE) param.range[1] = DESER[i32]( POS_OFFSET.span.end );
|
||||
}
|
||||
if (PARENT) parent = previousParent;
|
||||
}
|
||||
@@ -320,8 +320,8 @@ impl ESTree for FormalParameterRest<'_> {
|
||||
parameter: null,
|
||||
readonly,
|
||||
static: false,
|
||||
start: start = DESER[u32]( POS_OFFSET.span.start ),
|
||||
end: end = DESER[u32]( POS_OFFSET.span.end ),
|
||||
start: start = DESER[i32]( POS_OFFSET.span.start ),
|
||||
end: end = DESER[i32]( POS_OFFSET.span.end ),
|
||||
...(RANGE && { range: [start, end] }),
|
||||
...(PARENT && { parent: previousParent }),
|
||||
};
|
||||
@@ -369,7 +369,7 @@ impl ESTree for FormalParameterRest<'_> {
|
||||
param.parameter.end = paramTypeAnnotation.end;
|
||||
if (RANGE) param.parameter.range[1] = paramTypeAnnotation.end;
|
||||
} else if (paramOptional) {
|
||||
const paramEnd = DESER[u32]( POS_OFFSET.span.end );
|
||||
const paramEnd = DESER[i32]( POS_OFFSET.span.end );
|
||||
const pattern = param.parameter;
|
||||
param.parameter.end = paramEnd;
|
||||
if (RANGE) param.parameter.range[1] = paramEnd;
|
||||
@@ -384,8 +384,8 @@ impl ESTree for FormalParameterRest<'_> {
|
||||
type: 'AssignmentPattern',
|
||||
left: null,
|
||||
right: null,
|
||||
start: start = DESER[u32]( POS_OFFSET.span.start ),
|
||||
end: end = DESER[u32]( POS_OFFSET.span.end ),
|
||||
start: start = DESER[i32]( POS_OFFSET.span.start ),
|
||||
end: end = DESER[i32]( POS_OFFSET.span.end ),
|
||||
...(RANGE && { range: [start, end] }),
|
||||
...(PARENT && { parent: previousParent }),
|
||||
};
|
||||
@@ -767,8 +767,8 @@ impl ESTree for AssignmentTargetPropertyIdentifierInit<'_> {
|
||||
node = parent = {
|
||||
type: 'ParenthesizedExpression',
|
||||
expression: null,
|
||||
start: start = DESER[u32]( POS_OFFSET.span.start ),
|
||||
end: end = DESER[u32]( POS_OFFSET.span.end ),
|
||||
start: start = DESER[i32]( POS_OFFSET.span.start ),
|
||||
end: end = DESER[i32]( POS_OFFSET.span.end ),
|
||||
...(RANGE && { range: [start, end] }),
|
||||
...(PARENT && { parent }),
|
||||
};
|
||||
|
||||
@@ -197,8 +197,8 @@ impl ESTree for RegExpFlagsConverter<'_> {
|
||||
#[ast_meta]
|
||||
#[estree(raw_deser = r#"
|
||||
const tail = DESER[bool](POS_OFFSET.tail),
|
||||
start = IS_TS ? DESER[u32](POS_OFFSET.span.start) - 1 : DESER[u32](POS_OFFSET.span.start),
|
||||
end = IS_TS ? DESER[u32](POS_OFFSET.span.end) + 2 - tail : DESER[u32](POS_OFFSET.span.end),
|
||||
start = IS_TS ? DESER[i32](POS_OFFSET.span.start) - 1 : DESER[i32](POS_OFFSET.span.start),
|
||||
end = IS_TS ? DESER[i32](POS_OFFSET.span.end) + 2 - tail : DESER[i32](POS_OFFSET.span.end),
|
||||
value = DESER[TemplateElementValue](POS_OFFSET.value);
|
||||
if (value.cooked !== null && DESER[bool](POS_OFFSET.lone_surrogates)) {
|
||||
value.cooked = value.cooked
|
||||
|
||||
@@ -121,8 +121,8 @@ impl Program<'_> {
|
||||
/// `Program` span start is 0 (not 5).
|
||||
#[ast_meta]
|
||||
#[estree(raw_deser = "
|
||||
const start = IS_TS ? 0 : DESER[u32](POS_OFFSET.span.start),
|
||||
end = DESER[u32](POS_OFFSET.span.end);
|
||||
const start = IS_TS ? 0 : DESER[i32](POS_OFFSET.span.start),
|
||||
end = DESER[i32](POS_OFFSET.span.end);
|
||||
|
||||
const program = parent = {
|
||||
type: 'Program',
|
||||
|
||||
@@ -52,8 +52,8 @@ impl ESTree for ExpressionStatementDirective<'_, '_> {
|
||||
#[ast_meta]
|
||||
#[estree(raw_deser = "
|
||||
const kind = DESER[TSModuleDeclarationKind](POS_OFFSET.kind),
|
||||
start = DESER[u32](POS_OFFSET.span.start),
|
||||
end = DESER[u32](POS_OFFSET.span.end),
|
||||
start = DESER[i32](POS_OFFSET.span.start),
|
||||
end = DESER[i32](POS_OFFSET.span.end),
|
||||
declare = DESER[bool](POS_OFFSET.declare);
|
||||
|
||||
let node;
|
||||
@@ -266,8 +266,8 @@ impl ESTree for TSModuleDeclarationIdParts<'_, '_> {
|
||||
optional: false,
|
||||
typeAnnotation: null,
|
||||
}),
|
||||
start: keywordStart = DESER[u32](POS_OFFSET.global_span.start),
|
||||
end: keywordEnd = DESER[u32](POS_OFFSET.global_span.end),
|
||||
start: keywordStart = DESER[i32](POS_OFFSET.global_span.start),
|
||||
end: keywordEnd = DESER[i32](POS_OFFSET.global_span.end),
|
||||
...(RANGE && { range: [keywordStart, keywordEnd] }),
|
||||
...(PARENT && { parent }),
|
||||
};
|
||||
@@ -488,8 +488,8 @@ impl ESTree for TSFunctionTypeParams<'_, '_> {
|
||||
node = parent = {
|
||||
type: 'TSParenthesizedType',
|
||||
typeAnnotation: null,
|
||||
start: start = DESER[u32]( POS_OFFSET.span.start ),
|
||||
end: end = DESER[u32]( POS_OFFSET.span.end ),
|
||||
start: start = DESER[i32]( POS_OFFSET.span.start ),
|
||||
end: end = DESER[i32]( POS_OFFSET.span.end ),
|
||||
...(RANGE && { range: [start, end] }),
|
||||
...(PARENT && { parent }),
|
||||
};
|
||||
|
||||
@@ -9,312 +9,313 @@ pub static STRUCTS: phf::Map<&'static str, StructDetails> = ::phf::Map {
|
||||
key: 16287231350648472473,
|
||||
disps: &[
|
||||
(0, 0),
|
||||
(0, 63),
|
||||
(0, 14),
|
||||
(0, 16),
|
||||
(1, 29),
|
||||
(8, 184),
|
||||
(0, 3),
|
||||
(0, 10),
|
||||
(7, 181),
|
||||
(0, 71),
|
||||
(0, 134),
|
||||
(0, 26),
|
||||
(0, 70),
|
||||
(0, 48),
|
||||
(0, 2),
|
||||
(0, 3),
|
||||
(1, 74),
|
||||
(0, 1),
|
||||
(0, 14),
|
||||
(1, 1),
|
||||
(1, 173),
|
||||
(0, 111),
|
||||
(1, 102),
|
||||
(0, 8),
|
||||
(0, 116),
|
||||
(0, 142),
|
||||
(4, 180),
|
||||
(1, 197),
|
||||
(0, 20),
|
||||
(4, 145),
|
||||
(0, 44),
|
||||
(0, 81),
|
||||
(0, 5),
|
||||
(0, 55),
|
||||
(0, 145),
|
||||
(0, 25),
|
||||
(0, 2),
|
||||
(0, 45),
|
||||
(1, 7),
|
||||
(0, 98),
|
||||
(0, 118),
|
||||
(2, 196),
|
||||
(0, 0),
|
||||
(0, 179),
|
||||
(1, 35),
|
||||
(0, 21),
|
||||
(1, 135),
|
||||
(19, 37),
|
||||
(0, 27),
|
||||
(0, 58),
|
||||
(1, 228),
|
||||
(0, 0),
|
||||
(2, 209),
|
||||
(5, 88),
|
||||
(0, 30),
|
||||
(84, 1),
|
||||
(0, 0),
|
||||
(10, 123),
|
||||
(0, 93),
|
||||
(1, 32),
|
||||
(0, 5),
|
||||
(0, 10),
|
||||
(0, 166),
|
||||
(0, 36),
|
||||
(0, 2),
|
||||
(5, 181),
|
||||
(1, 131),
|
||||
(8, 215),
|
||||
(0, 9),
|
||||
(11, 111),
|
||||
(1, 27),
|
||||
(0, 37),
|
||||
(67, 150),
|
||||
(0, 4),
|
||||
(1, 120),
|
||||
(0, 1),
|
||||
(1, 24),
|
||||
(13, 94),
|
||||
(0, 10),
|
||||
(12, 21),
|
||||
(0, 0),
|
||||
(4, 130),
|
||||
(0, 2),
|
||||
(0, 26),
|
||||
(38, 67),
|
||||
(0, 42),
|
||||
(2, 120),
|
||||
(20, 6),
|
||||
(0, 3),
|
||||
],
|
||||
entries: &[
|
||||
("JSXElement", StructDetails { field_order: Some(&[1, 0, 2, 3, 4]) }),
|
||||
("JSDocNullableType", StructDetails { field_order: Some(&[1, 0, 3, 2]) }),
|
||||
("WithClause", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("NewExpression", StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 2]) }),
|
||||
("NumericLiteral", StructDetails { field_order: Some(&[1, 0, 4, 3, 2]) }),
|
||||
("TSUnknownKeyword", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("UnicodePropertyEscape", StructDetails { field_order: Some(&[0, 3, 4, 1, 2]) }),
|
||||
("TSInterfaceDeclaration", StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 6, 7, 2]) }),
|
||||
("ObjectAssignmentTarget", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("SwitchCase", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("TSPropertySignature", StructDetails { field_order: Some(&[1, 0, 2, 3, 4, 5, 6]) }),
|
||||
("CatchClause", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("Decorator", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSClassImplements", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("PrivateInExpression", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("IdentifierReference", StructDetails { field_order: Some(&[1, 0, 3, 2]) }),
|
||||
("TSGlobalDeclaration", StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 2]) }),
|
||||
("TSParenthesizedType", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("ForInStatement", StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 2]) }),
|
||||
("AssignmentExpression", StructDetails { field_order: Some(&[1, 0, 2, 3, 4]) }),
|
||||
("BlockStatement", StructDetails { field_order: Some(&[1, 0, 3, 2]) }),
|
||||
("StringLiteral", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("TSNumberKeyword", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("ImportNamespaceSpecifier", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSTypeParameterInstantiation", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("ScopeId", StructDetails { field_order: None }),
|
||||
("ImportDeclaration", StructDetails { field_order: Some(&[1, 0, 4, 5, 2, 6, 3]) }),
|
||||
("SymbolId", StructDetails { field_order: None }),
|
||||
("PrivateIdentifier", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSModuleBlock", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("TSEnumDeclaration", StructDetails { field_order: Some(&[1, 0, 4, 5, 2, 3]) }),
|
||||
("JSXNamespacedName", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("ExportAllDeclaration", StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 2]) }),
|
||||
("Directive", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("TSIntrinsicKeyword", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("BindingRestElement", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSTypeQuery", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("SwitchStatement", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("TSAnyKeyword", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("TSAsExpression", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("ReturnStatement", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("ArrayAssignmentTarget", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("ThisExpression", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("IgnoreGroup", StructDetails { field_order: None }),
|
||||
("TSInterfaceBody", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("CatchParameter", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("RawTransferData", StructDetails { field_order: None }),
|
||||
("RawTransferMetadata", StructDetails { field_order: Some(&[0, 3, 4, 5, 1, 2]) }),
|
||||
("ObjectProperty", StructDetails { field_order: Some(&[1, 0, 2, 6, 7, 3, 4, 5]) }),
|
||||
("DebuggerStatement", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("TSModuleDeclaration", StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 6, 2]) }),
|
||||
(
|
||||
"MethodDefinition",
|
||||
StructDetails { field_order: Some(&[1, 0, 2, 6, 7, 8, 3, 4, 5, 9, 10, 11]) },
|
||||
),
|
||||
("ExportEntry", StructDetails { field_order: Some(&[1, 0, 2, 3, 4, 5, 6]) }),
|
||||
("DoWhileStatement", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("FunctionBody", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("Dot", StructDetails { field_order: None }),
|
||||
("UnaryExpression", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("TSLiteralType", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("ObjectExpression", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSRestType", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TemplateElement", StructDetails { field_order: Some(&[1, 0, 4, 2, 3]) }),
|
||||
("JSXSpreadChild", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSOptionalType", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("IfStatement", StructDetails { field_order: Some(&[1, 0, 2, 3, 4]) }),
|
||||
("Character", StructDetails { field_order: Some(&[0, 2, 1]) }),
|
||||
("LookAroundAssertion", StructDetails { field_order: Some(&[0, 2, 1]) }),
|
||||
("EcmaScriptModule", StructDetails { field_order: Some(&[4, 0, 1, 2, 3]) }),
|
||||
("RegExp", StructDetails { field_order: None }),
|
||||
("SpreadElement", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("Span", StructDetails { field_order: Some(&[1, 2, 0]) }),
|
||||
("Disjunction", StructDetails { field_order: None }),
|
||||
("AssignmentTargetPropertyIdentifier", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("ConditionalExpression", StructDetails { field_order: Some(&[1, 0, 2, 3, 4]) }),
|
||||
("TSTypeAliasDeclaration", StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 6, 2]) }),
|
||||
("StaticBlock", StructDetails { field_order: Some(&[1, 0, 3, 2]) }),
|
||||
(
|
||||
"PropertyDefinition",
|
||||
StructDetails {
|
||||
field_order: Some(&[1, 0, 2, 6, 7, 8, 9, 3, 4, 5, 10, 11, 12, 13, 14]),
|
||||
},
|
||||
),
|
||||
("Comment", StructDetails { field_order: None }),
|
||||
("LabeledStatement", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("StaticMemberExpression", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("CharacterClassEscape", StructDetails { field_order: None }),
|
||||
("TSTupleType", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSTypeParameter", StructDetails { field_order: Some(&[1, 0, 5, 6, 7, 2, 3, 4]) }),
|
||||
("ErrorLabel", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("RawTransferMetadata2", StructDetails { field_order: Some(&[0, 3, 4, 5, 1, 2]) }),
|
||||
("ChainExpression", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("BindingProperty", StructDetails { field_order: Some(&[1, 0, 4, 5, 2, 3]) }),
|
||||
("NullLiteral", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("TSObjectKeyword", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("IdentifierName", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("JSXOpeningFragment", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("AssignmentTargetRest", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSIndexedAccessType", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("Modifiers", StructDetails { field_order: None }),
|
||||
("CommentNewlines", StructDetails { field_order: None }),
|
||||
("JSXText", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("ExportAllDeclaration", StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 2]) }),
|
||||
("TSMappedType", StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 6, 7, 8, 2]) }),
|
||||
("TSStringKeyword", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("TSNamedTupleMember", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("TSTypeLiteral", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSTemplateLiteralType", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("JSXAttribute", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("AssignmentTargetPropertyProperty", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("RegExpPattern", StructDetails { field_order: None }),
|
||||
("TSEnumBody", StructDetails { field_order: Some(&[1, 0, 3, 2]) }),
|
||||
("Decorator", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("EmptyStatement", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("ForOfStatement", StructDetails { field_order: Some(&[1, 0, 6, 3, 4, 5, 2]) }),
|
||||
("ReferenceId", StructDetails { field_order: None }),
|
||||
("V8IntrinsicExpression", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("WithStatement", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("SourceType", StructDetails { field_order: None }),
|
||||
("ThrowStatement", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("IdentifierReference", StructDetails { field_order: Some(&[1, 0, 3, 2]) }),
|
||||
("Program", StructDetails { field_order: Some(&[1, 0, 8, 3, 4, 5, 6, 7, 2]) }),
|
||||
("TaggedTemplateExpression", StructDetails { field_order: Some(&[1, 0, 2, 3, 4]) }),
|
||||
("JSXEmptyExpression", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("JSXClosingFragment", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("TSTypePredicate", StructDetails { field_order: Some(&[1, 0, 3, 2, 4]) }),
|
||||
("AssignmentPattern", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("Class", StructDetails { field_order: Some(&[1, 0, 10, 3, 4, 5, 6, 7, 8, 9, 11, 12, 2]) }),
|
||||
("StaticImport", StructDetails { field_order: None }),
|
||||
("TSThisType", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("NamedReference", StructDetails { field_order: None }),
|
||||
("JSDocUnknownType", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("BigIntLiteral", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("ForStatement", StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 6, 2]) }),
|
||||
("ParenthesizedExpression", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("ContinueStatement", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSQualifiedName", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("ArrayPattern", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("TSTypeOperator", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("UpdateExpression", StructDetails { field_order: Some(&[1, 0, 2, 3, 4]) }),
|
||||
("CharacterClass", StructDetails { field_order: Some(&[0, 2, 3, 4, 1]) }),
|
||||
("ClassString", StructDetails { field_order: Some(&[0, 2, 1]) }),
|
||||
("ImportSpecifier", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("TSIntersectionType", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("ImportAttribute", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("TSNeverKeyword", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("JSXSpreadAttribute", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("CallExpression", StructDetails { field_order: Some(&[1, 0, 4, 5, 6, 2, 3]) }),
|
||||
("Hashbang", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSUnionType", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSTypeReference", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("Error", StructDetails { field_order: Some(&[4, 0, 1, 2, 3]) }),
|
||||
("ArrayExpression", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("IndexedReference", StructDetails { field_order: None }),
|
||||
("TSSymbolKeyword", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("TSInferType", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("AssignmentTargetWithDefault", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("TemplateLiteral", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("PrivateInExpression", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("JSXFragment", StructDetails { field_order: Some(&[1, 0, 2, 3, 4]) }),
|
||||
("ImportEntry", StructDetails { field_order: None }),
|
||||
("JSXExpressionContainer", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSTypeAssertion", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
(
|
||||
"AccessorProperty",
|
||||
StructDetails { field_order: Some(&[1, 0, 2, 6, 7, 8, 9, 3, 4, 5, 10, 11]) },
|
||||
),
|
||||
("Modifier", StructDetails { field_order: None }),
|
||||
("LabelIdentifier", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSEnumMember", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("TSUndefinedKeyword", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("TSImportTypeQualifiedName", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("BoundaryAssertion", StructDetails { field_order: None }),
|
||||
("TSClassImplements", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("BreakStatement", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSConstructorType", StructDetails { field_order: Some(&[1, 0, 6, 3, 4, 5, 2]) }),
|
||||
("TSCallSignatureDeclaration", StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 6, 2]) }),
|
||||
("ExportDefaultDeclaration", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSGlobalDeclaration", StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 2]) }),
|
||||
("TSFunctionType", StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 6, 2]) }),
|
||||
("VariableDeclarator", StructDetails { field_order: Some(&[1, 0, 2, 4, 5, 6, 3]) }),
|
||||
("StaticExport", StructDetails { field_order: None }),
|
||||
("MetaProperty", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("TSInterfaceHeritage", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("CharacterClassRange", StructDetails { field_order: None }),
|
||||
("LogicalExpression", StructDetails { field_order: Some(&[1, 0, 3, 2, 4]) }),
|
||||
("TSBigIntKeyword", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("TSConditionalType", StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 6, 2]) }),
|
||||
("CapturingGroup", StructDetails { field_order: None }),
|
||||
("JSXOpeningElement", StructDetails { field_order: Some(&[1, 0, 2, 3, 4]) }),
|
||||
("ImportExpression", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("ImportDefaultSpecifier", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("Pattern", StructDetails { field_order: None }),
|
||||
("FormalParameterRest", StructDetails { field_order: Some(&[1, 0, 2, 3, 4]) }),
|
||||
("TSImportType", StructDetails { field_order: Some(&[1, 0, 2, 3, 4, 5]) }),
|
||||
("FormalParameter", StructDetails { field_order: Some(&[1, 0, 6, 7, 8, 9, 2, 3, 4, 5]) }),
|
||||
("TSTypeLiteral", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TemplateElementValue", StructDetails { field_order: None }),
|
||||
("TSThisParameter", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("RegExpLiteral", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("RegExpFlags", StructDetails { field_order: None }),
|
||||
("TSSatisfiesExpression", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("ClassBody", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("ClassStringDisjunction", StructDetails { field_order: Some(&[0, 2, 1]) }),
|
||||
("BindingRestElement", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("ExportDefaultDeclaration", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("AssignmentTargetRest", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
(
|
||||
"TSMethodSignature",
|
||||
StructDetails { field_order: Some(&[1, 0, 3, 8, 9, 10, 4, 5, 6, 7, 2]) },
|
||||
"MethodDefinition",
|
||||
StructDetails { field_order: Some(&[1, 0, 2, 6, 7, 8, 3, 4, 5, 9, 10, 11]) },
|
||||
),
|
||||
("TSIntersectionType", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("AssignmentPattern", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("JSXMemberExpression", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("TSOptionalType", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("ExpressionStatement", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSNamedTupleMember", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("JSDocUnknownType", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("TSTupleType", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSBooleanKeyword", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("DebuggerStatement", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("TSTypeParameter", StructDetails { field_order: Some(&[1, 0, 5, 6, 7, 2, 3, 4]) }),
|
||||
("ObjectPattern", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("ImportSpecifier", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("Error", StructDetails { field_order: Some(&[4, 0, 1, 2, 3]) }),
|
||||
("Quantifier", StructDetails { field_order: Some(&[0, 1, 2, 4, 3]) }),
|
||||
("DynamicImport", StructDetails { field_order: None }),
|
||||
("StaticImport", StructDetails { field_order: None }),
|
||||
("TSNamespaceExportDeclaration", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("ArrayPattern", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("TSQualifiedName", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("FormalParameter", StructDetails { field_order: Some(&[1, 0, 6, 7, 8, 9, 2, 3, 4, 5]) }),
|
||||
("TSImportTypeQualifiedName", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("ConditionalExpression", StructDetails { field_order: Some(&[1, 0, 2, 3, 4]) }),
|
||||
("JSXNamespacedName", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("Hashbang", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("SequenceExpression", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("Comment", StructDetails { field_order: None }),
|
||||
("JSXOpeningElement", StructDetails { field_order: Some(&[1, 0, 2, 3, 4]) }),
|
||||
("TSSymbolKeyword", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("TSInterfaceDeclaration", StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 6, 7, 2]) }),
|
||||
("ObjectAssignmentTarget", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("TSIndexSignatureName", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("Modifiers", StructDetails { field_order: None }),
|
||||
("ObjectProperty", StructDetails { field_order: Some(&[1, 0, 2, 6, 7, 3, 4, 5]) }),
|
||||
("ErrorLabel", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("ImportExpression", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("CatchClause", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("TSImportType", StructDetails { field_order: Some(&[1, 0, 2, 3, 4, 5]) }),
|
||||
("TSTypeOperator", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("NamedReference", StructDetails { field_order: None }),
|
||||
("TaggedTemplateExpression", StructDetails { field_order: Some(&[1, 0, 2, 3, 4]) }),
|
||||
("TSModuleDeclaration", StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 6, 2]) }),
|
||||
("NumericLiteral", StructDetails { field_order: Some(&[1, 0, 4, 3, 2]) }),
|
||||
("EmptyStatement", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("LookAroundAssertion", StructDetails { field_order: Some(&[0, 2, 1]) }),
|
||||
("BindingProperty", StructDetails { field_order: Some(&[1, 0, 4, 5, 2, 3]) }),
|
||||
("WhileStatement", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("JSXIdentifier", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("JSXSpreadChild", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("Super", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("TSTypeAnnotation", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("LabelIdentifier", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("ClassStringDisjunction", StructDetails { field_order: Some(&[0, 2, 1]) }),
|
||||
("ImportNamespaceSpecifier", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("BindingIdentifier", StructDetails { field_order: Some(&[1, 0, 3, 2]) }),
|
||||
("TSEnumBody", StructDetails { field_order: Some(&[1, 0, 3, 2]) }),
|
||||
("ClassBody", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("StaticExport", StructDetails { field_order: None }),
|
||||
("FormalParameters", StructDetails { field_order: Some(&[1, 0, 2, 3, 4]) }),
|
||||
("ReturnStatement", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("BlockStatement", StructDetails { field_order: Some(&[1, 0, 3, 2]) }),
|
||||
("TSSatisfiesExpression", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("LogicalExpression", StructDetails { field_order: Some(&[1, 0, 3, 2, 4]) }),
|
||||
("CallExpression", StructDetails { field_order: Some(&[1, 0, 4, 5, 6, 2, 3]) }),
|
||||
("FixedSizeAllocatorMetadata", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
(
|
||||
"ArrowFunctionExpression",
|
||||
StructDetails { field_order: Some(&[1, 0, 7, 8, 3, 4, 5, 6, 2, 9, 10]) },
|
||||
),
|
||||
("Alternative", StructDetails { field_order: None }),
|
||||
("TSArrayType", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSLiteralType", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("Program", StructDetails { field_order: Some(&[1, 0, 8, 3, 4, 5, 6, 7, 2]) }),
|
||||
("TSObjectKeyword", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("TSConditionalType", StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 6, 2]) }),
|
||||
("TSExternalModuleReference", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSMappedType", StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 6, 7, 8, 2]) }),
|
||||
("PrivateFieldExpression", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("ExportNamedDeclaration", StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 2, 6]) }),
|
||||
("Directive", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("TryStatement", StructDetails { field_order: Some(&[1, 0, 2, 3, 4]) }),
|
||||
("AwaitExpression", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("StaticBlock", StructDetails { field_order: Some(&[1, 0, 3, 2]) }),
|
||||
("TSTypeAliasDeclaration", StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 6, 2]) }),
|
||||
("VariableDeclaration", StructDetails { field_order: Some(&[1, 0, 2, 4, 3]) }),
|
||||
("TSExportAssignment", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("JSDocNonNullableType", StructDetails { field_order: Some(&[1, 0, 3, 2]) }),
|
||||
("FixedSizeAllocatorMetadata", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSNonNullExpression", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("ThisExpression", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("TSBigIntKeyword", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("RawTransferData", StructDetails { field_order: None }),
|
||||
("CharacterClassRange", StructDetails { field_order: None }),
|
||||
("TSTypeReference", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("JSXOpeningFragment", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("AssignmentExpression", StructDetails { field_order: Some(&[1, 0, 2, 3, 4]) }),
|
||||
("ComputedMemberExpression", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("TSEnumMember", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("UnicodePropertyEscape", StructDetails { field_order: Some(&[0, 3, 4, 1, 2]) }),
|
||||
("CharacterClassEscape", StructDetails { field_order: None }),
|
||||
("ParenthesizedExpression", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSAnyKeyword", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("TSThisParameter", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("TSTypeParameterDeclaration", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("FormalParameterRest", StructDetails { field_order: Some(&[1, 0, 2, 3, 4]) }),
|
||||
("RegExpPattern", StructDetails { field_order: None }),
|
||||
("JSXClosingElement", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("LabeledStatement", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("IdentifierName", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSThisType", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("Elision", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("BinaryExpression", StructDetails { field_order: Some(&[1, 0, 3, 2, 4]) }),
|
||||
("TSNamespaceExportDeclaration", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("BooleanLiteral", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("NewExpression", StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 2]) }),
|
||||
("TSVoidKeyword", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("JSXClosingFragment", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("JSDocNonNullableType", StructDetails { field_order: Some(&[1, 0, 3, 2]) }),
|
||||
("JSXSpreadAttribute", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("BreakStatement", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("ReferenceId", StructDetails { field_order: None }),
|
||||
("TSNeverKeyword", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("SpreadElement", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSArrayType", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("Alternative", StructDetails { field_order: None }),
|
||||
("ImportDefaultSpecifier", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("ImportAttribute", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("RegExpLiteral", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("Character", StructDetails { field_order: Some(&[0, 2, 1]) }),
|
||||
("JSXEmptyExpression", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("WithStatement", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("BigIntLiteral", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("RawTransferMetadata2", StructDetails { field_order: Some(&[0, 3, 4, 5, 1, 2]) }),
|
||||
("ChainExpression", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("CapturingGroup", StructDetails { field_order: None }),
|
||||
("ExportEntry", StructDetails { field_order: Some(&[1, 0, 2, 3, 4, 5, 6]) }),
|
||||
("MetaProperty", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("TSUnionType", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("RegExpFlags", StructDetails { field_order: None }),
|
||||
("AwaitExpression", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("ForStatement", StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 6, 2]) }),
|
||||
("DoWhileStatement", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("TSTypeQuery", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("ThrowStatement", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("IgnoreGroup", StructDetails { field_order: None }),
|
||||
("SymbolId", StructDetails { field_order: None }),
|
||||
("Disjunction", StructDetails { field_order: None }),
|
||||
("TSExportAssignment", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("ArrayExpression", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSPropertySignature", StructDetails { field_order: Some(&[1, 0, 2, 3, 4, 5, 6]) }),
|
||||
("ArrayAssignmentTarget", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("TSTypePredicate", StructDetails { field_order: Some(&[1, 0, 3, 2, 4]) }),
|
||||
("TSUndefinedKeyword", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("WithClause", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("Class", StructDetails { field_order: Some(&[1, 0, 10, 3, 4, 5, 6, 7, 8, 9, 11, 12, 2]) }),
|
||||
(
|
||||
"TSMethodSignature",
|
||||
StructDetails { field_order: Some(&[1, 0, 3, 8, 9, 10, 4, 5, 6, 7, 2]) },
|
||||
),
|
||||
("TryStatement", StructDetails { field_order: Some(&[1, 0, 2, 3, 4]) }),
|
||||
("TSTemplateLiteralType", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("I32Dummy", StructDetails { field_order: None }),
|
||||
(
|
||||
"TSConstructSignatureDeclaration",
|
||||
StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 2]) },
|
||||
),
|
||||
("FormalParameters", StructDetails { field_order: Some(&[1, 0, 2, 3, 4]) }),
|
||||
("PrivateIdentifier", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("ExportSpecifier", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("JSXElement", StructDetails { field_order: Some(&[1, 0, 2, 3, 4]) }),
|
||||
("ContinueStatement", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("AssignmentTargetPropertyIdentifier", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("TSTypeAssertion", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("TSRestType", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("NullLiteral", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("SwitchCase", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("RegExp", StructDetails { field_order: None }),
|
||||
("TSModuleBlock", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("StaticMemberExpression", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("CatchParameter", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("BooleanLiteral", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSInterfaceHeritage", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
(
|
||||
"Function",
|
||||
StructDetails {
|
||||
field_order: Some(&[1, 0, 9, 3, 10, 11, 12, 4, 5, 6, 7, 8, 2, 13, 14]),
|
||||
},
|
||||
),
|
||||
("TSNullKeyword", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("Elision", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("TSIndexSignature", StructDetails { field_order: Some(&[1, 0, 4, 5, 2, 3]) }),
|
||||
("TSIndexSignatureName", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("Super", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("Quantifier", StructDetails { field_order: Some(&[0, 1, 2, 4, 3]) }),
|
||||
("ObjectPattern", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("DynamicImport", StructDetails { field_order: None }),
|
||||
("TSBooleanKeyword", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("TSParenthesizedType", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TemplateElement", StructDetails { field_order: Some(&[1, 0, 4, 2, 3]) }),
|
||||
("ExportNamedDeclaration", StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 2, 6]) }),
|
||||
("AssignmentTargetWithDefault", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("TSInferType", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("NameSpan", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("ComputedMemberExpression", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("YieldExpression", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("TSTypeAnnotation", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("JSXMemberExpression", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("TSImportEqualsDeclaration", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("TSVoidKeyword", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("SequenceExpression", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("ExportSpecifier", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("TSTypeParameterDeclaration", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("BindingIdentifier", StructDetails { field_order: Some(&[1, 0, 3, 2]) }),
|
||||
("JSXClosingElement", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSNullKeyword", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("TSUnknownKeyword", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("ImportDeclaration", StructDetails { field_order: Some(&[1, 0, 4, 5, 2, 6, 3]) }),
|
||||
("SourceType", StructDetails { field_order: None }),
|
||||
("TSIndexedAccessType", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
(
|
||||
"AccessorProperty",
|
||||
StructDetails { field_order: Some(&[1, 0, 2, 6, 7, 8, 9, 3, 4, 5, 10, 11]) },
|
||||
),
|
||||
("TSAsExpression", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("Modifier", StructDetails { field_order: None }),
|
||||
("IfStatement", StructDetails { field_order: Some(&[1, 0, 2, 3, 4]) }),
|
||||
("JSDocNullableType", StructDetails { field_order: Some(&[1, 0, 3, 2]) }),
|
||||
("EcmaScriptModule", StructDetails { field_order: Some(&[4, 0, 1, 2, 3]) }),
|
||||
("TSStringKeyword", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("TSInterfaceBody", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSNumberKeyword", StructDetails { field_order: Some(&[1, 0]) }),
|
||||
("VariableDeclaration", StructDetails { field_order: Some(&[1, 0, 2, 4, 3]) }),
|
||||
("TemplateLiteral", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("TSFunctionType", StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 6, 2]) }),
|
||||
("CommentNodeId", StructDetails { field_order: None }),
|
||||
("TSExternalModuleReference", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSInstantiationExpression", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("ExpressionStatement", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSIndexSignature", StructDetails { field_order: Some(&[1, 0, 4, 5, 2, 3]) }),
|
||||
("FunctionBody", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("VariableDeclarator", StructDetails { field_order: Some(&[1, 0, 2, 4, 5, 6, 3]) }),
|
||||
("YieldExpression", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("CharacterClass", StructDetails { field_order: Some(&[0, 2, 3, 4, 1]) }),
|
||||
("JSXIdentifier", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSTypeParameterInstantiation", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("RawTransferMetadata", StructDetails { field_order: Some(&[0, 3, 4, 5, 1, 2]) }),
|
||||
("StringLiteral", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("UpdateExpression", StructDetails { field_order: Some(&[1, 0, 2, 3, 4]) }),
|
||||
("Dot", StructDetails { field_order: None }),
|
||||
("BoundaryAssertion", StructDetails { field_order: None }),
|
||||
("JSXExpressionContainer", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("ScopeId", StructDetails { field_order: None }),
|
||||
("TSEnumDeclaration", StructDetails { field_order: Some(&[1, 0, 4, 5, 2, 3]) }),
|
||||
("Span", StructDetails { field_order: Some(&[1, 2, 0]) }),
|
||||
("NonMaxU32", StructDetails { field_order: None }),
|
||||
("JSXText", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("ForOfStatement", StructDetails { field_order: Some(&[1, 0, 6, 3, 4, 5, 2]) }),
|
||||
("UnaryExpression", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("ClassString", StructDetails { field_order: Some(&[0, 2, 1]) }),
|
||||
("JSXFragment", StructDetails { field_order: Some(&[1, 0, 2, 3, 4]) }),
|
||||
("IndexedReference", StructDetails { field_order: None }),
|
||||
("TSNonNullExpression", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("TSConstructorType", StructDetails { field_order: Some(&[1, 0, 6, 3, 4, 5, 2]) }),
|
||||
("AssignmentTargetPropertyProperty", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("TSCallSignatureDeclaration", StructDetails { field_order: Some(&[1, 0, 3, 4, 5, 6, 2]) }),
|
||||
("SwitchStatement", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("TSImportEqualsDeclaration", StructDetails { field_order: Some(&[1, 0, 3, 4, 2]) }),
|
||||
("CommentNewlines", StructDetails { field_order: None }),
|
||||
("ImportEntry", StructDetails { field_order: None }),
|
||||
("JSXAttribute", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
("ObjectExpression", StructDetails { field_order: Some(&[1, 0, 2]) }),
|
||||
("Pattern", StructDetails { field_order: None }),
|
||||
("TSInstantiationExpression", StructDetails { field_order: Some(&[1, 0, 2, 3]) }),
|
||||
],
|
||||
};
|
||||
@@ -34,6 +34,10 @@ const _: () = {
|
||||
assert!(align_of::<Span>() == 8);
|
||||
assert!(offset_of!(Span, start) == 0);
|
||||
assert!(offset_of!(Span, end) == 4);
|
||||
|
||||
// Padding: 0 bytes
|
||||
assert!(size_of::<I32Dummy>() == 4);
|
||||
assert!(align_of::<I32Dummy>() == 4);
|
||||
};
|
||||
|
||||
#[cfg(target_pointer_width = "32")]
|
||||
@@ -63,6 +67,10 @@ const _: () = if cfg!(target_family = "wasm") || align_of::<u64>() == 8 {
|
||||
assert!(align_of::<Span>() == 4);
|
||||
assert!(offset_of!(Span, start) == 0);
|
||||
assert!(offset_of!(Span, end) == 4);
|
||||
|
||||
// Padding: 0 bytes
|
||||
assert!(size_of::<I32Dummy>() == 4);
|
||||
assert!(align_of::<I32Dummy>() == 4);
|
||||
};
|
||||
|
||||
#[cfg(not(any(target_pointer_width = "64", target_pointer_width = "32")))]
|
||||
|
||||
@@ -32,8 +32,8 @@ impl ESTree for ModuleKind {
|
||||
impl ESTree for Span {
|
||||
fn serialize<S: Serializer>(&self, serializer: S) {
|
||||
let mut state = serializer.serialize_struct();
|
||||
state.serialize_field("start", &self.start);
|
||||
state.serialize_field("end", &self.end);
|
||||
state.serialize_field("start", &crate::serialize::SpanStart(self));
|
||||
state.serialize_field("end", &crate::serialize::SpanEnd(self));
|
||||
state.end();
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,8 @@
|
||||
|
||||
mod cmp;
|
||||
mod edit_distance;
|
||||
#[cfg(feature = "serialize")]
|
||||
mod serialize;
|
||||
mod source_type;
|
||||
mod span;
|
||||
|
||||
@@ -20,6 +22,10 @@ pub use source_type::{
|
||||
};
|
||||
pub use span::{GetSpan, GetSpanMut, SPAN, Span};
|
||||
|
||||
// Only here to make it available in `generated/assert_layouts` module
|
||||
#[cfg(debug_assertions)]
|
||||
use span::I32Dummy;
|
||||
|
||||
mod generated {
|
||||
#[cfg(debug_assertions)]
|
||||
mod assert_layouts;
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
use oxc_ast_macros::ast_meta;
|
||||
use oxc_estree::{ESTree, Serializer};
|
||||
|
||||
use crate::Span;
|
||||
|
||||
/// Deserialized as `i32` in raw transfer.
|
||||
///
|
||||
/// Source text is limited to 1 GiB in raw transfer, so `i32` can represent full range of possible values,
|
||||
/// and V8 handles `i32`s better as they can be stored inline in structs as SMIs.
|
||||
#[ast_meta]
|
||||
#[estree(ts_type = "number", raw_deser = "DESER[i32](POS_OFFSET.start)", raw_deser_inline)]
|
||||
pub struct SpanStart<'b>(pub &'b Span);
|
||||
|
||||
impl ESTree for SpanStart<'_> {
|
||||
#[inline]
|
||||
fn serialize<S: Serializer>(&self, serializer: S) {
|
||||
self.0.start.serialize(serializer);
|
||||
}
|
||||
}
|
||||
|
||||
/// Deserialized as `i32` in raw transfer.
|
||||
///
|
||||
/// Source text is limited to 1 GiB in raw transfer, so `i32` can represent full range of possible values,
|
||||
/// and V8 handles `i32`s better as they can be stored inline in structs as SMIs.
|
||||
#[ast_meta]
|
||||
#[estree(ts_type = "number", raw_deser = "DESER[i32](POS_OFFSET.end)", raw_deser_inline)]
|
||||
pub struct SpanEnd<'b>(pub &'b Span);
|
||||
|
||||
impl ESTree for SpanEnd<'_> {
|
||||
#[inline]
|
||||
fn serialize<S: Serializer>(&self, serializer: S) {
|
||||
self.0.end.serialize(serializer);
|
||||
}
|
||||
}
|
||||
@@ -89,9 +89,11 @@ pub const SPAN: Span = Span::new(0, 0);
|
||||
)]
|
||||
pub struct Span {
|
||||
/// The zero-based start offset of the span
|
||||
#[estree(via = "SpanStart")]
|
||||
pub start: u32,
|
||||
/// The zero-based end offset of the span. This may be equal to [`start`](Span::start) if
|
||||
/// the span is empty, but should not be less than it.
|
||||
#[estree(via = "SpanEnd")]
|
||||
pub end: u32,
|
||||
/// Align `Span` on 8 on 64-bit platforms
|
||||
#[estree(skip)]
|
||||
@@ -678,6 +680,11 @@ impl PointerAlign {
|
||||
}
|
||||
}
|
||||
|
||||
/// Dummy struct to ensure `i32` is in AST schema, so it can be used by `raw_deser` implementations for `Span` fields.
|
||||
#[cfg_attr(not(debug_assertions), expect(dead_code))]
|
||||
#[ast]
|
||||
pub struct I32Dummy(i32);
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use super::Span;
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -13783,6 +13783,10 @@ function constructOptionU64(pos, ast) {
|
||||
return constructU64(pos + 8, ast);
|
||||
}
|
||||
|
||||
function constructI32(pos, ast) {
|
||||
return ast.buffer.int32[pos >> 2];
|
||||
}
|
||||
|
||||
function constructOptionNameSpan(pos, ast) {
|
||||
if (ast.buffer.uint32[(pos + 8) >> 2] === 0 && ast.buffer.uint32[(pos + 12) >> 2] === 0)
|
||||
return null;
|
||||
|
||||
@@ -929,6 +929,7 @@ fn generate_primitive(primitive_def: &PrimitiveDef, code: &mut String, schema: &
|
||||
"u8" => "return uint8[pos];",
|
||||
// "u16" => "return uint16[pos >> 1];",
|
||||
"u32" => "return uint32[pos >> 2];",
|
||||
"i32" => "return int32[pos >> 2];",
|
||||
// Will be approximate if larger than `Number.MAX_SAFE_INTEGER`
|
||||
#[rustfmt::skip]
|
||||
"u64" => "
|
||||
|
||||
@@ -905,6 +905,7 @@ fn generate_primitive(primitive_def: &PrimitiveDef, state: &mut State, schema: &
|
||||
"u8" => "return ast.buffer[pos];",
|
||||
// "u16" => "return uint16[pos >> 1];",
|
||||
"u32" => "return ast.buffer.uint32[pos >> 2];",
|
||||
"i32" => "return ast.buffer.int32[pos >> 2];",
|
||||
// Will be approximate if larger than `Number.MAX_SAFE_INTEGER`
|
||||
#[rustfmt::skip]
|
||||
"u64" => "
|
||||
|
||||
Reference in new issue
Block a user