traceur
Version:
ES6 to ES5 compiler
455 lines (454 loc) • 14.2 kB
JavaScript
"use strict";
function $__interopRequire(id) {
id = require(id);
return id && id.__esModule && id || {default: id};
}
Object.defineProperties(module.exports, {
__esModule: {value: true},
ParseTreeVisitor: {
enumerable: true,
get: function() {
return ParseTreeVisitor;
}
}
});
var $__createClass = $__interopRequire("traceur/dist/commonjs/runtime/modules/createClass.js").default;
var ParseTreeVisitor = function() {
function ParseTreeVisitor() {}
return ($__createClass)(ParseTreeVisitor, {
visitAny: function(tree) {
tree !== null && tree.visit(this);
},
visit: function(tree) {
this.visitAny(tree);
},
visitList: function(list) {
if (list) {
for (var i = 0; i < list.length; i++) {
this.visitAny(list[i]);
}
}
},
visitStateMachine: function(tree) {
throw Error('State machines should not live outside of the GeneratorTransformer.');
},
visitAnnotation: function(tree) {
this.visitAny(tree.name);
this.visitAny(tree.args);
},
visitAnonBlock: function(tree) {
this.visitList(tree.statements);
},
visitArgumentList: function(tree) {
this.visitList(tree.args);
},
visitArrayComprehension: function(tree) {
this.visitList(tree.comprehensionList);
this.visitAny(tree.expression);
},
visitArrayLiteral: function(tree) {
this.visitList(tree.elements);
},
visitArrayPattern: function(tree) {
this.visitList(tree.elements);
},
visitArrayType: function(tree) {
this.visitAny(tree.elementType);
},
visitArrowFunction: function(tree) {
this.visitAny(tree.parameterList);
this.visitAny(tree.body);
},
visitAssignmentElement: function(tree) {
this.visitAny(tree.assignment);
this.visitAny(tree.initializer);
},
visitAwaitExpression: function(tree) {
this.visitAny(tree.expression);
},
visitBinaryExpression: function(tree) {
this.visitAny(tree.left);
this.visitAny(tree.right);
},
visitBindingElement: function(tree) {
this.visitAny(tree.binding);
this.visitAny(tree.initializer);
},
visitBindingIdentifier: function(tree) {},
visitBlock: function(tree) {
this.visitList(tree.statements);
},
visitBreakStatement: function(tree) {},
visitCallExpression: function(tree) {
this.visitAny(tree.operand);
this.visitAny(tree.args);
},
visitCallSignature: function(tree) {
this.visitAny(tree.typeParameters);
this.visitAny(tree.parameterList);
this.visitAny(tree.returnType);
},
visitCaseClause: function(tree) {
this.visitAny(tree.expression);
this.visitList(tree.statements);
},
visitCatch: function(tree) {
this.visitAny(tree.binding);
this.visitAny(tree.catchBody);
},
visitClassDeclaration: function(tree) {
this.visitAny(tree.name);
this.visitAny(tree.superClass);
this.visitList(tree.elements);
this.visitList(tree.annotations);
this.visitAny(tree.typeParameters);
},
visitClassExpression: function(tree) {
this.visitAny(tree.name);
this.visitAny(tree.superClass);
this.visitList(tree.elements);
this.visitList(tree.annotations);
this.visitAny(tree.typeParameters);
},
visitCommaExpression: function(tree) {
this.visitList(tree.expressions);
},
visitComprehensionFor: function(tree) {
this.visitAny(tree.left);
this.visitAny(tree.iterator);
},
visitComprehensionIf: function(tree) {
this.visitAny(tree.expression);
},
visitComputedPropertyName: function(tree) {
this.visitAny(tree.expression);
},
visitConditionalExpression: function(tree) {
this.visitAny(tree.condition);
this.visitAny(tree.left);
this.visitAny(tree.right);
},
visitConstructSignature: function(tree) {
this.visitAny(tree.typeParameters);
this.visitAny(tree.parameterList);
this.visitAny(tree.returnType);
},
visitConstructorType: function(tree) {
this.visitAny(tree.typeParameters);
this.visitAny(tree.parameterList);
this.visitAny(tree.returnType);
},
visitContinueStatement: function(tree) {},
visitCoverFormals: function(tree) {
this.visitList(tree.expressions);
},
visitCoverInitializedName: function(tree) {
this.visitAny(tree.initializer);
},
visitDebuggerStatement: function(tree) {},
visitDefaultClause: function(tree) {
this.visitList(tree.statements);
},
visitDoWhileStatement: function(tree) {
this.visitAny(tree.body);
this.visitAny(tree.condition);
},
visitEmptyStatement: function(tree) {},
visitExportDeclaration: function(tree) {
this.visitAny(tree.declaration);
this.visitList(tree.annotations);
},
visitExportDefault: function(tree) {
this.visitAny(tree.expression);
},
visitExportSpecifier: function(tree) {},
visitExportSpecifierSet: function(tree) {
this.visitList(tree.specifiers);
},
visitExportStar: function(tree) {},
visitExpressionStatement: function(tree) {
this.visitAny(tree.expression);
},
visitFinally: function(tree) {
this.visitAny(tree.block);
},
visitForInStatement: function(tree) {
this.visitAny(tree.initializer);
this.visitAny(tree.collection);
this.visitAny(tree.body);
},
visitForOfStatement: function(tree) {
this.visitAny(tree.initializer);
this.visitAny(tree.collection);
this.visitAny(tree.body);
},
visitForOnStatement: function(tree) {
this.visitAny(tree.initializer);
this.visitAny(tree.observable);
this.visitAny(tree.body);
},
visitForStatement: function(tree) {
this.visitAny(tree.initializer);
this.visitAny(tree.condition);
this.visitAny(tree.increment);
this.visitAny(tree.body);
},
visitFormalParameter: function(tree) {
this.visitAny(tree.parameter);
this.visitAny(tree.typeAnnotation);
this.visitList(tree.annotations);
},
visitFormalParameterList: function(tree) {
this.visitList(tree.parameters);
},
visitForwardDefaultExport: function(tree) {},
visitFunctionBody: function(tree) {
this.visitList(tree.statements);
},
visitFunctionDeclaration: function(tree) {
this.visitAny(tree.name);
this.visitAny(tree.parameterList);
this.visitAny(tree.typeAnnotation);
this.visitList(tree.annotations);
this.visitAny(tree.body);
},
visitFunctionExpression: function(tree) {
this.visitAny(tree.name);
this.visitAny(tree.parameterList);
this.visitAny(tree.typeAnnotation);
this.visitList(tree.annotations);
this.visitAny(tree.body);
},
visitFunctionType: function(tree) {
this.visitAny(tree.typeParameters);
this.visitAny(tree.parameterList);
this.visitAny(tree.returnType);
},
visitGeneratorComprehension: function(tree) {
this.visitList(tree.comprehensionList);
this.visitAny(tree.expression);
},
visitGetAccessor: function(tree) {
this.visitAny(tree.name);
this.visitAny(tree.typeAnnotation);
this.visitList(tree.annotations);
this.visitAny(tree.body);
},
visitIdentifierExpression: function(tree) {},
visitIfStatement: function(tree) {
this.visitAny(tree.condition);
this.visitAny(tree.ifClause);
this.visitAny(tree.elseClause);
},
visitImportedBinding: function(tree) {
this.visitAny(tree.binding);
},
visitImportClausePair: function(tree) {
this.visitAny(tree.first);
this.visitAny(tree.second);
},
visitImportDeclaration: function(tree) {
this.visitAny(tree.importClause);
this.visitAny(tree.moduleSpecifier);
},
visitImportSpecifier: function(tree) {
this.visitAny(tree.binding);
},
visitImportSpecifierSet: function(tree) {
this.visitList(tree.specifiers);
},
visitImportTypeClause: function(tree) {
this.visitAny(tree.clause);
},
visitIndexSignature: function(tree) {
this.visitAny(tree.indexType);
this.visitAny(tree.typeAnnotation);
},
visitInterfaceDeclaration: function(tree) {
this.visitAny(tree.typeParameters);
this.visitAny(tree.objectType);
},
visitJsxAttribute: function(tree) {
this.visitAny(tree.value);
},
visitJsxElement: function(tree) {
this.visitAny(tree.name);
this.visitList(tree.attributes);
this.visitList(tree.children);
},
visitJsxElementName: function(tree) {},
visitJsxPlaceholder: function(tree) {
this.visitAny(tree.expression);
},
visitJsxSpreadAttribute: function(tree) {
this.visitAny(tree.expression);
},
visitJsxText: function(tree) {},
visitLabelledStatement: function(tree) {
this.visitAny(tree.statement);
},
visitLiteralExpression: function(tree) {},
visitLiteralPropertyName: function(tree) {},
visitMemberExpression: function(tree) {
this.visitAny(tree.operand);
},
visitMemberLookupExpression: function(tree) {
this.visitAny(tree.operand);
this.visitAny(tree.memberExpression);
},
visitMethod: function(tree) {
this.visitAny(tree.name);
this.visitAny(tree.parameterList);
this.visitAny(tree.typeAnnotation);
this.visitList(tree.annotations);
this.visitAny(tree.body);
this.visitAny(tree.debugName);
},
visitMethodSignature: function(tree) {
this.visitAny(tree.name);
this.visitAny(tree.callSignature);
},
visitModule: function(tree) {
this.visitList(tree.scriptItemList);
},
visitModuleSpecifier: function(tree) {},
visitNameSpaceExport: function(tree) {},
visitNameSpaceImport: function(tree) {
this.visitAny(tree.binding);
},
visitNamedExport: function(tree) {
this.visitAny(tree.exportClause);
this.visitAny(tree.moduleSpecifier);
},
visitNewExpression: function(tree) {
this.visitAny(tree.operand);
this.visitAny(tree.args);
},
visitObjectLiteral: function(tree) {
this.visitList(tree.propertyNameAndValues);
},
visitObjectPattern: function(tree) {
this.visitList(tree.fields);
},
visitObjectPatternField: function(tree) {
this.visitAny(tree.name);
this.visitAny(tree.element);
},
visitObjectType: function(tree) {
this.visitList(tree.typeMembers);
},
visitParenExpression: function(tree) {
this.visitAny(tree.expression);
},
visitPostfixExpression: function(tree) {
this.visitAny(tree.operand);
},
visitPredefinedType: function(tree) {},
visitScript: function(tree) {
this.visitList(tree.scriptItemList);
},
visitPropertyNameAssignment: function(tree) {
this.visitAny(tree.name);
this.visitAny(tree.value);
},
visitPropertyNameShorthand: function(tree) {},
visitPropertyVariableDeclaration: function(tree) {
this.visitAny(tree.name);
this.visitAny(tree.typeAnnotation);
this.visitList(tree.annotations);
this.visitAny(tree.initializer);
},
visitPropertySignature: function(tree) {
this.visitAny(tree.name);
this.visitAny(tree.typeAnnotation);
},
visitRestParameter: function(tree) {
this.visitAny(tree.identifier);
},
visitReturnStatement: function(tree) {
this.visitAny(tree.expression);
},
visitSetAccessor: function(tree) {
this.visitAny(tree.name);
this.visitAny(tree.parameterList);
this.visitList(tree.annotations);
this.visitAny(tree.body);
},
visitSpreadExpression: function(tree) {
this.visitAny(tree.expression);
},
visitSpreadPatternElement: function(tree) {
this.visitAny(tree.lvalue);
},
visitSuperExpression: function(tree) {},
visitSwitchStatement: function(tree) {
this.visitAny(tree.expression);
this.visitList(tree.caseClauses);
},
visitSyntaxErrorTree: function(tree) {},
visitTemplateLiteralExpression: function(tree) {
this.visitAny(tree.operand);
this.visitList(tree.elements);
},
visitTemplateLiteralPortion: function(tree) {},
visitTemplateSubstitution: function(tree) {
this.visitAny(tree.expression);
},
visitThisExpression: function(tree) {},
visitThrowStatement: function(tree) {
this.visitAny(tree.value);
},
visitTryStatement: function(tree) {
this.visitAny(tree.body);
this.visitAny(tree.catchBlock);
this.visitAny(tree.finallyBlock);
},
visitTypeAliasDeclaration: function(tree) {
this.visitAny(tree.value);
},
visitTypeArguments: function(tree) {
this.visitList(tree.args);
},
visitTypeName: function(tree) {
this.visitAny(tree.moduleName);
},
visitTypeParameter: function(tree) {
this.visitAny(tree.extendsType);
},
visitTypeParameters: function(tree) {
this.visitList(tree.parameters);
},
visitTypeReference: function(tree) {
this.visitAny(tree.typeName);
this.visitAny(tree.args);
},
visitUnaryExpression: function(tree) {
this.visitAny(tree.operand);
},
visitUnionType: function(tree) {
this.visitList(tree.types);
},
visitVariableDeclaration: function(tree) {
this.visitAny(tree.lvalue);
this.visitAny(tree.typeAnnotation);
this.visitAny(tree.initializer);
},
visitVariableDeclarationList: function(tree) {
this.visitList(tree.declarations);
},
visitVariableStatement: function(tree) {
this.visitAny(tree.declarations);
},
visitWhileStatement: function(tree) {
this.visitAny(tree.condition);
this.visitAny(tree.body);
},
visitWithStatement: function(tree) {
this.visitAny(tree.expression);
this.visitAny(tree.body);
},
visitYieldExpression: function(tree) {
this.visitAny(tree.expression);
}
}, {});
}();