UNPKG

oxc-parser

Version:
1,976 lines (1,653 loc) 337 kB
// Auto-generated code, DO NOT EDIT DIRECTLY! // To edit this generated file you have to edit `tasks/ast_tools/src/generators/raw_transfer_lazy.rs`. import { constructorError, TOKEN } from "../../raw-transfer/lazy-common.js"; import { NodeArray } from "../../raw-transfer/node-array.js"; const textDecoder = new TextDecoder("utf-8", { ignoreBOM: true }), decodeStr = textDecoder.decode.bind(textDecoder), { fromCodePoint } = String, inspectSymbol = Symbol.for("nodejs.util.inspect.custom"); export class Program { type = "Program"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast, $body: void 0 }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } get sourceType() { const internal = this.#internal; return new SourceType(internal.pos + 136, internal.ast); } get hashbang() { const internal = this.#internal; return constructOptionHashbang(internal.pos + 56, internal.ast); } get body() { const internal = this.#internal, cached = internal.$body; if (cached !== void 0) return cached; return (internal.$body = constructVecStatement(internal.pos + 112, internal.ast)); } toJSON() { return { type: "Program", start: this.start, end: this.end, sourceType: this.sourceType, hashbang: this.hashbang, body: this.body, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugProgram.prototype); } } const DebugProgram = class Program {}; function constructExpression(pos, ast) { switch (ast.buffer[pos]) { case 0: return constructBoxBooleanLiteral(pos + 8, ast); case 1: return constructBoxNullLiteral(pos + 8, ast); case 2: return constructBoxNumericLiteral(pos + 8, ast); case 3: return constructBoxBigIntLiteral(pos + 8, ast); case 4: return constructBoxRegExpLiteral(pos + 8, ast); case 5: return constructBoxStringLiteral(pos + 8, ast); case 6: return constructBoxTemplateLiteral(pos + 8, ast); case 7: return constructBoxIdentifierReference(pos + 8, ast); case 8: return constructBoxMetaProperty(pos + 8, ast); case 9: return constructBoxSuper(pos + 8, ast); case 10: return constructBoxArrayExpression(pos + 8, ast); case 11: return constructBoxArrowFunctionExpression(pos + 8, ast); case 12: return constructBoxAssignmentExpression(pos + 8, ast); case 13: return constructBoxAwaitExpression(pos + 8, ast); case 14: return constructBoxBinaryExpression(pos + 8, ast); case 15: return constructBoxCallExpression(pos + 8, ast); case 16: return constructBoxChainExpression(pos + 8, ast); case 17: return constructBoxClass(pos + 8, ast); case 18: return constructBoxConditionalExpression(pos + 8, ast); case 19: return constructBoxFunction(pos + 8, ast); case 20: return constructBoxImportExpression(pos + 8, ast); case 21: return constructBoxLogicalExpression(pos + 8, ast); case 22: return constructBoxNewExpression(pos + 8, ast); case 23: return constructBoxObjectExpression(pos + 8, ast); case 24: return constructBoxParenthesizedExpression(pos + 8, ast); case 25: return constructBoxSequenceExpression(pos + 8, ast); case 26: return constructBoxTaggedTemplateExpression(pos + 8, ast); case 27: return constructBoxThisExpression(pos + 8, ast); case 28: return constructBoxUnaryExpression(pos + 8, ast); case 29: return constructBoxUpdateExpression(pos + 8, ast); case 30: return constructBoxYieldExpression(pos + 8, ast); case 31: return constructBoxPrivateInExpression(pos + 8, ast); case 32: return constructBoxJSXElement(pos + 8, ast); case 33: return constructBoxJSXFragment(pos + 8, ast); case 34: return constructBoxTSAsExpression(pos + 8, ast); case 35: return constructBoxTSSatisfiesExpression(pos + 8, ast); case 36: return constructBoxTSTypeAssertion(pos + 8, ast); case 37: return constructBoxTSNonNullExpression(pos + 8, ast); case 38: return constructBoxTSInstantiationExpression(pos + 8, ast); case 39: return constructBoxV8IntrinsicExpression(pos + 8, ast); case 48: return constructBoxComputedMemberExpression(pos + 8, ast); case 49: return constructBoxStaticMemberExpression(pos + 8, ast); case 50: return constructBoxPrivateFieldExpression(pos + 8, ast); default: throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for Expression`); } } export class IdentifierName { type = "IdentifierName"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast, $name: void 0 }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } get name() { const internal = this.#internal, cached = internal.$name; if (cached !== void 0) return cached; return (internal.$name = constructStr(internal.pos + 16, internal.ast)); } toJSON() { return { type: "IdentifierName", start: this.start, end: this.end, name: this.name, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugIdentifierName.prototype); } } const DebugIdentifierName = class IdentifierName {}; export class IdentifierReference { type = "IdentifierReference"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast, $name: void 0 }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } get name() { const internal = this.#internal, cached = internal.$name; if (cached !== void 0) return cached; return (internal.$name = constructStr(internal.pos + 16, internal.ast)); } toJSON() { return { type: "IdentifierReference", start: this.start, end: this.end, name: this.name, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugIdentifierReference.prototype); } } const DebugIdentifierReference = class IdentifierReference {}; export class BindingIdentifier { type = "BindingIdentifier"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast, $name: void 0 }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } get name() { const internal = this.#internal, cached = internal.$name; if (cached !== void 0) return cached; return (internal.$name = constructStr(internal.pos + 16, internal.ast)); } toJSON() { return { type: "BindingIdentifier", start: this.start, end: this.end, name: this.name, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugBindingIdentifier.prototype); } } const DebugBindingIdentifier = class BindingIdentifier {}; export class LabelIdentifier { type = "LabelIdentifier"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast, $name: void 0 }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } get name() { const internal = this.#internal, cached = internal.$name; if (cached !== void 0) return cached; return (internal.$name = constructStr(internal.pos + 16, internal.ast)); } toJSON() { return { type: "LabelIdentifier", start: this.start, end: this.end, name: this.name, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugLabelIdentifier.prototype); } } const DebugLabelIdentifier = class LabelIdentifier {}; export class ThisExpression { type = "ThisExpression"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } toJSON() { return { type: "ThisExpression", start: this.start, end: this.end, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugThisExpression.prototype); } } const DebugThisExpression = class ThisExpression {}; export class ArrayExpression { type = "ArrayExpression"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast, $elements: void 0 }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } get elements() { const internal = this.#internal, cached = internal.$elements; if (cached !== void 0) return cached; return (internal.$elements = constructVecArrayExpressionElement( internal.pos + 16, internal.ast, )); } toJSON() { return { type: "ArrayExpression", start: this.start, end: this.end, elements: this.elements, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugArrayExpression.prototype); } } const DebugArrayExpression = class ArrayExpression {}; function constructArrayExpressionElement(pos, ast) { switch (ast.buffer[pos]) { case 0: return constructBoxBooleanLiteral(pos + 8, ast); case 1: return constructBoxNullLiteral(pos + 8, ast); case 2: return constructBoxNumericLiteral(pos + 8, ast); case 3: return constructBoxBigIntLiteral(pos + 8, ast); case 4: return constructBoxRegExpLiteral(pos + 8, ast); case 5: return constructBoxStringLiteral(pos + 8, ast); case 6: return constructBoxTemplateLiteral(pos + 8, ast); case 7: return constructBoxIdentifierReference(pos + 8, ast); case 8: return constructBoxMetaProperty(pos + 8, ast); case 9: return constructBoxSuper(pos + 8, ast); case 10: return constructBoxArrayExpression(pos + 8, ast); case 11: return constructBoxArrowFunctionExpression(pos + 8, ast); case 12: return constructBoxAssignmentExpression(pos + 8, ast); case 13: return constructBoxAwaitExpression(pos + 8, ast); case 14: return constructBoxBinaryExpression(pos + 8, ast); case 15: return constructBoxCallExpression(pos + 8, ast); case 16: return constructBoxChainExpression(pos + 8, ast); case 17: return constructBoxClass(pos + 8, ast); case 18: return constructBoxConditionalExpression(pos + 8, ast); case 19: return constructBoxFunction(pos + 8, ast); case 20: return constructBoxImportExpression(pos + 8, ast); case 21: return constructBoxLogicalExpression(pos + 8, ast); case 22: return constructBoxNewExpression(pos + 8, ast); case 23: return constructBoxObjectExpression(pos + 8, ast); case 24: return constructBoxParenthesizedExpression(pos + 8, ast); case 25: return constructBoxSequenceExpression(pos + 8, ast); case 26: return constructBoxTaggedTemplateExpression(pos + 8, ast); case 27: return constructBoxThisExpression(pos + 8, ast); case 28: return constructBoxUnaryExpression(pos + 8, ast); case 29: return constructBoxUpdateExpression(pos + 8, ast); case 30: return constructBoxYieldExpression(pos + 8, ast); case 31: return constructBoxPrivateInExpression(pos + 8, ast); case 32: return constructBoxJSXElement(pos + 8, ast); case 33: return constructBoxJSXFragment(pos + 8, ast); case 34: return constructBoxTSAsExpression(pos + 8, ast); case 35: return constructBoxTSSatisfiesExpression(pos + 8, ast); case 36: return constructBoxTSTypeAssertion(pos + 8, ast); case 37: return constructBoxTSNonNullExpression(pos + 8, ast); case 38: return constructBoxTSInstantiationExpression(pos + 8, ast); case 39: return constructBoxV8IntrinsicExpression(pos + 8, ast); case 48: return constructBoxComputedMemberExpression(pos + 8, ast); case 49: return constructBoxStaticMemberExpression(pos + 8, ast); case 50: return constructBoxPrivateFieldExpression(pos + 8, ast); case 64: return constructBoxSpreadElement(pos + 8, ast); case 65: return constructBoxElision(pos + 8, ast); default: throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ArrayExpressionElement`); } } export class Elision { type = "Elision"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } toJSON() { return { type: "Elision", start: this.start, end: this.end, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugElision.prototype); } } const DebugElision = class Elision {}; export class ObjectExpression { type = "ObjectExpression"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast, $properties: void 0 }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } get properties() { const internal = this.#internal, cached = internal.$properties; if (cached !== void 0) return cached; return (internal.$properties = constructVecObjectPropertyKind(internal.pos + 16, internal.ast)); } toJSON() { return { type: "ObjectExpression", start: this.start, end: this.end, properties: this.properties, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugObjectExpression.prototype); } } const DebugObjectExpression = class ObjectExpression {}; function constructObjectPropertyKind(pos, ast) { switch (ast.buffer[pos]) { case 0: return constructBoxObjectProperty(pos + 8, ast); case 1: return constructBoxSpreadElement(pos + 8, ast); default: throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ObjectPropertyKind`); } } export class ObjectProperty { type = "ObjectProperty"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } get kind() { const internal = this.#internal; return constructPropertyKind(internal.pos + 12, internal.ast); } get key() { const internal = this.#internal; return constructPropertyKey(internal.pos + 16, internal.ast); } get value() { const internal = this.#internal; return constructExpression(internal.pos + 32, internal.ast); } get method() { const internal = this.#internal; return constructBool(internal.pos + 13, internal.ast); } get shorthand() { const internal = this.#internal; return constructBool(internal.pos + 14, internal.ast); } get computed() { const internal = this.#internal; return constructBool(internal.pos + 15, internal.ast); } toJSON() { return { type: "ObjectProperty", start: this.start, end: this.end, kind: this.kind, key: this.key, value: this.value, method: this.method, shorthand: this.shorthand, computed: this.computed, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugObjectProperty.prototype); } } const DebugObjectProperty = class ObjectProperty {}; function constructPropertyKey(pos, ast) { switch (ast.buffer[pos]) { case 0: return constructBoxBooleanLiteral(pos + 8, ast); case 1: return constructBoxNullLiteral(pos + 8, ast); case 2: return constructBoxNumericLiteral(pos + 8, ast); case 3: return constructBoxBigIntLiteral(pos + 8, ast); case 4: return constructBoxRegExpLiteral(pos + 8, ast); case 5: return constructBoxStringLiteral(pos + 8, ast); case 6: return constructBoxTemplateLiteral(pos + 8, ast); case 7: return constructBoxIdentifierReference(pos + 8, ast); case 8: return constructBoxMetaProperty(pos + 8, ast); case 9: return constructBoxSuper(pos + 8, ast); case 10: return constructBoxArrayExpression(pos + 8, ast); case 11: return constructBoxArrowFunctionExpression(pos + 8, ast); case 12: return constructBoxAssignmentExpression(pos + 8, ast); case 13: return constructBoxAwaitExpression(pos + 8, ast); case 14: return constructBoxBinaryExpression(pos + 8, ast); case 15: return constructBoxCallExpression(pos + 8, ast); case 16: return constructBoxChainExpression(pos + 8, ast); case 17: return constructBoxClass(pos + 8, ast); case 18: return constructBoxConditionalExpression(pos + 8, ast); case 19: return constructBoxFunction(pos + 8, ast); case 20: return constructBoxImportExpression(pos + 8, ast); case 21: return constructBoxLogicalExpression(pos + 8, ast); case 22: return constructBoxNewExpression(pos + 8, ast); case 23: return constructBoxObjectExpression(pos + 8, ast); case 24: return constructBoxParenthesizedExpression(pos + 8, ast); case 25: return constructBoxSequenceExpression(pos + 8, ast); case 26: return constructBoxTaggedTemplateExpression(pos + 8, ast); case 27: return constructBoxThisExpression(pos + 8, ast); case 28: return constructBoxUnaryExpression(pos + 8, ast); case 29: return constructBoxUpdateExpression(pos + 8, ast); case 30: return constructBoxYieldExpression(pos + 8, ast); case 31: return constructBoxPrivateInExpression(pos + 8, ast); case 32: return constructBoxJSXElement(pos + 8, ast); case 33: return constructBoxJSXFragment(pos + 8, ast); case 34: return constructBoxTSAsExpression(pos + 8, ast); case 35: return constructBoxTSSatisfiesExpression(pos + 8, ast); case 36: return constructBoxTSTypeAssertion(pos + 8, ast); case 37: return constructBoxTSNonNullExpression(pos + 8, ast); case 38: return constructBoxTSInstantiationExpression(pos + 8, ast); case 39: return constructBoxV8IntrinsicExpression(pos + 8, ast); case 48: return constructBoxComputedMemberExpression(pos + 8, ast); case 49: return constructBoxStaticMemberExpression(pos + 8, ast); case 50: return constructBoxPrivateFieldExpression(pos + 8, ast); case 64: return constructBoxIdentifierName(pos + 8, ast); case 65: return constructBoxPrivateIdentifier(pos + 8, ast); default: throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for PropertyKey`); } } function constructPropertyKind(pos, ast) { switch (ast.buffer[pos]) { case 0: return "init"; case 1: return "get"; case 2: return "set"; default: throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for PropertyKind`); } } export class TemplateLiteral { type = "TemplateLiteral"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast, $quasis: void 0, $expressions: void 0 }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } get quasis() { const internal = this.#internal, cached = internal.$quasis; if (cached !== void 0) return cached; return (internal.$quasis = constructVecTemplateElement(internal.pos + 16, internal.ast)); } get expressions() { const internal = this.#internal, cached = internal.$expressions; if (cached !== void 0) return cached; return (internal.$expressions = constructVecExpression(internal.pos + 40, internal.ast)); } toJSON() { return { type: "TemplateLiteral", start: this.start, end: this.end, quasis: this.quasis, expressions: this.expressions, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugTemplateLiteral.prototype); } } const DebugTemplateLiteral = class TemplateLiteral {}; export class TaggedTemplateExpression { type = "TaggedTemplateExpression"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } get tag() { const internal = this.#internal; return constructExpression(internal.pos + 16, internal.ast); } get typeArguments() { const internal = this.#internal; return constructOptionBoxTSTypeParameterInstantiation(internal.pos + 32, internal.ast); } get quasi() { const internal = this.#internal; return new TemplateLiteral(internal.pos + 40, internal.ast); } toJSON() { return { type: "TaggedTemplateExpression", start: this.start, end: this.end, tag: this.tag, typeArguments: this.typeArguments, quasi: this.quasi, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugTaggedTemplateExpression.prototype); } } const DebugTaggedTemplateExpression = class TaggedTemplateExpression {}; export class TemplateElement { type = "TemplateElement"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } get value() { const internal = this.#internal; return new TemplateElementValue(internal.pos + 16, internal.ast); } get tail() { const internal = this.#internal; return constructBool(internal.pos + 12, internal.ast); } toJSON() { return { type: "TemplateElement", start: this.start, end: this.end, value: this.value, tail: this.tail, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugTemplateElement.prototype); } } const DebugTemplateElement = class TemplateElement {}; export class TemplateElementValue { #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast, $raw: void 0, $cooked: void 0 }; nodes.set(pos, this); } get raw() { const internal = this.#internal, cached = internal.$raw; if (cached !== void 0) return cached; return (internal.$raw = constructStr(internal.pos, internal.ast)); } get cooked() { const internal = this.#internal, cached = internal.$cooked; if (cached !== void 0) return cached; return (internal.$cooked = constructOptionStr(internal.pos + 16, internal.ast)); } toJSON() { return { raw: this.raw, cooked: this.cooked, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugTemplateElementValue.prototype); } } const DebugTemplateElementValue = class TemplateElementValue {}; function constructMemberExpression(pos, ast) { switch (ast.buffer[pos]) { case 48: return constructBoxComputedMemberExpression(pos + 8, ast); case 49: return constructBoxStaticMemberExpression(pos + 8, ast); case 50: return constructBoxPrivateFieldExpression(pos + 8, ast); default: throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for MemberExpression`); } } export class ComputedMemberExpression { type = "ComputedMemberExpression"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } get object() { const internal = this.#internal; return constructExpression(internal.pos + 16, internal.ast); } get property() { const internal = this.#internal; return constructExpression(internal.pos + 32, internal.ast); } get optional() { const internal = this.#internal; return constructBool(internal.pos + 12, internal.ast); } toJSON() { return { type: "ComputedMemberExpression", start: this.start, end: this.end, object: this.object, property: this.property, optional: this.optional, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugComputedMemberExpression.prototype); } } const DebugComputedMemberExpression = class ComputedMemberExpression {}; export class StaticMemberExpression { type = "StaticMemberExpression"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } get object() { const internal = this.#internal; return constructExpression(internal.pos + 16, internal.ast); } get property() { const internal = this.#internal; return new IdentifierName(internal.pos + 32, internal.ast); } get optional() { const internal = this.#internal; return constructBool(internal.pos + 12, internal.ast); } toJSON() { return { type: "StaticMemberExpression", start: this.start, end: this.end, object: this.object, property: this.property, optional: this.optional, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugStaticMemberExpression.prototype); } } const DebugStaticMemberExpression = class StaticMemberExpression {}; export class PrivateFieldExpression { type = "PrivateFieldExpression"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } get object() { const internal = this.#internal; return constructExpression(internal.pos + 16, internal.ast); } get property() { const internal = this.#internal; return new PrivateIdentifier(internal.pos + 32, internal.ast); } get optional() { const internal = this.#internal; return constructBool(internal.pos + 12, internal.ast); } toJSON() { return { type: "PrivateFieldExpression", start: this.start, end: this.end, object: this.object, property: this.property, optional: this.optional, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugPrivateFieldExpression.prototype); } } const DebugPrivateFieldExpression = class PrivateFieldExpression {}; export class CallExpression { type = "CallExpression"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast, $arguments: void 0 }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } get callee() { const internal = this.#internal; return constructExpression(internal.pos + 16, internal.ast); } get typeArguments() { const internal = this.#internal; return constructOptionBoxTSTypeParameterInstantiation(internal.pos + 32, internal.ast); } get arguments() { const internal = this.#internal, cached = internal.$arguments; if (cached !== void 0) return cached; return (internal.$arguments = constructVecArgument(internal.pos + 40, internal.ast)); } get optional() { const internal = this.#internal; return constructBool(internal.pos + 12, internal.ast); } toJSON() { return { type: "CallExpression", start: this.start, end: this.end, callee: this.callee, typeArguments: this.typeArguments, arguments: this.arguments, optional: this.optional, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugCallExpression.prototype); } } const DebugCallExpression = class CallExpression {}; export class NewExpression { type = "NewExpression"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast, $arguments: void 0 }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } get callee() { const internal = this.#internal; return constructExpression(internal.pos + 16, internal.ast); } get typeArguments() { const internal = this.#internal; return constructOptionBoxTSTypeParameterInstantiation(internal.pos + 32, internal.ast); } get arguments() { const internal = this.#internal, cached = internal.$arguments; if (cached !== void 0) return cached; return (internal.$arguments = constructVecArgument(internal.pos + 40, internal.ast)); } toJSON() { return { type: "NewExpression", start: this.start, end: this.end, callee: this.callee, typeArguments: this.typeArguments, arguments: this.arguments, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugNewExpression.prototype); } } const DebugNewExpression = class NewExpression {}; export class MetaProperty { type = "MetaProperty"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } get meta() { const internal = this.#internal; return new IdentifierName(internal.pos + 16, internal.ast); } get property() { const internal = this.#internal; return new IdentifierName(internal.pos + 48, internal.ast); } toJSON() { return { type: "MetaProperty", start: this.start, end: this.end, meta: this.meta, property: this.property, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugMetaProperty.prototype); } } const DebugMetaProperty = class MetaProperty {}; export class SpreadElement { type = "SpreadElement"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } get argument() { const internal = this.#internal; return constructExpression(internal.pos + 16, internal.ast); } toJSON() { return { type: "SpreadElement", start: this.start, end: this.end, argument: this.argument, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugSpreadElement.prototype); } } const DebugSpreadElement = class SpreadElement {}; function constructArgument(pos, ast) { switch (ast.buffer[pos]) { case 0: return constructBoxBooleanLiteral(pos + 8, ast); case 1: return constructBoxNullLiteral(pos + 8, ast); case 2: return constructBoxNumericLiteral(pos + 8, ast); case 3: return constructBoxBigIntLiteral(pos + 8, ast); case 4: return constructBoxRegExpLiteral(pos + 8, ast); case 5: return constructBoxStringLiteral(pos + 8, ast); case 6: return constructBoxTemplateLiteral(pos + 8, ast); case 7: return constructBoxIdentifierReference(pos + 8, ast); case 8: return constructBoxMetaProperty(pos + 8, ast); case 9: return constructBoxSuper(pos + 8, ast); case 10: return constructBoxArrayExpression(pos + 8, ast); case 11: return constructBoxArrowFunctionExpression(pos + 8, ast); case 12: return constructBoxAssignmentExpression(pos + 8, ast); case 13: return constructBoxAwaitExpression(pos + 8, ast); case 14: return constructBoxBinaryExpression(pos + 8, ast); case 15: return constructBoxCallExpression(pos + 8, ast); case 16: return constructBoxChainExpression(pos + 8, ast); case 17: return constructBoxClass(pos + 8, ast); case 18: return constructBoxConditionalExpression(pos + 8, ast); case 19: return constructBoxFunction(pos + 8, ast); case 20: return constructBoxImportExpression(pos + 8, ast); case 21: return constructBoxLogicalExpression(pos + 8, ast); case 22: return constructBoxNewExpression(pos + 8, ast); case 23: return constructBoxObjectExpression(pos + 8, ast); case 24: return constructBoxParenthesizedExpression(pos + 8, ast); case 25: return constructBoxSequenceExpression(pos + 8, ast); case 26: return constructBoxTaggedTemplateExpression(pos + 8, ast); case 27: return constructBoxThisExpression(pos + 8, ast); case 28: return constructBoxUnaryExpression(pos + 8, ast); case 29: return constructBoxUpdateExpression(pos + 8, ast); case 30: return constructBoxYieldExpression(pos + 8, ast); case 31: return constructBoxPrivateInExpression(pos + 8, ast); case 32: return constructBoxJSXElement(pos + 8, ast); case 33: return constructBoxJSXFragment(pos + 8, ast); case 34: return constructBoxTSAsExpression(pos + 8, ast); case 35: return constructBoxTSSatisfiesExpression(pos + 8, ast); case 36: return constructBoxTSTypeAssertion(pos + 8, ast); case 37: return constructBoxTSNonNullExpression(pos + 8, ast); case 38: return constructBoxTSInstantiationExpression(pos + 8, ast); case 39: return constructBoxV8IntrinsicExpression(pos + 8, ast); case 48: return constructBoxComputedMemberExpression(pos + 8, ast); case 49: return constructBoxStaticMemberExpression(pos + 8, ast); case 50: return constructBoxPrivateFieldExpression(pos + 8, ast); case 64: return constructBoxSpreadElement(pos + 8, ast); default: throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for Argument`); } } export class UpdateExpression { type = "UpdateExpression"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } get operator() { const internal = this.#internal; return constructUpdateOperator(internal.pos + 12, internal.ast); } get prefix() { const internal = this.#internal; return constructBool(internal.pos + 13, internal.ast); } get argument() { const internal = this.#internal; return constructSimpleAssignmentTarget(internal.pos + 16, internal.ast); } toJSON() { return { type: "UpdateExpression", start: this.start, end: this.end, operator: this.operator, prefix: this.prefix, argument: this.argument, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugUpdateExpression.prototype); } } const DebugUpdateExpression = class UpdateExpression {}; export class UnaryExpression { type = "UnaryExpression"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } get operator() { const internal = this.#internal; return constructUnaryOperator(internal.pos + 12, internal.ast); } get argument() { const internal = this.#internal; return constructExpression(internal.pos + 16, internal.ast); } toJSON() { return { type: "UnaryExpression", start: this.start, end: this.end, operator: this.operator, argument: this.argument, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugUnaryExpression.prototype); } } const DebugUnaryExpression = class UnaryExpression {}; export class BinaryExpression { type = "BinaryExpression"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } get left() { const internal = this.#internal; return constructExpression(internal.pos + 16, internal.ast); } get operator() { const internal = this.#internal; return constructBinaryOperator(internal.pos + 12, internal.ast); } get right() { const internal = this.#internal; return constructExpression(internal.pos + 32, internal.ast); } toJSON() { return { type: "BinaryExpression", start: this.start, end: this.end, left: this.left, operator: this.operator, right: this.right, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugBinaryExpression.prototype); } } const DebugBinaryExpression = class BinaryExpression {}; export class PrivateInExpression { type = "PrivateInExpression"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } get left() { const internal = this.#internal; return new PrivateIdentifier(internal.pos + 16, internal.ast); } get right() { const internal = this.#internal; return constructExpression(internal.pos + 48, internal.ast); } toJSON() { return { type: "PrivateInExpression", start: this.start, end: this.end, left: this.left, right: this.right, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugPrivateInExpression.prototype); } } const DebugPrivateInExpression = class PrivateInExpression {}; export class LogicalExpression { type = "LogicalExpression"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } get left() { const internal = this.#internal; return constructExpression(internal.pos + 16, internal.ast); } get operator() { const internal = this.#internal; return constructLogicalOperator(internal.pos + 12, internal.ast); } get right() { const internal = this.#internal; return constructExpression(internal.pos + 32, internal.ast); } toJSON() { return { type: "LogicalExpression", start: this.start, end: this.end, left: this.left, operator: this.operator, right: this.right, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugLogicalExpression.prototype); } } const DebugLogicalExpression = class LogicalExpression {}; export class ConditionalExpression { type = "ConditionalExpression"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } get test() { const internal = this.#internal; return constructExpression(internal.pos + 16, internal.ast); } get consequent() { const internal = this.#internal; return constructExpression(internal.pos + 32, internal.ast); } get alternate() { const internal = this.#internal; return constructExpression(internal.pos + 48, internal.ast); } toJSON() { return { type: "ConditionalExpression", start: this.start, end: this.end, test: this.test, consequent: this.consequent, alternate: this.alternate, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugConditionalExpression.prototype); } } const DebugConditionalExpression = class ConditionalExpression {}; export class AssignmentExpression { type = "AssignmentExpression"; #internal; constructor(pos, ast) { if (ast?.token !== TOKEN) constructorError(); const { nodes } = ast; const cached = nodes.get(pos); if (cached !== void 0) return cached; this.#internal = { pos, ast }; nodes.set(pos, this); } get start() { const internal = this.#internal; return constructI32(internal.pos, internal.ast); } get end() { const internal = this.#internal; return constructI32(internal.pos + 4, internal.ast); } get operator() { const internal = this.#internal; return constructAssignmentOperator(internal.pos + 12, internal.ast); } get left() { const internal = this.#internal; return constructAssignmentTarget(internal.pos + 16, internal.ast); } get right() { const internal = this.#internal; return constructExpression(internal.pos + 32, internal.ast); } toJSON() { return { type: "AssignmentExpression", start: this.start, end: this.end, operator: this.operator, left: this.left, right: this.right, }; } [inspectSymbol]() { return Object.setPrototypeOf(this.toJSON(), DebugAssignmentExpression.prototype); } } const DebugAssignmentExpression = class AssignmentExpression {}; function constructAssignmentTarget(pos, ast) { switch (ast.buffer[pos]) { case 0: return constructBoxIdentifierReference(pos + 8, ast); case 1: return constructBoxTSAsExpression(pos + 8, ast); case 2: return constructBoxTSSatisfiesExpression(pos + 8, ast); case 3: return constructBoxTSNonNullExpression(pos + 8, ast); case 4: return constructBoxTSTypeAssertion(pos + 8, ast); case 8: return constructBoxArrayAssignmentTarget(pos + 8, ast); case 9: return constructBoxObjectAssignmentTarget(pos + 8, ast); case 48: return constructBoxComputedMemberExpression(pos + 8, ast); case 49: return constructBoxStaticMemberExpression(pos + 8, ast); case 50: return constructBoxPrivateFieldExpression(pos + 8, ast); default: throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for AssignmentTarget`); } } function constructSimpleAssignmentTarget(pos, ast) { switch (ast.buffer[pos]) { case 0: return constructBoxIdentifierReference(pos + 8, ast); case 1: return constructBoxTSAsExpression(pos + 8, ast); case 2: return constructBoxTSSatisfiesExpression(pos + 8, ast); case 3: return constructBoxTSNonNullExpression(pos + 8, ast); case 4: return constructBoxTSTypeAssertion(