5500 lines
148 KiB
JavaScript
5500 lines
148 KiB
JavaScript
// 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`.
|
|
|
|
'use strict';
|
|
|
|
const {
|
|
Program,
|
|
IdentifierName,
|
|
IdentifierReference,
|
|
BindingIdentifier,
|
|
LabelIdentifier,
|
|
ThisExpression,
|
|
ArrayExpression,
|
|
Elision,
|
|
ObjectExpression,
|
|
ObjectProperty,
|
|
TemplateLiteral,
|
|
TaggedTemplateExpression,
|
|
TemplateElement,
|
|
ComputedMemberExpression,
|
|
StaticMemberExpression,
|
|
PrivateFieldExpression,
|
|
CallExpression,
|
|
NewExpression,
|
|
MetaProperty,
|
|
SpreadElement,
|
|
UpdateExpression,
|
|
UnaryExpression,
|
|
BinaryExpression,
|
|
PrivateInExpression,
|
|
LogicalExpression,
|
|
ConditionalExpression,
|
|
AssignmentExpression,
|
|
ArrayAssignmentTarget,
|
|
ObjectAssignmentTarget,
|
|
AssignmentTargetWithDefault,
|
|
AssignmentTargetPropertyIdentifier,
|
|
AssignmentTargetPropertyProperty,
|
|
SequenceExpression,
|
|
Super,
|
|
AwaitExpression,
|
|
ChainExpression,
|
|
ParenthesizedExpression,
|
|
Hashbang,
|
|
BlockStatement,
|
|
VariableDeclaration,
|
|
VariableDeclarator,
|
|
EmptyStatement,
|
|
ExpressionStatement,
|
|
IfStatement,
|
|
DoWhileStatement,
|
|
WhileStatement,
|
|
ForStatement,
|
|
ForInStatement,
|
|
ForOfStatement,
|
|
ContinueStatement,
|
|
BreakStatement,
|
|
ReturnStatement,
|
|
WithStatement,
|
|
SwitchStatement,
|
|
SwitchCase,
|
|
LabeledStatement,
|
|
ThrowStatement,
|
|
TryStatement,
|
|
CatchClause,
|
|
DebuggerStatement,
|
|
AssignmentPattern,
|
|
ObjectPattern,
|
|
BindingProperty,
|
|
ArrayPattern,
|
|
Function,
|
|
FormalParameters,
|
|
FunctionBody,
|
|
ArrowFunctionExpression,
|
|
YieldExpression,
|
|
Class,
|
|
ClassBody,
|
|
MethodDefinition,
|
|
PropertyDefinition,
|
|
PrivateIdentifier,
|
|
StaticBlock,
|
|
AccessorProperty,
|
|
ImportExpression,
|
|
ImportDeclaration,
|
|
ImportSpecifier,
|
|
ImportDefaultSpecifier,
|
|
ImportNamespaceSpecifier,
|
|
ImportAttribute,
|
|
ExportNamedDeclaration,
|
|
ExportDefaultDeclaration,
|
|
ExportAllDeclaration,
|
|
ExportSpecifier,
|
|
V8IntrinsicExpression,
|
|
BooleanLiteral,
|
|
NullLiteral,
|
|
NumericLiteral,
|
|
StringLiteral,
|
|
BigIntLiteral,
|
|
RegExpLiteral,
|
|
JSXElement,
|
|
JSXOpeningElement,
|
|
JSXClosingElement,
|
|
JSXFragment,
|
|
JSXOpeningFragment,
|
|
JSXClosingFragment,
|
|
JSXNamespacedName,
|
|
JSXMemberExpression,
|
|
JSXExpressionContainer,
|
|
JSXEmptyExpression,
|
|
JSXAttribute,
|
|
JSXSpreadAttribute,
|
|
JSXIdentifier,
|
|
JSXSpreadChild,
|
|
JSXText,
|
|
TSEnumDeclaration,
|
|
TSEnumBody,
|
|
TSEnumMember,
|
|
TSTypeAnnotation,
|
|
TSLiteralType,
|
|
TSConditionalType,
|
|
TSUnionType,
|
|
TSIntersectionType,
|
|
TSParenthesizedType,
|
|
TSTypeOperator,
|
|
TSArrayType,
|
|
TSIndexedAccessType,
|
|
TSTupleType,
|
|
TSNamedTupleMember,
|
|
TSOptionalType,
|
|
TSRestType,
|
|
TSAnyKeyword,
|
|
TSStringKeyword,
|
|
TSBooleanKeyword,
|
|
TSNumberKeyword,
|
|
TSNeverKeyword,
|
|
TSIntrinsicKeyword,
|
|
TSUnknownKeyword,
|
|
TSNullKeyword,
|
|
TSUndefinedKeyword,
|
|
TSVoidKeyword,
|
|
TSSymbolKeyword,
|
|
TSThisType,
|
|
TSObjectKeyword,
|
|
TSBigIntKeyword,
|
|
TSTypeReference,
|
|
TSQualifiedName,
|
|
TSTypeParameterInstantiation,
|
|
TSTypeParameter,
|
|
TSTypeParameterDeclaration,
|
|
TSTypeAliasDeclaration,
|
|
TSClassImplements,
|
|
TSInterfaceDeclaration,
|
|
TSInterfaceBody,
|
|
TSPropertySignature,
|
|
TSIndexSignature,
|
|
TSCallSignatureDeclaration,
|
|
TSMethodSignature,
|
|
TSConstructSignatureDeclaration,
|
|
TSIndexSignatureName,
|
|
TSInterfaceHeritage,
|
|
TSTypePredicate,
|
|
TSModuleDeclaration,
|
|
TSModuleBlock,
|
|
TSTypeLiteral,
|
|
TSInferType,
|
|
TSTypeQuery,
|
|
TSImportType,
|
|
TSImportTypeQualifiedName,
|
|
TSFunctionType,
|
|
TSConstructorType,
|
|
TSMappedType,
|
|
TSTemplateLiteralType,
|
|
TSAsExpression,
|
|
TSSatisfiesExpression,
|
|
TSTypeAssertion,
|
|
TSImportEqualsDeclaration,
|
|
TSExternalModuleReference,
|
|
TSNonNullExpression,
|
|
Decorator,
|
|
TSExportAssignment,
|
|
TSNamespaceExportDeclaration,
|
|
TSInstantiationExpression,
|
|
JSDocNullableType,
|
|
JSDocNonNullableType,
|
|
JSDocUnknownType,
|
|
} = require('./constructors.js');
|
|
|
|
module.exports = walkProgram;
|
|
|
|
function walkProgram(pos, ast, visitors) {
|
|
const enterExit = visitors[38];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new Program(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkOptionHashbang(pos + 48, ast, visitors);
|
|
walkVecStatement(pos + 96, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkExpression(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxBooleanLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxNullLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxNumericLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 3:
|
|
walkBoxBigIntLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 4:
|
|
walkBoxRegExpLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 5:
|
|
walkBoxStringLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 6:
|
|
walkBoxTemplateLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 7:
|
|
walkBoxIdentifierReference(pos + 8, ast, visitors);
|
|
return;
|
|
case 8:
|
|
walkBoxMetaProperty(pos + 8, ast, visitors);
|
|
return;
|
|
case 9:
|
|
walkBoxSuper(pos + 8, ast, visitors);
|
|
return;
|
|
case 10:
|
|
walkBoxArrayExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 11:
|
|
walkBoxArrowFunctionExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 12:
|
|
walkBoxAssignmentExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 13:
|
|
walkBoxAwaitExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 14:
|
|
walkBoxBinaryExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 15:
|
|
walkBoxCallExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 16:
|
|
walkBoxChainExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 17:
|
|
walkBoxClass(pos + 8, ast, visitors);
|
|
return;
|
|
case 18:
|
|
walkBoxConditionalExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 19:
|
|
walkBoxFunction(pos + 8, ast, visitors);
|
|
return;
|
|
case 20:
|
|
walkBoxImportExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 21:
|
|
walkBoxLogicalExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 22:
|
|
walkBoxNewExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 23:
|
|
walkBoxObjectExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 24:
|
|
walkBoxParenthesizedExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 25:
|
|
walkBoxSequenceExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 26:
|
|
walkBoxTaggedTemplateExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 27:
|
|
walkBoxThisExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 28:
|
|
walkBoxUnaryExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 29:
|
|
walkBoxUpdateExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 30:
|
|
walkBoxYieldExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 31:
|
|
walkBoxPrivateInExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 32:
|
|
walkBoxJSXElement(pos + 8, ast, visitors);
|
|
return;
|
|
case 33:
|
|
walkBoxJSXFragment(pos + 8, ast, visitors);
|
|
return;
|
|
case 34:
|
|
walkBoxTSAsExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 35:
|
|
walkBoxTSSatisfiesExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 36:
|
|
walkBoxTSTypeAssertion(pos + 8, ast, visitors);
|
|
return;
|
|
case 37:
|
|
walkBoxTSNonNullExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 38:
|
|
walkBoxTSInstantiationExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 39:
|
|
walkBoxV8IntrinsicExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 48:
|
|
walkBoxComputedMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 49:
|
|
walkBoxStaticMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 50:
|
|
walkBoxPrivateFieldExpression(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for Expression`);
|
|
}
|
|
}
|
|
|
|
function walkIdentifierName(pos, ast, visitors) {
|
|
const visit = visitors[0];
|
|
if (visit !== null) visit(new IdentifierName(pos, ast));
|
|
}
|
|
|
|
function walkIdentifierReference(pos, ast, visitors) {
|
|
const visit = visitors[1];
|
|
if (visit !== null) visit(new IdentifierReference(pos, ast));
|
|
}
|
|
|
|
function walkBindingIdentifier(pos, ast, visitors) {
|
|
const visit = visitors[2];
|
|
if (visit !== null) visit(new BindingIdentifier(pos, ast));
|
|
}
|
|
|
|
function walkLabelIdentifier(pos, ast, visitors) {
|
|
const visit = visitors[3];
|
|
if (visit !== null) visit(new LabelIdentifier(pos, ast));
|
|
}
|
|
|
|
function walkThisExpression(pos, ast, visitors) {
|
|
const visit = visitors[4];
|
|
if (visit !== null) visit(new ThisExpression(pos, ast));
|
|
}
|
|
|
|
function walkArrayExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[39];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ArrayExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecArrayExpressionElement(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkArrayExpressionElement(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxBooleanLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxNullLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxNumericLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 3:
|
|
walkBoxBigIntLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 4:
|
|
walkBoxRegExpLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 5:
|
|
walkBoxStringLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 6:
|
|
walkBoxTemplateLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 7:
|
|
walkBoxIdentifierReference(pos + 8, ast, visitors);
|
|
return;
|
|
case 8:
|
|
walkBoxMetaProperty(pos + 8, ast, visitors);
|
|
return;
|
|
case 9:
|
|
walkBoxSuper(pos + 8, ast, visitors);
|
|
return;
|
|
case 10:
|
|
walkBoxArrayExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 11:
|
|
walkBoxArrowFunctionExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 12:
|
|
walkBoxAssignmentExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 13:
|
|
walkBoxAwaitExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 14:
|
|
walkBoxBinaryExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 15:
|
|
walkBoxCallExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 16:
|
|
walkBoxChainExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 17:
|
|
walkBoxClass(pos + 8, ast, visitors);
|
|
return;
|
|
case 18:
|
|
walkBoxConditionalExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 19:
|
|
walkBoxFunction(pos + 8, ast, visitors);
|
|
return;
|
|
case 20:
|
|
walkBoxImportExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 21:
|
|
walkBoxLogicalExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 22:
|
|
walkBoxNewExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 23:
|
|
walkBoxObjectExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 24:
|
|
walkBoxParenthesizedExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 25:
|
|
walkBoxSequenceExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 26:
|
|
walkBoxTaggedTemplateExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 27:
|
|
walkBoxThisExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 28:
|
|
walkBoxUnaryExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 29:
|
|
walkBoxUpdateExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 30:
|
|
walkBoxYieldExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 31:
|
|
walkBoxPrivateInExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 32:
|
|
walkBoxJSXElement(pos + 8, ast, visitors);
|
|
return;
|
|
case 33:
|
|
walkBoxJSXFragment(pos + 8, ast, visitors);
|
|
return;
|
|
case 34:
|
|
walkBoxTSAsExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 35:
|
|
walkBoxTSSatisfiesExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 36:
|
|
walkBoxTSTypeAssertion(pos + 8, ast, visitors);
|
|
return;
|
|
case 37:
|
|
walkBoxTSNonNullExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 38:
|
|
walkBoxTSInstantiationExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 39:
|
|
walkBoxV8IntrinsicExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 48:
|
|
walkBoxComputedMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 49:
|
|
walkBoxStaticMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 50:
|
|
walkBoxPrivateFieldExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 64:
|
|
walkBoxSpreadElement(pos + 8, ast, visitors);
|
|
return;
|
|
case 65:
|
|
walkElision(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ArrayExpressionElement`);
|
|
}
|
|
}
|
|
|
|
function walkElision(pos, ast, visitors) {
|
|
const visit = visitors[5];
|
|
if (visit !== null) visit(new Elision(pos, ast));
|
|
}
|
|
|
|
function walkObjectExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[40];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ObjectExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecObjectPropertyKind(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkObjectPropertyKind(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxObjectProperty(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxSpreadElement(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ObjectPropertyKind`);
|
|
}
|
|
}
|
|
|
|
function walkObjectProperty(pos, ast, visitors) {
|
|
const enterExit = visitors[41];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ObjectProperty(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkPropertyKey(pos + 8, ast, visitors);
|
|
walkExpression(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkPropertyKey(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxBooleanLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxNullLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxNumericLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 3:
|
|
walkBoxBigIntLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 4:
|
|
walkBoxRegExpLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 5:
|
|
walkBoxStringLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 6:
|
|
walkBoxTemplateLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 7:
|
|
walkBoxIdentifierReference(pos + 8, ast, visitors);
|
|
return;
|
|
case 8:
|
|
walkBoxMetaProperty(pos + 8, ast, visitors);
|
|
return;
|
|
case 9:
|
|
walkBoxSuper(pos + 8, ast, visitors);
|
|
return;
|
|
case 10:
|
|
walkBoxArrayExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 11:
|
|
walkBoxArrowFunctionExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 12:
|
|
walkBoxAssignmentExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 13:
|
|
walkBoxAwaitExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 14:
|
|
walkBoxBinaryExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 15:
|
|
walkBoxCallExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 16:
|
|
walkBoxChainExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 17:
|
|
walkBoxClass(pos + 8, ast, visitors);
|
|
return;
|
|
case 18:
|
|
walkBoxConditionalExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 19:
|
|
walkBoxFunction(pos + 8, ast, visitors);
|
|
return;
|
|
case 20:
|
|
walkBoxImportExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 21:
|
|
walkBoxLogicalExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 22:
|
|
walkBoxNewExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 23:
|
|
walkBoxObjectExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 24:
|
|
walkBoxParenthesizedExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 25:
|
|
walkBoxSequenceExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 26:
|
|
walkBoxTaggedTemplateExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 27:
|
|
walkBoxThisExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 28:
|
|
walkBoxUnaryExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 29:
|
|
walkBoxUpdateExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 30:
|
|
walkBoxYieldExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 31:
|
|
walkBoxPrivateInExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 32:
|
|
walkBoxJSXElement(pos + 8, ast, visitors);
|
|
return;
|
|
case 33:
|
|
walkBoxJSXFragment(pos + 8, ast, visitors);
|
|
return;
|
|
case 34:
|
|
walkBoxTSAsExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 35:
|
|
walkBoxTSSatisfiesExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 36:
|
|
walkBoxTSTypeAssertion(pos + 8, ast, visitors);
|
|
return;
|
|
case 37:
|
|
walkBoxTSNonNullExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 38:
|
|
walkBoxTSInstantiationExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 39:
|
|
walkBoxV8IntrinsicExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 48:
|
|
walkBoxComputedMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 49:
|
|
walkBoxStaticMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 50:
|
|
walkBoxPrivateFieldExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 64:
|
|
walkBoxIdentifierName(pos + 8, ast, visitors);
|
|
return;
|
|
case 65:
|
|
walkBoxPrivateIdentifier(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for PropertyKey`);
|
|
}
|
|
}
|
|
|
|
function walkTemplateLiteral(pos, ast, visitors) {
|
|
const enterExit = visitors[42];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TemplateLiteral(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecTemplateElement(pos + 8, ast, visitors);
|
|
walkVecExpression(pos + 32, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTaggedTemplateExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[43];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TaggedTemplateExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
walkOptionBoxTSTypeParameterInstantiation(pos + 24, ast, visitors);
|
|
walkTemplateLiteral(pos + 32, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTemplateElement(pos, ast, visitors) {
|
|
const visit = visitors[6];
|
|
if (visit !== null) visit(new TemplateElement(pos, ast));
|
|
}
|
|
|
|
function walkComputedMemberExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[44];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ComputedMemberExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
walkExpression(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkStaticMemberExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[45];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new StaticMemberExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
walkIdentifierName(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkPrivateFieldExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[46];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new PrivateFieldExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
walkPrivateIdentifier(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkCallExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[47];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new CallExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
walkOptionBoxTSTypeParameterInstantiation(pos + 24, ast, visitors);
|
|
walkVecArgument(pos + 32, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkNewExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[48];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new NewExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
walkOptionBoxTSTypeParameterInstantiation(pos + 24, ast, visitors);
|
|
walkVecArgument(pos + 32, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkMetaProperty(pos, ast, visitors) {
|
|
const enterExit = visitors[49];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new MetaProperty(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkIdentifierName(pos + 8, ast, visitors);
|
|
walkIdentifierName(pos + 32, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkSpreadElement(pos, ast, visitors) {
|
|
const enterExit = visitors[50];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new SpreadElement(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkArgument(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxBooleanLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxNullLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxNumericLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 3:
|
|
walkBoxBigIntLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 4:
|
|
walkBoxRegExpLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 5:
|
|
walkBoxStringLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 6:
|
|
walkBoxTemplateLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 7:
|
|
walkBoxIdentifierReference(pos + 8, ast, visitors);
|
|
return;
|
|
case 8:
|
|
walkBoxMetaProperty(pos + 8, ast, visitors);
|
|
return;
|
|
case 9:
|
|
walkBoxSuper(pos + 8, ast, visitors);
|
|
return;
|
|
case 10:
|
|
walkBoxArrayExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 11:
|
|
walkBoxArrowFunctionExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 12:
|
|
walkBoxAssignmentExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 13:
|
|
walkBoxAwaitExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 14:
|
|
walkBoxBinaryExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 15:
|
|
walkBoxCallExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 16:
|
|
walkBoxChainExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 17:
|
|
walkBoxClass(pos + 8, ast, visitors);
|
|
return;
|
|
case 18:
|
|
walkBoxConditionalExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 19:
|
|
walkBoxFunction(pos + 8, ast, visitors);
|
|
return;
|
|
case 20:
|
|
walkBoxImportExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 21:
|
|
walkBoxLogicalExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 22:
|
|
walkBoxNewExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 23:
|
|
walkBoxObjectExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 24:
|
|
walkBoxParenthesizedExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 25:
|
|
walkBoxSequenceExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 26:
|
|
walkBoxTaggedTemplateExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 27:
|
|
walkBoxThisExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 28:
|
|
walkBoxUnaryExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 29:
|
|
walkBoxUpdateExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 30:
|
|
walkBoxYieldExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 31:
|
|
walkBoxPrivateInExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 32:
|
|
walkBoxJSXElement(pos + 8, ast, visitors);
|
|
return;
|
|
case 33:
|
|
walkBoxJSXFragment(pos + 8, ast, visitors);
|
|
return;
|
|
case 34:
|
|
walkBoxTSAsExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 35:
|
|
walkBoxTSSatisfiesExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 36:
|
|
walkBoxTSTypeAssertion(pos + 8, ast, visitors);
|
|
return;
|
|
case 37:
|
|
walkBoxTSNonNullExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 38:
|
|
walkBoxTSInstantiationExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 39:
|
|
walkBoxV8IntrinsicExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 48:
|
|
walkBoxComputedMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 49:
|
|
walkBoxStaticMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 50:
|
|
walkBoxPrivateFieldExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 64:
|
|
walkBoxSpreadElement(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for Argument`);
|
|
}
|
|
}
|
|
|
|
function walkUpdateExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[51];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new UpdateExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkSimpleAssignmentTarget(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkUnaryExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[52];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new UnaryExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkBinaryExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[53];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new BinaryExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
walkExpression(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkPrivateInExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[54];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new PrivateInExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkPrivateIdentifier(pos + 8, ast, visitors);
|
|
walkExpression(pos + 32, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkLogicalExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[55];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new LogicalExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
walkExpression(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkConditionalExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[56];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ConditionalExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
walkExpression(pos + 24, ast, visitors);
|
|
walkExpression(pos + 40, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkAssignmentExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[57];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new AssignmentExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkAssignmentTarget(pos + 8, ast, visitors);
|
|
walkExpression(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkAssignmentTarget(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxIdentifierReference(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxTSAsExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxTSSatisfiesExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 3:
|
|
walkBoxTSNonNullExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 4:
|
|
walkBoxTSTypeAssertion(pos + 8, ast, visitors);
|
|
return;
|
|
case 8:
|
|
walkBoxArrayAssignmentTarget(pos + 8, ast, visitors);
|
|
return;
|
|
case 9:
|
|
walkBoxObjectAssignmentTarget(pos + 8, ast, visitors);
|
|
return;
|
|
case 48:
|
|
walkBoxComputedMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 49:
|
|
walkBoxStaticMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 50:
|
|
walkBoxPrivateFieldExpression(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for AssignmentTarget`);
|
|
}
|
|
}
|
|
|
|
function walkSimpleAssignmentTarget(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxIdentifierReference(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxTSAsExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxTSSatisfiesExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 3:
|
|
walkBoxTSNonNullExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 4:
|
|
walkBoxTSTypeAssertion(pos + 8, ast, visitors);
|
|
return;
|
|
case 48:
|
|
walkBoxComputedMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 49:
|
|
walkBoxStaticMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 50:
|
|
walkBoxPrivateFieldExpression(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for SimpleAssignmentTarget`);
|
|
}
|
|
}
|
|
|
|
function walkArrayAssignmentTarget(pos, ast, visitors) {
|
|
const enterExit = visitors[58];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ArrayAssignmentTarget(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecOptionAssignmentTargetMaybeDefault(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkObjectAssignmentTarget(pos, ast, visitors) {
|
|
const enterExit = visitors[59];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ObjectAssignmentTarget(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecAssignmentTargetProperty(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkAssignmentTargetMaybeDefault(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxIdentifierReference(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxTSAsExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxTSSatisfiesExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 3:
|
|
walkBoxTSNonNullExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 4:
|
|
walkBoxTSTypeAssertion(pos + 8, ast, visitors);
|
|
return;
|
|
case 8:
|
|
walkBoxArrayAssignmentTarget(pos + 8, ast, visitors);
|
|
return;
|
|
case 9:
|
|
walkBoxObjectAssignmentTarget(pos + 8, ast, visitors);
|
|
return;
|
|
case 16:
|
|
walkBoxAssignmentTargetWithDefault(pos + 8, ast, visitors);
|
|
return;
|
|
case 48:
|
|
walkBoxComputedMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 49:
|
|
walkBoxStaticMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 50:
|
|
walkBoxPrivateFieldExpression(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for AssignmentTargetMaybeDefault`);
|
|
}
|
|
}
|
|
|
|
function walkAssignmentTargetWithDefault(pos, ast, visitors) {
|
|
const enterExit = visitors[60];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new AssignmentTargetWithDefault(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkAssignmentTarget(pos + 8, ast, visitors);
|
|
walkExpression(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkAssignmentTargetProperty(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxAssignmentTargetPropertyIdentifier(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxAssignmentTargetPropertyProperty(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for AssignmentTargetProperty`);
|
|
}
|
|
}
|
|
|
|
function walkAssignmentTargetPropertyIdentifier(pos, ast, visitors) {
|
|
const enterExit = visitors[61];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new AssignmentTargetPropertyIdentifier(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkIdentifierReference(pos + 8, ast, visitors);
|
|
walkOptionExpression(pos + 40, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkAssignmentTargetPropertyProperty(pos, ast, visitors) {
|
|
const enterExit = visitors[62];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new AssignmentTargetPropertyProperty(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkPropertyKey(pos + 8, ast, visitors);
|
|
walkAssignmentTargetMaybeDefault(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkSequenceExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[63];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new SequenceExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecExpression(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkSuper(pos, ast, visitors) {
|
|
const visit = visitors[7];
|
|
if (visit !== null) visit(new Super(pos, ast));
|
|
}
|
|
|
|
function walkAwaitExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[64];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new AwaitExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkChainExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[65];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ChainExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkChainElement(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkChainElement(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxCallExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxTSNonNullExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 48:
|
|
walkBoxComputedMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 49:
|
|
walkBoxStaticMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 50:
|
|
walkBoxPrivateFieldExpression(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ChainElement`);
|
|
}
|
|
}
|
|
|
|
function walkParenthesizedExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[66];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ParenthesizedExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkStatement(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxBlockStatement(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxBreakStatement(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxContinueStatement(pos + 8, ast, visitors);
|
|
return;
|
|
case 3:
|
|
walkBoxDebuggerStatement(pos + 8, ast, visitors);
|
|
return;
|
|
case 4:
|
|
walkBoxDoWhileStatement(pos + 8, ast, visitors);
|
|
return;
|
|
case 5:
|
|
walkBoxEmptyStatement(pos + 8, ast, visitors);
|
|
return;
|
|
case 6:
|
|
walkBoxExpressionStatement(pos + 8, ast, visitors);
|
|
return;
|
|
case 7:
|
|
walkBoxForInStatement(pos + 8, ast, visitors);
|
|
return;
|
|
case 8:
|
|
walkBoxForOfStatement(pos + 8, ast, visitors);
|
|
return;
|
|
case 9:
|
|
walkBoxForStatement(pos + 8, ast, visitors);
|
|
return;
|
|
case 10:
|
|
walkBoxIfStatement(pos + 8, ast, visitors);
|
|
return;
|
|
case 11:
|
|
walkBoxLabeledStatement(pos + 8, ast, visitors);
|
|
return;
|
|
case 12:
|
|
walkBoxReturnStatement(pos + 8, ast, visitors);
|
|
return;
|
|
case 13:
|
|
walkBoxSwitchStatement(pos + 8, ast, visitors);
|
|
return;
|
|
case 14:
|
|
walkBoxThrowStatement(pos + 8, ast, visitors);
|
|
return;
|
|
case 15:
|
|
walkBoxTryStatement(pos + 8, ast, visitors);
|
|
return;
|
|
case 16:
|
|
walkBoxWhileStatement(pos + 8, ast, visitors);
|
|
return;
|
|
case 17:
|
|
walkBoxWithStatement(pos + 8, ast, visitors);
|
|
return;
|
|
case 32:
|
|
walkBoxVariableDeclaration(pos + 8, ast, visitors);
|
|
return;
|
|
case 33:
|
|
walkBoxFunction(pos + 8, ast, visitors);
|
|
return;
|
|
case 34:
|
|
walkBoxClass(pos + 8, ast, visitors);
|
|
return;
|
|
case 35:
|
|
walkBoxTSTypeAliasDeclaration(pos + 8, ast, visitors);
|
|
return;
|
|
case 36:
|
|
walkBoxTSInterfaceDeclaration(pos + 8, ast, visitors);
|
|
return;
|
|
case 37:
|
|
walkBoxTSEnumDeclaration(pos + 8, ast, visitors);
|
|
return;
|
|
case 38:
|
|
walkBoxTSModuleDeclaration(pos + 8, ast, visitors);
|
|
return;
|
|
case 39:
|
|
walkBoxTSImportEqualsDeclaration(pos + 8, ast, visitors);
|
|
return;
|
|
case 64:
|
|
walkBoxImportDeclaration(pos + 8, ast, visitors);
|
|
return;
|
|
case 65:
|
|
walkBoxExportAllDeclaration(pos + 8, ast, visitors);
|
|
return;
|
|
case 66:
|
|
walkBoxExportDefaultDeclaration(pos + 8, ast, visitors);
|
|
return;
|
|
case 67:
|
|
walkBoxExportNamedDeclaration(pos + 8, ast, visitors);
|
|
return;
|
|
case 68:
|
|
walkBoxTSExportAssignment(pos + 8, ast, visitors);
|
|
return;
|
|
case 69:
|
|
walkBoxTSNamespaceExportDeclaration(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for Statement`);
|
|
}
|
|
}
|
|
|
|
function walkHashbang(pos, ast, visitors) {
|
|
const visit = visitors[8];
|
|
if (visit !== null) visit(new Hashbang(pos, ast));
|
|
}
|
|
|
|
function walkBlockStatement(pos, ast, visitors) {
|
|
const enterExit = visitors[67];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new BlockStatement(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecStatement(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkDeclaration(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 32:
|
|
walkBoxVariableDeclaration(pos + 8, ast, visitors);
|
|
return;
|
|
case 33:
|
|
walkBoxFunction(pos + 8, ast, visitors);
|
|
return;
|
|
case 34:
|
|
walkBoxClass(pos + 8, ast, visitors);
|
|
return;
|
|
case 35:
|
|
walkBoxTSTypeAliasDeclaration(pos + 8, ast, visitors);
|
|
return;
|
|
case 36:
|
|
walkBoxTSInterfaceDeclaration(pos + 8, ast, visitors);
|
|
return;
|
|
case 37:
|
|
walkBoxTSEnumDeclaration(pos + 8, ast, visitors);
|
|
return;
|
|
case 38:
|
|
walkBoxTSModuleDeclaration(pos + 8, ast, visitors);
|
|
return;
|
|
case 39:
|
|
walkBoxTSImportEqualsDeclaration(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for Declaration`);
|
|
}
|
|
}
|
|
|
|
function walkVariableDeclaration(pos, ast, visitors) {
|
|
const enterExit = visitors[68];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new VariableDeclaration(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecVariableDeclarator(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkVariableDeclarator(pos, ast, visitors) {
|
|
const enterExit = visitors[69];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new VariableDeclarator(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkBindingPattern(pos + 8, ast, visitors);
|
|
walkOptionExpression(pos + 40, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkEmptyStatement(pos, ast, visitors) {
|
|
const visit = visitors[9];
|
|
if (visit !== null) visit(new EmptyStatement(pos, ast));
|
|
}
|
|
|
|
function walkExpressionStatement(pos, ast, visitors) {
|
|
const enterExit = visitors[70];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ExpressionStatement(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkIfStatement(pos, ast, visitors) {
|
|
const enterExit = visitors[71];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new IfStatement(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
walkStatement(pos + 24, ast, visitors);
|
|
walkOptionStatement(pos + 40, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkDoWhileStatement(pos, ast, visitors) {
|
|
const enterExit = visitors[72];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new DoWhileStatement(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkStatement(pos + 8, ast, visitors);
|
|
walkExpression(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkWhileStatement(pos, ast, visitors) {
|
|
const enterExit = visitors[73];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new WhileStatement(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
walkStatement(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkForStatement(pos, ast, visitors) {
|
|
const enterExit = visitors[74];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ForStatement(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkOptionForStatementInit(pos + 8, ast, visitors);
|
|
walkOptionExpression(pos + 24, ast, visitors);
|
|
walkOptionExpression(pos + 40, ast, visitors);
|
|
walkStatement(pos + 56, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkForStatementInit(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxBooleanLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxNullLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxNumericLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 3:
|
|
walkBoxBigIntLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 4:
|
|
walkBoxRegExpLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 5:
|
|
walkBoxStringLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 6:
|
|
walkBoxTemplateLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 7:
|
|
walkBoxIdentifierReference(pos + 8, ast, visitors);
|
|
return;
|
|
case 8:
|
|
walkBoxMetaProperty(pos + 8, ast, visitors);
|
|
return;
|
|
case 9:
|
|
walkBoxSuper(pos + 8, ast, visitors);
|
|
return;
|
|
case 10:
|
|
walkBoxArrayExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 11:
|
|
walkBoxArrowFunctionExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 12:
|
|
walkBoxAssignmentExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 13:
|
|
walkBoxAwaitExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 14:
|
|
walkBoxBinaryExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 15:
|
|
walkBoxCallExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 16:
|
|
walkBoxChainExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 17:
|
|
walkBoxClass(pos + 8, ast, visitors);
|
|
return;
|
|
case 18:
|
|
walkBoxConditionalExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 19:
|
|
walkBoxFunction(pos + 8, ast, visitors);
|
|
return;
|
|
case 20:
|
|
walkBoxImportExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 21:
|
|
walkBoxLogicalExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 22:
|
|
walkBoxNewExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 23:
|
|
walkBoxObjectExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 24:
|
|
walkBoxParenthesizedExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 25:
|
|
walkBoxSequenceExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 26:
|
|
walkBoxTaggedTemplateExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 27:
|
|
walkBoxThisExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 28:
|
|
walkBoxUnaryExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 29:
|
|
walkBoxUpdateExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 30:
|
|
walkBoxYieldExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 31:
|
|
walkBoxPrivateInExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 32:
|
|
walkBoxJSXElement(pos + 8, ast, visitors);
|
|
return;
|
|
case 33:
|
|
walkBoxJSXFragment(pos + 8, ast, visitors);
|
|
return;
|
|
case 34:
|
|
walkBoxTSAsExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 35:
|
|
walkBoxTSSatisfiesExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 36:
|
|
walkBoxTSTypeAssertion(pos + 8, ast, visitors);
|
|
return;
|
|
case 37:
|
|
walkBoxTSNonNullExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 38:
|
|
walkBoxTSInstantiationExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 39:
|
|
walkBoxV8IntrinsicExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 48:
|
|
walkBoxComputedMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 49:
|
|
walkBoxStaticMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 50:
|
|
walkBoxPrivateFieldExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 64:
|
|
walkBoxVariableDeclaration(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ForStatementInit`);
|
|
}
|
|
}
|
|
|
|
function walkForInStatement(pos, ast, visitors) {
|
|
const enterExit = visitors[75];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ForInStatement(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkForStatementLeft(pos + 8, ast, visitors);
|
|
walkExpression(pos + 24, ast, visitors);
|
|
walkStatement(pos + 40, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkForStatementLeft(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxIdentifierReference(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxTSAsExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxTSSatisfiesExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 3:
|
|
walkBoxTSNonNullExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 4:
|
|
walkBoxTSTypeAssertion(pos + 8, ast, visitors);
|
|
return;
|
|
case 8:
|
|
walkBoxArrayAssignmentTarget(pos + 8, ast, visitors);
|
|
return;
|
|
case 9:
|
|
walkBoxObjectAssignmentTarget(pos + 8, ast, visitors);
|
|
return;
|
|
case 16:
|
|
walkBoxVariableDeclaration(pos + 8, ast, visitors);
|
|
return;
|
|
case 48:
|
|
walkBoxComputedMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 49:
|
|
walkBoxStaticMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 50:
|
|
walkBoxPrivateFieldExpression(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ForStatementLeft`);
|
|
}
|
|
}
|
|
|
|
function walkForOfStatement(pos, ast, visitors) {
|
|
const enterExit = visitors[76];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ForOfStatement(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkForStatementLeft(pos + 8, ast, visitors);
|
|
walkExpression(pos + 24, ast, visitors);
|
|
walkStatement(pos + 40, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkContinueStatement(pos, ast, visitors) {
|
|
const enterExit = visitors[77];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ContinueStatement(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkOptionLabelIdentifier(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkBreakStatement(pos, ast, visitors) {
|
|
const enterExit = visitors[78];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new BreakStatement(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkOptionLabelIdentifier(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkReturnStatement(pos, ast, visitors) {
|
|
const enterExit = visitors[79];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ReturnStatement(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkOptionExpression(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkWithStatement(pos, ast, visitors) {
|
|
const enterExit = visitors[80];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new WithStatement(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
walkStatement(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkSwitchStatement(pos, ast, visitors) {
|
|
const enterExit = visitors[81];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new SwitchStatement(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
walkVecSwitchCase(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkSwitchCase(pos, ast, visitors) {
|
|
const enterExit = visitors[82];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new SwitchCase(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkOptionExpression(pos + 8, ast, visitors);
|
|
walkVecStatement(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkLabeledStatement(pos, ast, visitors) {
|
|
const enterExit = visitors[83];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new LabeledStatement(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkLabelIdentifier(pos + 8, ast, visitors);
|
|
walkStatement(pos + 32, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkThrowStatement(pos, ast, visitors) {
|
|
const enterExit = visitors[84];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ThrowStatement(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTryStatement(pos, ast, visitors) {
|
|
const enterExit = visitors[85];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TryStatement(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkBoxBlockStatement(pos + 8, ast, visitors);
|
|
walkOptionBoxCatchClause(pos + 16, ast, visitors);
|
|
walkOptionBoxBlockStatement(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkCatchClause(pos, ast, visitors) {
|
|
const enterExit = visitors[86];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new CatchClause(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkOptionCatchParameter(pos + 8, ast, visitors);
|
|
walkBoxBlockStatement(pos + 48, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkCatchParameter(pos, ast, visitors) {
|
|
walkBindingPattern(pos + 8, ast, visitors);
|
|
}
|
|
|
|
function walkDebuggerStatement(pos, ast, visitors) {
|
|
const visit = visitors[10];
|
|
if (visit !== null) visit(new DebuggerStatement(pos, ast));
|
|
}
|
|
|
|
function walkBindingPattern(pos, ast, visitors) {
|
|
walkBindingPatternKind(pos, ast, visitors);
|
|
walkOptionBoxTSTypeAnnotation(pos + 16, ast, visitors);
|
|
}
|
|
|
|
function walkBindingPatternKind(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxBindingIdentifier(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxObjectPattern(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxArrayPattern(pos + 8, ast, visitors);
|
|
return;
|
|
case 3:
|
|
walkBoxAssignmentPattern(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for BindingPatternKind`);
|
|
}
|
|
}
|
|
|
|
function walkAssignmentPattern(pos, ast, visitors) {
|
|
const enterExit = visitors[87];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new AssignmentPattern(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkBindingPattern(pos + 8, ast, visitors);
|
|
walkExpression(pos + 40, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkObjectPattern(pos, ast, visitors) {
|
|
const enterExit = visitors[88];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ObjectPattern(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecBindingProperty(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkBindingProperty(pos, ast, visitors) {
|
|
const enterExit = visitors[89];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new BindingProperty(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkPropertyKey(pos + 8, ast, visitors);
|
|
walkBindingPattern(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkArrayPattern(pos, ast, visitors) {
|
|
const enterExit = visitors[90];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ArrayPattern(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecOptionBindingPattern(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkFunction(pos, ast, visitors) {
|
|
const enterExit = visitors[91];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new Function(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkOptionBindingIdentifier(pos + 8, ast, visitors);
|
|
walkOptionBoxTSTypeParameterDeclaration(pos + 40, ast, visitors);
|
|
walkBoxFormalParameters(pos + 56, ast, visitors);
|
|
walkOptionBoxTSTypeAnnotation(pos + 64, ast, visitors);
|
|
walkOptionBoxFunctionBody(pos + 72, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkFormalParameters(pos, ast, visitors) {
|
|
const enterExit = visitors[92];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new FormalParameters(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecFormalParameter(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkFormalParameter(pos, ast, visitors) {
|
|
walkVecDecorator(pos + 8, ast, visitors);
|
|
walkBindingPattern(pos + 32, ast, visitors);
|
|
}
|
|
|
|
function walkFunctionBody(pos, ast, visitors) {
|
|
const enterExit = visitors[93];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new FunctionBody(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecStatement(pos + 32, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkArrowFunctionExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[94];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ArrowFunctionExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkOptionBoxTSTypeParameterDeclaration(pos + 8, ast, visitors);
|
|
walkBoxFormalParameters(pos + 16, ast, visitors);
|
|
walkOptionBoxTSTypeAnnotation(pos + 24, ast, visitors);
|
|
walkBoxFunctionBody(pos + 32, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkYieldExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[95];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new YieldExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkOptionExpression(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkClass(pos, ast, visitors) {
|
|
const enterExit = visitors[96];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new Class(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecDecorator(pos + 8, ast, visitors);
|
|
walkOptionBindingIdentifier(pos + 32, ast, visitors);
|
|
walkOptionBoxTSTypeParameterDeclaration(pos + 64, ast, visitors);
|
|
walkOptionExpression(pos + 72, ast, visitors);
|
|
walkOptionBoxTSTypeParameterInstantiation(pos + 88, ast, visitors);
|
|
walkVecTSClassImplements(pos + 96, ast, visitors);
|
|
walkBoxClassBody(pos + 120, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkClassBody(pos, ast, visitors) {
|
|
const enterExit = visitors[97];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ClassBody(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecClassElement(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkClassElement(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxStaticBlock(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxMethodDefinition(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxPropertyDefinition(pos + 8, ast, visitors);
|
|
return;
|
|
case 3:
|
|
walkBoxAccessorProperty(pos + 8, ast, visitors);
|
|
return;
|
|
case 4:
|
|
walkBoxTSIndexSignature(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ClassElement`);
|
|
}
|
|
}
|
|
|
|
function walkMethodDefinition(pos, ast, visitors) {
|
|
const enterExit = visitors[98];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new MethodDefinition(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecDecorator(pos + 8, ast, visitors);
|
|
walkPropertyKey(pos + 32, ast, visitors);
|
|
walkBoxFunction(pos + 48, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkPropertyDefinition(pos, ast, visitors) {
|
|
const enterExit = visitors[99];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new PropertyDefinition(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecDecorator(pos + 8, ast, visitors);
|
|
walkPropertyKey(pos + 32, ast, visitors);
|
|
walkOptionBoxTSTypeAnnotation(pos + 48, ast, visitors);
|
|
walkOptionExpression(pos + 56, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkPrivateIdentifier(pos, ast, visitors) {
|
|
const visit = visitors[11];
|
|
if (visit !== null) visit(new PrivateIdentifier(pos, ast));
|
|
}
|
|
|
|
function walkStaticBlock(pos, ast, visitors) {
|
|
const enterExit = visitors[100];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new StaticBlock(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecStatement(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkAccessorProperty(pos, ast, visitors) {
|
|
const enterExit = visitors[101];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new AccessorProperty(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecDecorator(pos + 8, ast, visitors);
|
|
walkPropertyKey(pos + 32, ast, visitors);
|
|
walkOptionBoxTSTypeAnnotation(pos + 48, ast, visitors);
|
|
walkOptionExpression(pos + 56, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkImportExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[102];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ImportExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
walkOptionExpression(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkImportDeclaration(pos, ast, visitors) {
|
|
const enterExit = visitors[103];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ImportDeclaration(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkOptionVecImportDeclarationSpecifier(pos + 8, ast, visitors);
|
|
walkStringLiteral(pos + 32, ast, visitors);
|
|
walkOptionBoxWithClause(pos + 80, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkImportDeclarationSpecifier(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxImportSpecifier(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxImportDefaultSpecifier(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxImportNamespaceSpecifier(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ImportDeclarationSpecifier`);
|
|
}
|
|
}
|
|
|
|
function walkImportSpecifier(pos, ast, visitors) {
|
|
const enterExit = visitors[104];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ImportSpecifier(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkModuleExportName(pos + 8, ast, visitors);
|
|
walkBindingIdentifier(pos + 64, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkImportDefaultSpecifier(pos, ast, visitors) {
|
|
const enterExit = visitors[105];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ImportDefaultSpecifier(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkBindingIdentifier(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkImportNamespaceSpecifier(pos, ast, visitors) {
|
|
const enterExit = visitors[106];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ImportNamespaceSpecifier(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkBindingIdentifier(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkWithClause(pos, ast, visitors) {
|
|
walkVecImportAttribute(pos + 8, ast, visitors);
|
|
}
|
|
|
|
function walkImportAttribute(pos, ast, visitors) {
|
|
const enterExit = visitors[107];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ImportAttribute(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkImportAttributeKey(pos + 8, ast, visitors);
|
|
walkStringLiteral(pos + 64, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkImportAttributeKey(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkIdentifierName(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkStringLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ImportAttributeKey`);
|
|
}
|
|
}
|
|
|
|
function walkExportNamedDeclaration(pos, ast, visitors) {
|
|
const enterExit = visitors[108];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ExportNamedDeclaration(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkOptionDeclaration(pos + 8, ast, visitors);
|
|
walkVecExportSpecifier(pos + 24, ast, visitors);
|
|
walkOptionStringLiteral(pos + 48, ast, visitors);
|
|
walkOptionBoxWithClause(pos + 96, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkExportDefaultDeclaration(pos, ast, visitors) {
|
|
const enterExit = visitors[109];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ExportDefaultDeclaration(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExportDefaultDeclarationKind(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkExportAllDeclaration(pos, ast, visitors) {
|
|
const enterExit = visitors[110];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ExportAllDeclaration(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkOptionModuleExportName(pos + 8, ast, visitors);
|
|
walkStringLiteral(pos + 64, ast, visitors);
|
|
walkOptionBoxWithClause(pos + 112, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkExportSpecifier(pos, ast, visitors) {
|
|
const enterExit = visitors[111];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new ExportSpecifier(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkModuleExportName(pos + 8, ast, visitors);
|
|
walkModuleExportName(pos + 64, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkExportDefaultDeclarationKind(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxBooleanLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxNullLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxNumericLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 3:
|
|
walkBoxBigIntLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 4:
|
|
walkBoxRegExpLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 5:
|
|
walkBoxStringLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 6:
|
|
walkBoxTemplateLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 7:
|
|
walkBoxIdentifierReference(pos + 8, ast, visitors);
|
|
return;
|
|
case 8:
|
|
walkBoxMetaProperty(pos + 8, ast, visitors);
|
|
return;
|
|
case 9:
|
|
walkBoxSuper(pos + 8, ast, visitors);
|
|
return;
|
|
case 10:
|
|
walkBoxArrayExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 11:
|
|
walkBoxArrowFunctionExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 12:
|
|
walkBoxAssignmentExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 13:
|
|
walkBoxAwaitExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 14:
|
|
walkBoxBinaryExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 15:
|
|
walkBoxCallExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 16:
|
|
walkBoxChainExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 17:
|
|
walkBoxClass(pos + 8, ast, visitors);
|
|
return;
|
|
case 18:
|
|
walkBoxConditionalExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 19:
|
|
walkBoxFunction(pos + 8, ast, visitors);
|
|
return;
|
|
case 20:
|
|
walkBoxImportExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 21:
|
|
walkBoxLogicalExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 22:
|
|
walkBoxNewExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 23:
|
|
walkBoxObjectExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 24:
|
|
walkBoxParenthesizedExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 25:
|
|
walkBoxSequenceExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 26:
|
|
walkBoxTaggedTemplateExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 27:
|
|
walkBoxThisExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 28:
|
|
walkBoxUnaryExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 29:
|
|
walkBoxUpdateExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 30:
|
|
walkBoxYieldExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 31:
|
|
walkBoxPrivateInExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 32:
|
|
walkBoxJSXElement(pos + 8, ast, visitors);
|
|
return;
|
|
case 33:
|
|
walkBoxJSXFragment(pos + 8, ast, visitors);
|
|
return;
|
|
case 34:
|
|
walkBoxTSAsExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 35:
|
|
walkBoxTSSatisfiesExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 36:
|
|
walkBoxTSTypeAssertion(pos + 8, ast, visitors);
|
|
return;
|
|
case 37:
|
|
walkBoxTSNonNullExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 38:
|
|
walkBoxTSInstantiationExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 39:
|
|
walkBoxV8IntrinsicExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 48:
|
|
walkBoxComputedMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 49:
|
|
walkBoxStaticMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 50:
|
|
walkBoxPrivateFieldExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 64:
|
|
walkBoxFunction(pos + 8, ast, visitors);
|
|
return;
|
|
case 65:
|
|
walkBoxClass(pos + 8, ast, visitors);
|
|
return;
|
|
case 66:
|
|
walkBoxTSInterfaceDeclaration(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ExportDefaultDeclarationKind`);
|
|
}
|
|
}
|
|
|
|
function walkModuleExportName(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkIdentifierName(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkIdentifierReference(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkStringLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ModuleExportName`);
|
|
}
|
|
}
|
|
|
|
function walkV8IntrinsicExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[112];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new V8IntrinsicExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkIdentifierName(pos + 8, ast, visitors);
|
|
walkVecArgument(pos + 32, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkBooleanLiteral(pos, ast, visitors) {
|
|
const visit = visitors[12];
|
|
if (visit !== null) visit(new BooleanLiteral(pos, ast));
|
|
}
|
|
|
|
function walkNullLiteral(pos, ast, visitors) {
|
|
const visit = visitors[13];
|
|
if (visit !== null) visit(new NullLiteral(pos, ast));
|
|
}
|
|
|
|
function walkNumericLiteral(pos, ast, visitors) {
|
|
const visit = visitors[14];
|
|
if (visit !== null) visit(new NumericLiteral(pos, ast));
|
|
}
|
|
|
|
function walkStringLiteral(pos, ast, visitors) {
|
|
const visit = visitors[15];
|
|
if (visit !== null) visit(new StringLiteral(pos, ast));
|
|
}
|
|
|
|
function walkBigIntLiteral(pos, ast, visitors) {
|
|
const visit = visitors[16];
|
|
if (visit !== null) visit(new BigIntLiteral(pos, ast));
|
|
}
|
|
|
|
function walkRegExpLiteral(pos, ast, visitors) {
|
|
const visit = visitors[17];
|
|
if (visit !== null) visit(new RegExpLiteral(pos, ast));
|
|
}
|
|
|
|
function walkJSXElement(pos, ast, visitors) {
|
|
const enterExit = visitors[113];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new JSXElement(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkBoxJSXOpeningElement(pos + 8, ast, visitors);
|
|
walkVecJSXChild(pos + 16, ast, visitors);
|
|
walkOptionBoxJSXClosingElement(pos + 40, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkJSXOpeningElement(pos, ast, visitors) {
|
|
const enterExit = visitors[114];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new JSXOpeningElement(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkJSXElementName(pos + 8, ast, visitors);
|
|
walkOptionBoxTSTypeParameterInstantiation(pos + 24, ast, visitors);
|
|
walkVecJSXAttributeItem(pos + 32, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkJSXClosingElement(pos, ast, visitors) {
|
|
const enterExit = visitors[115];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new JSXClosingElement(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkJSXElementName(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkJSXFragment(pos, ast, visitors) {
|
|
const enterExit = visitors[116];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new JSXFragment(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkJSXOpeningFragment(pos + 8, ast, visitors);
|
|
walkVecJSXChild(pos + 16, ast, visitors);
|
|
walkJSXClosingFragment(pos + 40, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkJSXOpeningFragment(pos, ast, visitors) {
|
|
const visit = visitors[18];
|
|
if (visit !== null) visit(new JSXOpeningFragment(pos, ast));
|
|
}
|
|
|
|
function walkJSXClosingFragment(pos, ast, visitors) {
|
|
const visit = visitors[19];
|
|
if (visit !== null) visit(new JSXClosingFragment(pos, ast));
|
|
}
|
|
|
|
function walkJSXElementName(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxJSXIdentifier(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxIdentifierReference(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxJSXNamespacedName(pos + 8, ast, visitors);
|
|
return;
|
|
case 3:
|
|
walkBoxJSXMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 4:
|
|
walkBoxThisExpression(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for JSXElementName`);
|
|
}
|
|
}
|
|
|
|
function walkJSXNamespacedName(pos, ast, visitors) {
|
|
const enterExit = visitors[117];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new JSXNamespacedName(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkJSXIdentifier(pos + 8, ast, visitors);
|
|
walkJSXIdentifier(pos + 32, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkJSXMemberExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[118];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new JSXMemberExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkJSXMemberExpressionObject(pos + 8, ast, visitors);
|
|
walkJSXIdentifier(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkJSXMemberExpressionObject(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxIdentifierReference(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxJSXMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxThisExpression(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for JSXMemberExpressionObject`);
|
|
}
|
|
}
|
|
|
|
function walkJSXExpressionContainer(pos, ast, visitors) {
|
|
const enterExit = visitors[119];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new JSXExpressionContainer(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkJSXExpression(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkJSXExpression(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxBooleanLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxNullLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxNumericLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 3:
|
|
walkBoxBigIntLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 4:
|
|
walkBoxRegExpLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 5:
|
|
walkBoxStringLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 6:
|
|
walkBoxTemplateLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 7:
|
|
walkBoxIdentifierReference(pos + 8, ast, visitors);
|
|
return;
|
|
case 8:
|
|
walkBoxMetaProperty(pos + 8, ast, visitors);
|
|
return;
|
|
case 9:
|
|
walkBoxSuper(pos + 8, ast, visitors);
|
|
return;
|
|
case 10:
|
|
walkBoxArrayExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 11:
|
|
walkBoxArrowFunctionExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 12:
|
|
walkBoxAssignmentExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 13:
|
|
walkBoxAwaitExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 14:
|
|
walkBoxBinaryExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 15:
|
|
walkBoxCallExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 16:
|
|
walkBoxChainExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 17:
|
|
walkBoxClass(pos + 8, ast, visitors);
|
|
return;
|
|
case 18:
|
|
walkBoxConditionalExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 19:
|
|
walkBoxFunction(pos + 8, ast, visitors);
|
|
return;
|
|
case 20:
|
|
walkBoxImportExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 21:
|
|
walkBoxLogicalExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 22:
|
|
walkBoxNewExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 23:
|
|
walkBoxObjectExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 24:
|
|
walkBoxParenthesizedExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 25:
|
|
walkBoxSequenceExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 26:
|
|
walkBoxTaggedTemplateExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 27:
|
|
walkBoxThisExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 28:
|
|
walkBoxUnaryExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 29:
|
|
walkBoxUpdateExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 30:
|
|
walkBoxYieldExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 31:
|
|
walkBoxPrivateInExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 32:
|
|
walkBoxJSXElement(pos + 8, ast, visitors);
|
|
return;
|
|
case 33:
|
|
walkBoxJSXFragment(pos + 8, ast, visitors);
|
|
return;
|
|
case 34:
|
|
walkBoxTSAsExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 35:
|
|
walkBoxTSSatisfiesExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 36:
|
|
walkBoxTSTypeAssertion(pos + 8, ast, visitors);
|
|
return;
|
|
case 37:
|
|
walkBoxTSNonNullExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 38:
|
|
walkBoxTSInstantiationExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 39:
|
|
walkBoxV8IntrinsicExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 48:
|
|
walkBoxComputedMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 49:
|
|
walkBoxStaticMemberExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 50:
|
|
walkBoxPrivateFieldExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 64:
|
|
walkJSXEmptyExpression(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for JSXExpression`);
|
|
}
|
|
}
|
|
|
|
function walkJSXEmptyExpression(pos, ast, visitors) {
|
|
const visit = visitors[20];
|
|
if (visit !== null) visit(new JSXEmptyExpression(pos, ast));
|
|
}
|
|
|
|
function walkJSXAttributeItem(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxJSXAttribute(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxJSXSpreadAttribute(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for JSXAttributeItem`);
|
|
}
|
|
}
|
|
|
|
function walkJSXAttribute(pos, ast, visitors) {
|
|
const enterExit = visitors[120];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new JSXAttribute(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkJSXAttributeName(pos + 8, ast, visitors);
|
|
walkOptionJSXAttributeValue(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkJSXSpreadAttribute(pos, ast, visitors) {
|
|
const enterExit = visitors[121];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new JSXSpreadAttribute(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkJSXAttributeName(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxJSXIdentifier(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxJSXNamespacedName(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for JSXAttributeName`);
|
|
}
|
|
}
|
|
|
|
function walkJSXAttributeValue(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxStringLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxJSXExpressionContainer(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxJSXElement(pos + 8, ast, visitors);
|
|
return;
|
|
case 3:
|
|
walkBoxJSXFragment(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for JSXAttributeValue`);
|
|
}
|
|
}
|
|
|
|
function walkJSXIdentifier(pos, ast, visitors) {
|
|
const visit = visitors[21];
|
|
if (visit !== null) visit(new JSXIdentifier(pos, ast));
|
|
}
|
|
|
|
function walkJSXChild(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxJSXText(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxJSXElement(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxJSXFragment(pos + 8, ast, visitors);
|
|
return;
|
|
case 3:
|
|
walkBoxJSXExpressionContainer(pos + 8, ast, visitors);
|
|
return;
|
|
case 4:
|
|
walkBoxJSXSpreadChild(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for JSXChild`);
|
|
}
|
|
}
|
|
|
|
function walkJSXSpreadChild(pos, ast, visitors) {
|
|
const enterExit = visitors[122];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new JSXSpreadChild(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkJSXText(pos, ast, visitors) {
|
|
const visit = visitors[22];
|
|
if (visit !== null) visit(new JSXText(pos, ast));
|
|
}
|
|
|
|
function walkTSEnumDeclaration(pos, ast, visitors) {
|
|
const enterExit = visitors[123];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSEnumDeclaration(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkBindingIdentifier(pos + 8, ast, visitors);
|
|
walkTSEnumBody(pos + 40, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSEnumBody(pos, ast, visitors) {
|
|
const enterExit = visitors[124];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSEnumBody(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecTSEnumMember(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSEnumMember(pos, ast, visitors) {
|
|
const enterExit = visitors[125];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSEnumMember(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkTSEnumMemberName(pos + 8, ast, visitors);
|
|
walkOptionExpression(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSEnumMemberName(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxIdentifierName(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxStringLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxStringLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 3:
|
|
walkBoxTemplateLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSEnumMemberName`);
|
|
}
|
|
}
|
|
|
|
function walkTSTypeAnnotation(pos, ast, visitors) {
|
|
const enterExit = visitors[126];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSTypeAnnotation(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkTSType(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSLiteralType(pos, ast, visitors) {
|
|
const enterExit = visitors[127];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSLiteralType(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkTSLiteral(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSLiteral(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxBooleanLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxNumericLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxBigIntLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 3:
|
|
walkBoxStringLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 4:
|
|
walkBoxTemplateLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 5:
|
|
walkBoxUnaryExpression(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSLiteral`);
|
|
}
|
|
}
|
|
|
|
function walkTSType(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxTSAnyKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxTSBigIntKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxTSBooleanKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 3:
|
|
walkBoxTSIntrinsicKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 4:
|
|
walkBoxTSNeverKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 5:
|
|
walkBoxTSNullKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 6:
|
|
walkBoxTSNumberKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 7:
|
|
walkBoxTSObjectKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 8:
|
|
walkBoxTSStringKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 9:
|
|
walkBoxTSSymbolKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 10:
|
|
walkBoxTSThisType(pos + 8, ast, visitors);
|
|
return;
|
|
case 11:
|
|
walkBoxTSUndefinedKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 12:
|
|
walkBoxTSUnknownKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 13:
|
|
walkBoxTSVoidKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 14:
|
|
walkBoxTSArrayType(pos + 8, ast, visitors);
|
|
return;
|
|
case 15:
|
|
walkBoxTSConditionalType(pos + 8, ast, visitors);
|
|
return;
|
|
case 16:
|
|
walkBoxTSConstructorType(pos + 8, ast, visitors);
|
|
return;
|
|
case 17:
|
|
walkBoxTSFunctionType(pos + 8, ast, visitors);
|
|
return;
|
|
case 18:
|
|
walkBoxTSImportType(pos + 8, ast, visitors);
|
|
return;
|
|
case 19:
|
|
walkBoxTSIndexedAccessType(pos + 8, ast, visitors);
|
|
return;
|
|
case 20:
|
|
walkBoxTSInferType(pos + 8, ast, visitors);
|
|
return;
|
|
case 21:
|
|
walkBoxTSIntersectionType(pos + 8, ast, visitors);
|
|
return;
|
|
case 22:
|
|
walkBoxTSLiteralType(pos + 8, ast, visitors);
|
|
return;
|
|
case 23:
|
|
walkBoxTSMappedType(pos + 8, ast, visitors);
|
|
return;
|
|
case 24:
|
|
walkBoxTSNamedTupleMember(pos + 8, ast, visitors);
|
|
return;
|
|
case 26:
|
|
walkBoxTSTemplateLiteralType(pos + 8, ast, visitors);
|
|
return;
|
|
case 27:
|
|
walkBoxTSTupleType(pos + 8, ast, visitors);
|
|
return;
|
|
case 28:
|
|
walkBoxTSTypeLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 29:
|
|
walkBoxTSTypeOperator(pos + 8, ast, visitors);
|
|
return;
|
|
case 30:
|
|
walkBoxTSTypePredicate(pos + 8, ast, visitors);
|
|
return;
|
|
case 31:
|
|
walkBoxTSTypeQuery(pos + 8, ast, visitors);
|
|
return;
|
|
case 32:
|
|
walkBoxTSTypeReference(pos + 8, ast, visitors);
|
|
return;
|
|
case 33:
|
|
walkBoxTSUnionType(pos + 8, ast, visitors);
|
|
return;
|
|
case 34:
|
|
walkBoxTSParenthesizedType(pos + 8, ast, visitors);
|
|
return;
|
|
case 35:
|
|
walkBoxJSDocNullableType(pos + 8, ast, visitors);
|
|
return;
|
|
case 36:
|
|
walkBoxJSDocNonNullableType(pos + 8, ast, visitors);
|
|
return;
|
|
case 37:
|
|
walkBoxJSDocUnknownType(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSType`);
|
|
}
|
|
}
|
|
|
|
function walkTSConditionalType(pos, ast, visitors) {
|
|
const enterExit = visitors[128];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSConditionalType(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkTSType(pos + 8, ast, visitors);
|
|
walkTSType(pos + 24, ast, visitors);
|
|
walkTSType(pos + 40, ast, visitors);
|
|
walkTSType(pos + 56, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSUnionType(pos, ast, visitors) {
|
|
const enterExit = visitors[129];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSUnionType(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecTSType(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSIntersectionType(pos, ast, visitors) {
|
|
const enterExit = visitors[130];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSIntersectionType(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecTSType(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSParenthesizedType(pos, ast, visitors) {
|
|
const enterExit = visitors[131];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSParenthesizedType(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkTSType(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSTypeOperator(pos, ast, visitors) {
|
|
const enterExit = visitors[132];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSTypeOperator(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkTSType(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSArrayType(pos, ast, visitors) {
|
|
const enterExit = visitors[133];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSArrayType(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkTSType(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSIndexedAccessType(pos, ast, visitors) {
|
|
const enterExit = visitors[134];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSIndexedAccessType(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkTSType(pos + 8, ast, visitors);
|
|
walkTSType(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSTupleType(pos, ast, visitors) {
|
|
const enterExit = visitors[135];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSTupleType(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecTSTupleElement(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSNamedTupleMember(pos, ast, visitors) {
|
|
const enterExit = visitors[136];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSNamedTupleMember(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkIdentifierName(pos + 8, ast, visitors);
|
|
walkTSTupleElement(pos + 32, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSOptionalType(pos, ast, visitors) {
|
|
const enterExit = visitors[137];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSOptionalType(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkTSType(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSRestType(pos, ast, visitors) {
|
|
const enterExit = visitors[138];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSRestType(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkTSType(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSTupleElement(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxTSAnyKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxTSBigIntKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxTSBooleanKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 3:
|
|
walkBoxTSIntrinsicKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 4:
|
|
walkBoxTSNeverKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 5:
|
|
walkBoxTSNullKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 6:
|
|
walkBoxTSNumberKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 7:
|
|
walkBoxTSObjectKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 8:
|
|
walkBoxTSStringKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 9:
|
|
walkBoxTSSymbolKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 10:
|
|
walkBoxTSThisType(pos + 8, ast, visitors);
|
|
return;
|
|
case 11:
|
|
walkBoxTSUndefinedKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 12:
|
|
walkBoxTSUnknownKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 13:
|
|
walkBoxTSVoidKeyword(pos + 8, ast, visitors);
|
|
return;
|
|
case 14:
|
|
walkBoxTSArrayType(pos + 8, ast, visitors);
|
|
return;
|
|
case 15:
|
|
walkBoxTSConditionalType(pos + 8, ast, visitors);
|
|
return;
|
|
case 16:
|
|
walkBoxTSConstructorType(pos + 8, ast, visitors);
|
|
return;
|
|
case 17:
|
|
walkBoxTSFunctionType(pos + 8, ast, visitors);
|
|
return;
|
|
case 18:
|
|
walkBoxTSImportType(pos + 8, ast, visitors);
|
|
return;
|
|
case 19:
|
|
walkBoxTSIndexedAccessType(pos + 8, ast, visitors);
|
|
return;
|
|
case 20:
|
|
walkBoxTSInferType(pos + 8, ast, visitors);
|
|
return;
|
|
case 21:
|
|
walkBoxTSIntersectionType(pos + 8, ast, visitors);
|
|
return;
|
|
case 22:
|
|
walkBoxTSLiteralType(pos + 8, ast, visitors);
|
|
return;
|
|
case 23:
|
|
walkBoxTSMappedType(pos + 8, ast, visitors);
|
|
return;
|
|
case 24:
|
|
walkBoxTSNamedTupleMember(pos + 8, ast, visitors);
|
|
return;
|
|
case 26:
|
|
walkBoxTSTemplateLiteralType(pos + 8, ast, visitors);
|
|
return;
|
|
case 27:
|
|
walkBoxTSTupleType(pos + 8, ast, visitors);
|
|
return;
|
|
case 28:
|
|
walkBoxTSTypeLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
case 29:
|
|
walkBoxTSTypeOperator(pos + 8, ast, visitors);
|
|
return;
|
|
case 30:
|
|
walkBoxTSTypePredicate(pos + 8, ast, visitors);
|
|
return;
|
|
case 31:
|
|
walkBoxTSTypeQuery(pos + 8, ast, visitors);
|
|
return;
|
|
case 32:
|
|
walkBoxTSTypeReference(pos + 8, ast, visitors);
|
|
return;
|
|
case 33:
|
|
walkBoxTSUnionType(pos + 8, ast, visitors);
|
|
return;
|
|
case 34:
|
|
walkBoxTSParenthesizedType(pos + 8, ast, visitors);
|
|
return;
|
|
case 35:
|
|
walkBoxJSDocNullableType(pos + 8, ast, visitors);
|
|
return;
|
|
case 36:
|
|
walkBoxJSDocNonNullableType(pos + 8, ast, visitors);
|
|
return;
|
|
case 37:
|
|
walkBoxJSDocUnknownType(pos + 8, ast, visitors);
|
|
return;
|
|
case 64:
|
|
walkBoxTSOptionalType(pos + 8, ast, visitors);
|
|
return;
|
|
case 65:
|
|
walkBoxTSRestType(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSTupleElement`);
|
|
}
|
|
}
|
|
|
|
function walkTSAnyKeyword(pos, ast, visitors) {
|
|
const visit = visitors[23];
|
|
if (visit !== null) visit(new TSAnyKeyword(pos, ast));
|
|
}
|
|
|
|
function walkTSStringKeyword(pos, ast, visitors) {
|
|
const visit = visitors[24];
|
|
if (visit !== null) visit(new TSStringKeyword(pos, ast));
|
|
}
|
|
|
|
function walkTSBooleanKeyword(pos, ast, visitors) {
|
|
const visit = visitors[25];
|
|
if (visit !== null) visit(new TSBooleanKeyword(pos, ast));
|
|
}
|
|
|
|
function walkTSNumberKeyword(pos, ast, visitors) {
|
|
const visit = visitors[26];
|
|
if (visit !== null) visit(new TSNumberKeyword(pos, ast));
|
|
}
|
|
|
|
function walkTSNeverKeyword(pos, ast, visitors) {
|
|
const visit = visitors[27];
|
|
if (visit !== null) visit(new TSNeverKeyword(pos, ast));
|
|
}
|
|
|
|
function walkTSIntrinsicKeyword(pos, ast, visitors) {
|
|
const visit = visitors[28];
|
|
if (visit !== null) visit(new TSIntrinsicKeyword(pos, ast));
|
|
}
|
|
|
|
function walkTSUnknownKeyword(pos, ast, visitors) {
|
|
const visit = visitors[29];
|
|
if (visit !== null) visit(new TSUnknownKeyword(pos, ast));
|
|
}
|
|
|
|
function walkTSNullKeyword(pos, ast, visitors) {
|
|
const visit = visitors[30];
|
|
if (visit !== null) visit(new TSNullKeyword(pos, ast));
|
|
}
|
|
|
|
function walkTSUndefinedKeyword(pos, ast, visitors) {
|
|
const visit = visitors[31];
|
|
if (visit !== null) visit(new TSUndefinedKeyword(pos, ast));
|
|
}
|
|
|
|
function walkTSVoidKeyword(pos, ast, visitors) {
|
|
const visit = visitors[32];
|
|
if (visit !== null) visit(new TSVoidKeyword(pos, ast));
|
|
}
|
|
|
|
function walkTSSymbolKeyword(pos, ast, visitors) {
|
|
const visit = visitors[33];
|
|
if (visit !== null) visit(new TSSymbolKeyword(pos, ast));
|
|
}
|
|
|
|
function walkTSThisType(pos, ast, visitors) {
|
|
const visit = visitors[34];
|
|
if (visit !== null) visit(new TSThisType(pos, ast));
|
|
}
|
|
|
|
function walkTSObjectKeyword(pos, ast, visitors) {
|
|
const visit = visitors[35];
|
|
if (visit !== null) visit(new TSObjectKeyword(pos, ast));
|
|
}
|
|
|
|
function walkTSBigIntKeyword(pos, ast, visitors) {
|
|
const visit = visitors[36];
|
|
if (visit !== null) visit(new TSBigIntKeyword(pos, ast));
|
|
}
|
|
|
|
function walkTSTypeReference(pos, ast, visitors) {
|
|
const enterExit = visitors[139];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSTypeReference(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkTSTypeName(pos + 8, ast, visitors);
|
|
walkOptionBoxTSTypeParameterInstantiation(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSTypeName(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxIdentifierReference(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxTSQualifiedName(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxThisExpression(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSTypeName`);
|
|
}
|
|
}
|
|
|
|
function walkTSQualifiedName(pos, ast, visitors) {
|
|
const enterExit = visitors[140];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSQualifiedName(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkTSTypeName(pos + 8, ast, visitors);
|
|
walkIdentifierName(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSTypeParameterInstantiation(pos, ast, visitors) {
|
|
const enterExit = visitors[141];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSTypeParameterInstantiation(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecTSType(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSTypeParameter(pos, ast, visitors) {
|
|
const enterExit = visitors[142];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSTypeParameter(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkBindingIdentifier(pos + 8, ast, visitors);
|
|
walkOptionTSType(pos + 40, ast, visitors);
|
|
walkOptionTSType(pos + 56, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSTypeParameterDeclaration(pos, ast, visitors) {
|
|
const enterExit = visitors[143];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSTypeParameterDeclaration(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecTSTypeParameter(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSTypeAliasDeclaration(pos, ast, visitors) {
|
|
const enterExit = visitors[144];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSTypeAliasDeclaration(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkBindingIdentifier(pos + 8, ast, visitors);
|
|
walkOptionBoxTSTypeParameterDeclaration(pos + 40, ast, visitors);
|
|
walkTSType(pos + 48, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSClassImplements(pos, ast, visitors) {
|
|
const enterExit = visitors[145];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSClassImplements(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkTSTypeName(pos + 8, ast, visitors);
|
|
walkOptionBoxTSTypeParameterInstantiation(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSInterfaceDeclaration(pos, ast, visitors) {
|
|
const enterExit = visitors[146];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSInterfaceDeclaration(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkBindingIdentifier(pos + 8, ast, visitors);
|
|
walkOptionBoxTSTypeParameterDeclaration(pos + 40, ast, visitors);
|
|
walkVecTSInterfaceHeritage(pos + 48, ast, visitors);
|
|
walkBoxTSInterfaceBody(pos + 72, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSInterfaceBody(pos, ast, visitors) {
|
|
const enterExit = visitors[147];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSInterfaceBody(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecTSSignature(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSPropertySignature(pos, ast, visitors) {
|
|
const enterExit = visitors[148];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSPropertySignature(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkPropertyKey(pos + 8, ast, visitors);
|
|
walkOptionBoxTSTypeAnnotation(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSSignature(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxTSIndexSignature(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxTSPropertySignature(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxTSCallSignatureDeclaration(pos + 8, ast, visitors);
|
|
return;
|
|
case 3:
|
|
walkBoxTSConstructSignatureDeclaration(pos + 8, ast, visitors);
|
|
return;
|
|
case 4:
|
|
walkBoxTSMethodSignature(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSSignature`);
|
|
}
|
|
}
|
|
|
|
function walkTSIndexSignature(pos, ast, visitors) {
|
|
const enterExit = visitors[149];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSIndexSignature(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecTSIndexSignatureName(pos + 8, ast, visitors);
|
|
walkBoxTSTypeAnnotation(pos + 32, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSCallSignatureDeclaration(pos, ast, visitors) {
|
|
const enterExit = visitors[150];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSCallSignatureDeclaration(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkOptionBoxTSTypeParameterDeclaration(pos + 8, ast, visitors);
|
|
walkBoxFormalParameters(pos + 24, ast, visitors);
|
|
walkOptionBoxTSTypeAnnotation(pos + 32, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSMethodSignature(pos, ast, visitors) {
|
|
const enterExit = visitors[151];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSMethodSignature(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkPropertyKey(pos + 8, ast, visitors);
|
|
walkOptionBoxTSTypeParameterDeclaration(pos + 24, ast, visitors);
|
|
walkBoxFormalParameters(pos + 40, ast, visitors);
|
|
walkOptionBoxTSTypeAnnotation(pos + 48, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSConstructSignatureDeclaration(pos, ast, visitors) {
|
|
const enterExit = visitors[152];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSConstructSignatureDeclaration(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkOptionBoxTSTypeParameterDeclaration(pos + 8, ast, visitors);
|
|
walkBoxFormalParameters(pos + 16, ast, visitors);
|
|
walkOptionBoxTSTypeAnnotation(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSIndexSignatureName(pos, ast, visitors) {
|
|
const enterExit = visitors[153];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSIndexSignatureName(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkBoxTSTypeAnnotation(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSInterfaceHeritage(pos, ast, visitors) {
|
|
const enterExit = visitors[154];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSInterfaceHeritage(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
walkOptionBoxTSTypeParameterInstantiation(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSTypePredicate(pos, ast, visitors) {
|
|
const enterExit = visitors[155];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSTypePredicate(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkTSTypePredicateName(pos + 8, ast, visitors);
|
|
walkOptionBoxTSTypeAnnotation(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSTypePredicateName(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxIdentifierName(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkTSThisType(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSTypePredicateName`);
|
|
}
|
|
}
|
|
|
|
function walkTSModuleDeclaration(pos, ast, visitors) {
|
|
const enterExit = visitors[156];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSModuleDeclaration(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkTSModuleDeclarationName(pos + 8, ast, visitors);
|
|
walkOptionTSModuleDeclarationBody(pos + 64, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSModuleDeclarationName(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBindingIdentifier(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkStringLiteral(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSModuleDeclarationName`);
|
|
}
|
|
}
|
|
|
|
function walkTSModuleDeclarationBody(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxTSModuleDeclaration(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxTSModuleBlock(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSModuleDeclarationBody`);
|
|
}
|
|
}
|
|
|
|
function walkTSModuleBlock(pos, ast, visitors) {
|
|
const enterExit = visitors[157];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSModuleBlock(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecStatement(pos + 32, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSTypeLiteral(pos, ast, visitors) {
|
|
const enterExit = visitors[158];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSTypeLiteral(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecTSSignature(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSInferType(pos, ast, visitors) {
|
|
const enterExit = visitors[159];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSInferType(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkBoxTSTypeParameter(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSTypeQuery(pos, ast, visitors) {
|
|
const enterExit = visitors[160];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSTypeQuery(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkTSTypeQueryExprName(pos + 8, ast, visitors);
|
|
walkOptionBoxTSTypeParameterInstantiation(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSTypeQueryExprName(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxIdentifierReference(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxTSQualifiedName(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxThisExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 3:
|
|
walkBoxTSImportType(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSTypeQueryExprName`);
|
|
}
|
|
}
|
|
|
|
function walkTSImportType(pos, ast, visitors) {
|
|
const enterExit = visitors[161];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSImportType(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkTSType(pos + 8, ast, visitors);
|
|
walkOptionBoxObjectExpression(pos + 24, ast, visitors);
|
|
walkOptionTSImportTypeQualifier(pos + 32, ast, visitors);
|
|
walkOptionBoxTSTypeParameterInstantiation(pos + 48, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSImportTypeQualifier(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxIdentifierName(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxTSImportTypeQualifiedName(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSImportTypeQualifier`);
|
|
}
|
|
}
|
|
|
|
function walkTSImportTypeQualifiedName(pos, ast, visitors) {
|
|
const enterExit = visitors[162];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSImportTypeQualifiedName(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkTSImportTypeQualifier(pos + 8, ast, visitors);
|
|
walkIdentifierName(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSFunctionType(pos, ast, visitors) {
|
|
const enterExit = visitors[163];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSFunctionType(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkOptionBoxTSTypeParameterDeclaration(pos + 8, ast, visitors);
|
|
walkBoxFormalParameters(pos + 24, ast, visitors);
|
|
walkBoxTSTypeAnnotation(pos + 32, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSConstructorType(pos, ast, visitors) {
|
|
const enterExit = visitors[164];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSConstructorType(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkOptionBoxTSTypeParameterDeclaration(pos + 8, ast, visitors);
|
|
walkBoxFormalParameters(pos + 16, ast, visitors);
|
|
walkBoxTSTypeAnnotation(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSMappedType(pos, ast, visitors) {
|
|
const enterExit = visitors[165];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSMappedType(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkOptionTSType(pos + 16, ast, visitors);
|
|
walkOptionTSType(pos + 32, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSTemplateLiteralType(pos, ast, visitors) {
|
|
const enterExit = visitors[166];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSTemplateLiteralType(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkVecTemplateElement(pos + 8, ast, visitors);
|
|
walkVecTSType(pos + 32, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSAsExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[167];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSAsExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
walkTSType(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSSatisfiesExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[168];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSSatisfiesExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
walkTSType(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSTypeAssertion(pos, ast, visitors) {
|
|
const enterExit = visitors[169];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSTypeAssertion(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkTSType(pos + 8, ast, visitors);
|
|
walkExpression(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSImportEqualsDeclaration(pos, ast, visitors) {
|
|
const enterExit = visitors[170];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSImportEqualsDeclaration(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkBindingIdentifier(pos + 8, ast, visitors);
|
|
walkTSModuleReference(pos + 40, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSModuleReference(pos, ast, visitors) {
|
|
switch (ast.buffer[pos]) {
|
|
case 0:
|
|
walkBoxIdentifierReference(pos + 8, ast, visitors);
|
|
return;
|
|
case 1:
|
|
walkBoxTSQualifiedName(pos + 8, ast, visitors);
|
|
return;
|
|
case 2:
|
|
walkBoxThisExpression(pos + 8, ast, visitors);
|
|
return;
|
|
case 3:
|
|
walkBoxTSExternalModuleReference(pos + 8, ast, visitors);
|
|
return;
|
|
default:
|
|
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSModuleReference`);
|
|
}
|
|
}
|
|
|
|
function walkTSExternalModuleReference(pos, ast, visitors) {
|
|
const enterExit = visitors[171];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSExternalModuleReference(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkStringLiteral(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSNonNullExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[172];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSNonNullExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkDecorator(pos, ast, visitors) {
|
|
const enterExit = visitors[173];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new Decorator(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSExportAssignment(pos, ast, visitors) {
|
|
const enterExit = visitors[174];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSExportAssignment(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSNamespaceExportDeclaration(pos, ast, visitors) {
|
|
const enterExit = visitors[175];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSNamespaceExportDeclaration(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkIdentifierName(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkTSInstantiationExpression(pos, ast, visitors) {
|
|
const enterExit = visitors[176];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new TSInstantiationExpression(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkExpression(pos + 8, ast, visitors);
|
|
walkBoxTSTypeParameterInstantiation(pos + 24, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkJSDocNullableType(pos, ast, visitors) {
|
|
const enterExit = visitors[177];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new JSDocNullableType(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkTSType(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkJSDocNonNullableType(pos, ast, visitors) {
|
|
const enterExit = visitors[178];
|
|
let node, enter, exit = null;
|
|
if (enterExit !== null) {
|
|
({ enter, exit } = enterExit);
|
|
node = new JSDocNonNullableType(pos, ast);
|
|
if (enter !== null) enter(node);
|
|
}
|
|
|
|
walkTSType(pos + 8, ast, visitors);
|
|
|
|
if (exit !== null) exit(node);
|
|
}
|
|
|
|
function walkJSDocUnknownType(pos, ast, visitors) {
|
|
const visit = visitors[37];
|
|
if (visit !== null) visit(new JSDocUnknownType(pos, ast));
|
|
}
|
|
|
|
function walkOptionHashbang(pos, ast, visitors) {
|
|
if (!(ast.buffer.uint32[(pos + 8) >> 2] === 0 && ast.buffer.uint32[(pos + 12) >> 2] === 0)) {
|
|
walkHashbang(pos, ast, visitors);
|
|
}
|
|
}
|
|
|
|
function walkVecStatement(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 16;
|
|
while (pos < endPos) {
|
|
walkStatement(pos, ast, visitors);
|
|
pos += 16;
|
|
}
|
|
}
|
|
|
|
function walkBoxBooleanLiteral(pos, ast, visitors) {
|
|
return walkBooleanLiteral(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxNullLiteral(pos, ast, visitors) {
|
|
return walkNullLiteral(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxNumericLiteral(pos, ast, visitors) {
|
|
return walkNumericLiteral(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxBigIntLiteral(pos, ast, visitors) {
|
|
return walkBigIntLiteral(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxRegExpLiteral(pos, ast, visitors) {
|
|
return walkRegExpLiteral(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxStringLiteral(pos, ast, visitors) {
|
|
return walkStringLiteral(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTemplateLiteral(pos, ast, visitors) {
|
|
return walkTemplateLiteral(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxIdentifierReference(pos, ast, visitors) {
|
|
return walkIdentifierReference(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxMetaProperty(pos, ast, visitors) {
|
|
return walkMetaProperty(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxSuper(pos, ast, visitors) {
|
|
return walkSuper(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxArrayExpression(pos, ast, visitors) {
|
|
return walkArrayExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxArrowFunctionExpression(pos, ast, visitors) {
|
|
return walkArrowFunctionExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxAssignmentExpression(pos, ast, visitors) {
|
|
return walkAssignmentExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxAwaitExpression(pos, ast, visitors) {
|
|
return walkAwaitExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxBinaryExpression(pos, ast, visitors) {
|
|
return walkBinaryExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxCallExpression(pos, ast, visitors) {
|
|
return walkCallExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxChainExpression(pos, ast, visitors) {
|
|
return walkChainExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxClass(pos, ast, visitors) {
|
|
return walkClass(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxConditionalExpression(pos, ast, visitors) {
|
|
return walkConditionalExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxFunction(pos, ast, visitors) {
|
|
return walkFunction(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxImportExpression(pos, ast, visitors) {
|
|
return walkImportExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxLogicalExpression(pos, ast, visitors) {
|
|
return walkLogicalExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxNewExpression(pos, ast, visitors) {
|
|
return walkNewExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxObjectExpression(pos, ast, visitors) {
|
|
return walkObjectExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxParenthesizedExpression(pos, ast, visitors) {
|
|
return walkParenthesizedExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxSequenceExpression(pos, ast, visitors) {
|
|
return walkSequenceExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTaggedTemplateExpression(pos, ast, visitors) {
|
|
return walkTaggedTemplateExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxThisExpression(pos, ast, visitors) {
|
|
return walkThisExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxUnaryExpression(pos, ast, visitors) {
|
|
return walkUnaryExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxUpdateExpression(pos, ast, visitors) {
|
|
return walkUpdateExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxYieldExpression(pos, ast, visitors) {
|
|
return walkYieldExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxPrivateInExpression(pos, ast, visitors) {
|
|
return walkPrivateInExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxJSXElement(pos, ast, visitors) {
|
|
return walkJSXElement(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxJSXFragment(pos, ast, visitors) {
|
|
return walkJSXFragment(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSAsExpression(pos, ast, visitors) {
|
|
return walkTSAsExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSSatisfiesExpression(pos, ast, visitors) {
|
|
return walkTSSatisfiesExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSTypeAssertion(pos, ast, visitors) {
|
|
return walkTSTypeAssertion(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSNonNullExpression(pos, ast, visitors) {
|
|
return walkTSNonNullExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSInstantiationExpression(pos, ast, visitors) {
|
|
return walkTSInstantiationExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxV8IntrinsicExpression(pos, ast, visitors) {
|
|
return walkV8IntrinsicExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkVecArrayExpressionElement(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 16;
|
|
while (pos < endPos) {
|
|
walkArrayExpressionElement(pos, ast, visitors);
|
|
pos += 16;
|
|
}
|
|
}
|
|
|
|
function walkBoxSpreadElement(pos, ast, visitors) {
|
|
return walkSpreadElement(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkVecObjectPropertyKind(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 16;
|
|
while (pos < endPos) {
|
|
walkObjectPropertyKind(pos, ast, visitors);
|
|
pos += 16;
|
|
}
|
|
}
|
|
|
|
function walkBoxObjectProperty(pos, ast, visitors) {
|
|
return walkObjectProperty(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxIdentifierName(pos, ast, visitors) {
|
|
return walkIdentifierName(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxPrivateIdentifier(pos, ast, visitors) {
|
|
return walkPrivateIdentifier(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkVecTemplateElement(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 48;
|
|
while (pos < endPos) {
|
|
walkTemplateElement(pos, ast, visitors);
|
|
pos += 48;
|
|
}
|
|
}
|
|
|
|
function walkVecExpression(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 16;
|
|
while (pos < endPos) {
|
|
walkExpression(pos, ast, visitors);
|
|
pos += 16;
|
|
}
|
|
}
|
|
|
|
function walkBoxTSTypeParameterInstantiation(pos, ast, visitors) {
|
|
return walkTSTypeParameterInstantiation(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkOptionBoxTSTypeParameterInstantiation(pos, ast, visitors) {
|
|
if (!(ast.buffer.uint32[pos >> 2] === 0 && ast.buffer.uint32[(pos + 4) >> 2] === 0)) {
|
|
walkBoxTSTypeParameterInstantiation(pos, ast, visitors);
|
|
}
|
|
}
|
|
|
|
function walkBoxComputedMemberExpression(pos, ast, visitors) {
|
|
return walkComputedMemberExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxStaticMemberExpression(pos, ast, visitors) {
|
|
return walkStaticMemberExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxPrivateFieldExpression(pos, ast, visitors) {
|
|
return walkPrivateFieldExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkVecArgument(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 16;
|
|
while (pos < endPos) {
|
|
walkArgument(pos, ast, visitors);
|
|
pos += 16;
|
|
}
|
|
}
|
|
|
|
function walkBoxArrayAssignmentTarget(pos, ast, visitors) {
|
|
return walkArrayAssignmentTarget(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxObjectAssignmentTarget(pos, ast, visitors) {
|
|
return walkObjectAssignmentTarget(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkOptionAssignmentTargetMaybeDefault(pos, ast, visitors) {
|
|
if (!(ast.buffer[pos] === 51)) walkAssignmentTargetMaybeDefault(pos, ast, visitors);
|
|
}
|
|
|
|
function walkVecOptionAssignmentTargetMaybeDefault(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 16;
|
|
while (pos < endPos) {
|
|
walkOptionAssignmentTargetMaybeDefault(pos, ast, visitors);
|
|
pos += 16;
|
|
}
|
|
}
|
|
|
|
function walkVecAssignmentTargetProperty(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 16;
|
|
while (pos < endPos) {
|
|
walkAssignmentTargetProperty(pos, ast, visitors);
|
|
pos += 16;
|
|
}
|
|
}
|
|
|
|
function walkBoxAssignmentTargetWithDefault(pos, ast, visitors) {
|
|
return walkAssignmentTargetWithDefault(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxAssignmentTargetPropertyIdentifier(pos, ast, visitors) {
|
|
return walkAssignmentTargetPropertyIdentifier(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxAssignmentTargetPropertyProperty(pos, ast, visitors) {
|
|
return walkAssignmentTargetPropertyProperty(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkOptionExpression(pos, ast, visitors) {
|
|
if (!(ast.buffer[pos] === 51)) walkExpression(pos, ast, visitors);
|
|
}
|
|
|
|
function walkBoxBlockStatement(pos, ast, visitors) {
|
|
return walkBlockStatement(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxBreakStatement(pos, ast, visitors) {
|
|
return walkBreakStatement(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxContinueStatement(pos, ast, visitors) {
|
|
return walkContinueStatement(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxDebuggerStatement(pos, ast, visitors) {
|
|
return walkDebuggerStatement(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxDoWhileStatement(pos, ast, visitors) {
|
|
return walkDoWhileStatement(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxEmptyStatement(pos, ast, visitors) {
|
|
return walkEmptyStatement(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxExpressionStatement(pos, ast, visitors) {
|
|
return walkExpressionStatement(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxForInStatement(pos, ast, visitors) {
|
|
return walkForInStatement(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxForOfStatement(pos, ast, visitors) {
|
|
return walkForOfStatement(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxForStatement(pos, ast, visitors) {
|
|
return walkForStatement(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxIfStatement(pos, ast, visitors) {
|
|
return walkIfStatement(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxLabeledStatement(pos, ast, visitors) {
|
|
return walkLabeledStatement(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxReturnStatement(pos, ast, visitors) {
|
|
return walkReturnStatement(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxSwitchStatement(pos, ast, visitors) {
|
|
return walkSwitchStatement(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxThrowStatement(pos, ast, visitors) {
|
|
return walkThrowStatement(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTryStatement(pos, ast, visitors) {
|
|
return walkTryStatement(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxWhileStatement(pos, ast, visitors) {
|
|
return walkWhileStatement(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxWithStatement(pos, ast, visitors) {
|
|
return walkWithStatement(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxVariableDeclaration(pos, ast, visitors) {
|
|
return walkVariableDeclaration(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSTypeAliasDeclaration(pos, ast, visitors) {
|
|
return walkTSTypeAliasDeclaration(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSInterfaceDeclaration(pos, ast, visitors) {
|
|
return walkTSInterfaceDeclaration(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSEnumDeclaration(pos, ast, visitors) {
|
|
return walkTSEnumDeclaration(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSModuleDeclaration(pos, ast, visitors) {
|
|
return walkTSModuleDeclaration(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSImportEqualsDeclaration(pos, ast, visitors) {
|
|
return walkTSImportEqualsDeclaration(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkVecVariableDeclarator(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 64;
|
|
while (pos < endPos) {
|
|
walkVariableDeclarator(pos, ast, visitors);
|
|
pos += 64;
|
|
}
|
|
}
|
|
|
|
function walkOptionStatement(pos, ast, visitors) {
|
|
if (!(ast.buffer[pos] === 70)) walkStatement(pos, ast, visitors);
|
|
}
|
|
|
|
function walkOptionForStatementInit(pos, ast, visitors) {
|
|
if (!(ast.buffer[pos] === 65)) walkForStatementInit(pos, ast, visitors);
|
|
}
|
|
|
|
function walkOptionLabelIdentifier(pos, ast, visitors) {
|
|
if (!(ast.buffer.uint32[(pos + 8) >> 2] === 0 && ast.buffer.uint32[(pos + 12) >> 2] === 0)) {
|
|
walkLabelIdentifier(pos, ast, visitors);
|
|
}
|
|
}
|
|
|
|
function walkVecSwitchCase(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 48;
|
|
while (pos < endPos) {
|
|
walkSwitchCase(pos, ast, visitors);
|
|
pos += 48;
|
|
}
|
|
}
|
|
|
|
function walkBoxCatchClause(pos, ast, visitors) {
|
|
return walkCatchClause(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkOptionBoxCatchClause(pos, ast, visitors) {
|
|
if (!(ast.buffer.uint32[pos >> 2] === 0 && ast.buffer.uint32[(pos + 4) >> 2] === 0)) {
|
|
walkBoxCatchClause(pos, ast, visitors);
|
|
}
|
|
}
|
|
|
|
function walkOptionBoxBlockStatement(pos, ast, visitors) {
|
|
if (!(ast.buffer.uint32[pos >> 2] === 0 && ast.buffer.uint32[(pos + 4) >> 2] === 0)) {
|
|
walkBoxBlockStatement(pos, ast, visitors);
|
|
}
|
|
}
|
|
|
|
function walkOptionCatchParameter(pos, ast, visitors) {
|
|
if (!(ast.buffer[pos + 32] === 2)) walkCatchParameter(pos, ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSTypeAnnotation(pos, ast, visitors) {
|
|
return walkTSTypeAnnotation(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkOptionBoxTSTypeAnnotation(pos, ast, visitors) {
|
|
if (!(ast.buffer.uint32[pos >> 2] === 0 && ast.buffer.uint32[(pos + 4) >> 2] === 0)) {
|
|
walkBoxTSTypeAnnotation(pos, ast, visitors);
|
|
}
|
|
}
|
|
|
|
function walkBoxBindingIdentifier(pos, ast, visitors) {
|
|
return walkBindingIdentifier(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxObjectPattern(pos, ast, visitors) {
|
|
return walkObjectPattern(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxArrayPattern(pos, ast, visitors) {
|
|
return walkArrayPattern(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxAssignmentPattern(pos, ast, visitors) {
|
|
return walkAssignmentPattern(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkVecBindingProperty(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 64;
|
|
while (pos < endPos) {
|
|
walkBindingProperty(pos, ast, visitors);
|
|
pos += 64;
|
|
}
|
|
}
|
|
|
|
function walkOptionBindingPattern(pos, ast, visitors) {
|
|
if (!(ast.buffer[pos + 24] === 2)) walkBindingPattern(pos, ast, visitors);
|
|
}
|
|
|
|
function walkVecOptionBindingPattern(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 32;
|
|
while (pos < endPos) {
|
|
walkOptionBindingPattern(pos, ast, visitors);
|
|
pos += 32;
|
|
}
|
|
}
|
|
|
|
function walkOptionBindingIdentifier(pos, ast, visitors) {
|
|
if (!(ast.buffer.uint32[(pos + 8) >> 2] === 0 && ast.buffer.uint32[(pos + 12) >> 2] === 0)) {
|
|
walkBindingIdentifier(pos, ast, visitors);
|
|
}
|
|
}
|
|
|
|
function walkBoxTSTypeParameterDeclaration(pos, ast, visitors) {
|
|
return walkTSTypeParameterDeclaration(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkOptionBoxTSTypeParameterDeclaration(pos, ast, visitors) {
|
|
if (!(ast.buffer.uint32[pos >> 2] === 0 && ast.buffer.uint32[(pos + 4) >> 2] === 0)) {
|
|
walkBoxTSTypeParameterDeclaration(pos, ast, visitors);
|
|
}
|
|
}
|
|
|
|
function walkBoxFormalParameters(pos, ast, visitors) {
|
|
return walkFormalParameters(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxFunctionBody(pos, ast, visitors) {
|
|
return walkFunctionBody(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkOptionBoxFunctionBody(pos, ast, visitors) {
|
|
if (!(ast.buffer.uint32[pos >> 2] === 0 && ast.buffer.uint32[(pos + 4) >> 2] === 0)) {
|
|
walkBoxFunctionBody(pos, ast, visitors);
|
|
}
|
|
}
|
|
|
|
function walkVecFormalParameter(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 72;
|
|
while (pos < endPos) {
|
|
walkFormalParameter(pos, ast, visitors);
|
|
pos += 72;
|
|
}
|
|
}
|
|
|
|
function walkVecDecorator(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 24;
|
|
while (pos < endPos) {
|
|
walkDecorator(pos, ast, visitors);
|
|
pos += 24;
|
|
}
|
|
}
|
|
|
|
function walkVecTSClassImplements(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 32;
|
|
while (pos < endPos) {
|
|
walkTSClassImplements(pos, ast, visitors);
|
|
pos += 32;
|
|
}
|
|
}
|
|
|
|
function walkBoxClassBody(pos, ast, visitors) {
|
|
return walkClassBody(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkVecClassElement(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 16;
|
|
while (pos < endPos) {
|
|
walkClassElement(pos, ast, visitors);
|
|
pos += 16;
|
|
}
|
|
}
|
|
|
|
function walkBoxStaticBlock(pos, ast, visitors) {
|
|
return walkStaticBlock(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxMethodDefinition(pos, ast, visitors) {
|
|
return walkMethodDefinition(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxPropertyDefinition(pos, ast, visitors) {
|
|
return walkPropertyDefinition(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxAccessorProperty(pos, ast, visitors) {
|
|
return walkAccessorProperty(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSIndexSignature(pos, ast, visitors) {
|
|
return walkTSIndexSignature(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxImportDeclaration(pos, ast, visitors) {
|
|
return walkImportDeclaration(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxExportAllDeclaration(pos, ast, visitors) {
|
|
return walkExportAllDeclaration(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxExportDefaultDeclaration(pos, ast, visitors) {
|
|
return walkExportDefaultDeclaration(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxExportNamedDeclaration(pos, ast, visitors) {
|
|
return walkExportNamedDeclaration(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSExportAssignment(pos, ast, visitors) {
|
|
return walkTSExportAssignment(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSNamespaceExportDeclaration(pos, ast, visitors) {
|
|
return walkTSNamespaceExportDeclaration(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkVecImportDeclarationSpecifier(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 16;
|
|
while (pos < endPos) {
|
|
walkImportDeclarationSpecifier(pos, ast, visitors);
|
|
pos += 16;
|
|
}
|
|
}
|
|
|
|
function walkOptionVecImportDeclarationSpecifier(pos, ast, visitors) {
|
|
if (!(ast.buffer.uint32[pos >> 2] === 0 && ast.buffer.uint32[(pos + 4) >> 2] === 0)) {
|
|
walkVecImportDeclarationSpecifier(pos, ast, visitors);
|
|
}
|
|
}
|
|
|
|
function walkBoxWithClause(pos, ast, visitors) {
|
|
return walkWithClause(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkOptionBoxWithClause(pos, ast, visitors) {
|
|
if (!(ast.buffer.uint32[pos >> 2] === 0 && ast.buffer.uint32[(pos + 4) >> 2] === 0)) {
|
|
walkBoxWithClause(pos, ast, visitors);
|
|
}
|
|
}
|
|
|
|
function walkBoxImportSpecifier(pos, ast, visitors) {
|
|
return walkImportSpecifier(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxImportDefaultSpecifier(pos, ast, visitors) {
|
|
return walkImportDefaultSpecifier(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxImportNamespaceSpecifier(pos, ast, visitors) {
|
|
return walkImportNamespaceSpecifier(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkVecImportAttribute(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 112;
|
|
while (pos < endPos) {
|
|
walkImportAttribute(pos, ast, visitors);
|
|
pos += 112;
|
|
}
|
|
}
|
|
|
|
function walkOptionDeclaration(pos, ast, visitors) {
|
|
if (!(ast.buffer[pos] === 31)) walkDeclaration(pos, ast, visitors);
|
|
}
|
|
|
|
function walkVecExportSpecifier(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 128;
|
|
while (pos < endPos) {
|
|
walkExportSpecifier(pos, ast, visitors);
|
|
pos += 128;
|
|
}
|
|
}
|
|
|
|
function walkOptionStringLiteral(pos, ast, visitors) {
|
|
if (!(ast.buffer[pos + 40] === 2)) walkStringLiteral(pos, ast, visitors);
|
|
}
|
|
|
|
function walkOptionModuleExportName(pos, ast, visitors) {
|
|
if (!(ast.buffer[pos] === 3)) walkModuleExportName(pos, ast, visitors);
|
|
}
|
|
|
|
function walkBoxJSXOpeningElement(pos, ast, visitors) {
|
|
return walkJSXOpeningElement(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkVecJSXChild(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 16;
|
|
while (pos < endPos) {
|
|
walkJSXChild(pos, ast, visitors);
|
|
pos += 16;
|
|
}
|
|
}
|
|
|
|
function walkBoxJSXClosingElement(pos, ast, visitors) {
|
|
return walkJSXClosingElement(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkOptionBoxJSXClosingElement(pos, ast, visitors) {
|
|
if (!(ast.buffer.uint32[pos >> 2] === 0 && ast.buffer.uint32[(pos + 4) >> 2] === 0)) {
|
|
walkBoxJSXClosingElement(pos, ast, visitors);
|
|
}
|
|
}
|
|
|
|
function walkVecJSXAttributeItem(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 16;
|
|
while (pos < endPos) {
|
|
walkJSXAttributeItem(pos, ast, visitors);
|
|
pos += 16;
|
|
}
|
|
}
|
|
|
|
function walkBoxJSXIdentifier(pos, ast, visitors) {
|
|
return walkJSXIdentifier(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxJSXNamespacedName(pos, ast, visitors) {
|
|
return walkJSXNamespacedName(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxJSXMemberExpression(pos, ast, visitors) {
|
|
return walkJSXMemberExpression(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxJSXAttribute(pos, ast, visitors) {
|
|
return walkJSXAttribute(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxJSXSpreadAttribute(pos, ast, visitors) {
|
|
return walkJSXSpreadAttribute(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkOptionJSXAttributeValue(pos, ast, visitors) {
|
|
if (!(ast.buffer[pos] === 4)) walkJSXAttributeValue(pos, ast, visitors);
|
|
}
|
|
|
|
function walkBoxJSXExpressionContainer(pos, ast, visitors) {
|
|
return walkJSXExpressionContainer(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxJSXText(pos, ast, visitors) {
|
|
return walkJSXText(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxJSXSpreadChild(pos, ast, visitors) {
|
|
return walkJSXSpreadChild(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkVecTSEnumMember(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 40;
|
|
while (pos < endPos) {
|
|
walkTSEnumMember(pos, ast, visitors);
|
|
pos += 40;
|
|
}
|
|
}
|
|
|
|
function walkBoxTSAnyKeyword(pos, ast, visitors) {
|
|
return walkTSAnyKeyword(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSBigIntKeyword(pos, ast, visitors) {
|
|
return walkTSBigIntKeyword(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSBooleanKeyword(pos, ast, visitors) {
|
|
return walkTSBooleanKeyword(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSIntrinsicKeyword(pos, ast, visitors) {
|
|
return walkTSIntrinsicKeyword(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSNeverKeyword(pos, ast, visitors) {
|
|
return walkTSNeverKeyword(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSNullKeyword(pos, ast, visitors) {
|
|
return walkTSNullKeyword(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSNumberKeyword(pos, ast, visitors) {
|
|
return walkTSNumberKeyword(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSObjectKeyword(pos, ast, visitors) {
|
|
return walkTSObjectKeyword(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSStringKeyword(pos, ast, visitors) {
|
|
return walkTSStringKeyword(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSSymbolKeyword(pos, ast, visitors) {
|
|
return walkTSSymbolKeyword(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSUndefinedKeyword(pos, ast, visitors) {
|
|
return walkTSUndefinedKeyword(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSUnknownKeyword(pos, ast, visitors) {
|
|
return walkTSUnknownKeyword(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSVoidKeyword(pos, ast, visitors) {
|
|
return walkTSVoidKeyword(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSArrayType(pos, ast, visitors) {
|
|
return walkTSArrayType(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSConditionalType(pos, ast, visitors) {
|
|
return walkTSConditionalType(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSConstructorType(pos, ast, visitors) {
|
|
return walkTSConstructorType(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSFunctionType(pos, ast, visitors) {
|
|
return walkTSFunctionType(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSImportType(pos, ast, visitors) {
|
|
return walkTSImportType(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSIndexedAccessType(pos, ast, visitors) {
|
|
return walkTSIndexedAccessType(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSInferType(pos, ast, visitors) {
|
|
return walkTSInferType(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSIntersectionType(pos, ast, visitors) {
|
|
return walkTSIntersectionType(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSLiteralType(pos, ast, visitors) {
|
|
return walkTSLiteralType(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSMappedType(pos, ast, visitors) {
|
|
return walkTSMappedType(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSNamedTupleMember(pos, ast, visitors) {
|
|
return walkTSNamedTupleMember(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSTemplateLiteralType(pos, ast, visitors) {
|
|
return walkTSTemplateLiteralType(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSThisType(pos, ast, visitors) {
|
|
return walkTSThisType(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSTupleType(pos, ast, visitors) {
|
|
return walkTSTupleType(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSTypeLiteral(pos, ast, visitors) {
|
|
return walkTSTypeLiteral(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSTypeOperator(pos, ast, visitors) {
|
|
return walkTSTypeOperator(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSTypePredicate(pos, ast, visitors) {
|
|
return walkTSTypePredicate(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSTypeQuery(pos, ast, visitors) {
|
|
return walkTSTypeQuery(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSTypeReference(pos, ast, visitors) {
|
|
return walkTSTypeReference(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSUnionType(pos, ast, visitors) {
|
|
return walkTSUnionType(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSParenthesizedType(pos, ast, visitors) {
|
|
return walkTSParenthesizedType(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxJSDocNullableType(pos, ast, visitors) {
|
|
return walkJSDocNullableType(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxJSDocNonNullableType(pos, ast, visitors) {
|
|
return walkJSDocNonNullableType(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxJSDocUnknownType(pos, ast, visitors) {
|
|
return walkJSDocUnknownType(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkVecTSType(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 16;
|
|
while (pos < endPos) {
|
|
walkTSType(pos, ast, visitors);
|
|
pos += 16;
|
|
}
|
|
}
|
|
|
|
function walkVecTSTupleElement(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 16;
|
|
while (pos < endPos) {
|
|
walkTSTupleElement(pos, ast, visitors);
|
|
pos += 16;
|
|
}
|
|
}
|
|
|
|
function walkBoxTSOptionalType(pos, ast, visitors) {
|
|
return walkTSOptionalType(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSRestType(pos, ast, visitors) {
|
|
return walkTSRestType(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSQualifiedName(pos, ast, visitors) {
|
|
return walkTSQualifiedName(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkOptionTSType(pos, ast, visitors) {
|
|
if (!(ast.buffer[pos] === 38)) walkTSType(pos, ast, visitors);
|
|
}
|
|
|
|
function walkVecTSTypeParameter(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 80;
|
|
while (pos < endPos) {
|
|
walkTSTypeParameter(pos, ast, visitors);
|
|
pos += 80;
|
|
}
|
|
}
|
|
|
|
function walkVecTSInterfaceHeritage(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 32;
|
|
while (pos < endPos) {
|
|
walkTSInterfaceHeritage(pos, ast, visitors);
|
|
pos += 32;
|
|
}
|
|
}
|
|
|
|
function walkBoxTSInterfaceBody(pos, ast, visitors) {
|
|
return walkTSInterfaceBody(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkVecTSSignature(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 16;
|
|
while (pos < endPos) {
|
|
walkTSSignature(pos, ast, visitors);
|
|
pos += 16;
|
|
}
|
|
}
|
|
|
|
function walkBoxTSPropertySignature(pos, ast, visitors) {
|
|
return walkTSPropertySignature(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSCallSignatureDeclaration(pos, ast, visitors) {
|
|
return walkTSCallSignatureDeclaration(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSConstructSignatureDeclaration(pos, ast, visitors) {
|
|
return walkTSConstructSignatureDeclaration(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSMethodSignature(pos, ast, visitors) {
|
|
return walkTSMethodSignature(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkVecTSIndexSignatureName(pos, ast, visitors) {
|
|
const { uint32 } = ast.buffer,
|
|
pos32 = pos >> 2;
|
|
pos = uint32[pos32];
|
|
const endPos = pos + uint32[pos32 + 2] * 32;
|
|
while (pos < endPos) {
|
|
walkTSIndexSignatureName(pos, ast, visitors);
|
|
pos += 32;
|
|
}
|
|
}
|
|
|
|
function walkOptionTSModuleDeclarationBody(pos, ast, visitors) {
|
|
if (!(ast.buffer[pos] === 2)) walkTSModuleDeclarationBody(pos, ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSModuleBlock(pos, ast, visitors) {
|
|
return walkTSModuleBlock(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSTypeParameter(pos, ast, visitors) {
|
|
return walkTSTypeParameter(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkOptionBoxObjectExpression(pos, ast, visitors) {
|
|
if (!(ast.buffer.uint32[pos >> 2] === 0 && ast.buffer.uint32[(pos + 4) >> 2] === 0)) {
|
|
walkBoxObjectExpression(pos, ast, visitors);
|
|
}
|
|
}
|
|
|
|
function walkOptionTSImportTypeQualifier(pos, ast, visitors) {
|
|
if (!(ast.buffer[pos] === 2)) walkTSImportTypeQualifier(pos, ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSImportTypeQualifiedName(pos, ast, visitors) {
|
|
return walkTSImportTypeQualifiedName(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|
|
|
|
function walkBoxTSExternalModuleReference(pos, ast, visitors) {
|
|
return walkTSExternalModuleReference(ast.buffer.uint32[pos >> 2], ast, visitors);
|
|
}
|