fix(transpiler): only call transform/visit when defined

Our custom ParseTree classes should not expect that every
transformer/visitor defines the methods to transform/visit them.
This commit is contained in:
Vojta Jina 2014-10-09 15:08:30 -07:00
parent d1b90e125b
commit 94e556465b

View File

@ -18,12 +18,18 @@ export class ClassFieldDeclaration extends ParseTree {
} }
visit(visitor) { visit(visitor) {
if (visitor.visitClassFieldDeclaration) {
visitor.visitClassFieldDeclaration(this); visitor.visitClassFieldDeclaration(this);
} }
}
transform(transformer) { transform(transformer) {
if (transformer.transformClassFieldDeclaration) {
return transformer.transformClassFieldDeclaration(this); return transformer.transformClassFieldDeclaration(this);
} }
return this;
}
} }
var CLASS_FIELD_DECLARATION = ParseTreeType.CLASS_FIELD_DECLARATION; var CLASS_FIELD_DECLARATION = ParseTreeType.CLASS_FIELD_DECLARATION;
@ -54,15 +60,21 @@ export class PropertyConstructorAssignment extends PropertyMethodAssignment {
* @param {ParseTreeTransformer} transformer * @param {ParseTreeTransformer} transformer
*/ */
transform(transformer) { transform(transformer) {
if (transformer.transformPropertyConstructorAssignment) {
return transformer.transformPropertyConstructorAssignment(this); return transformer.transformPropertyConstructorAssignment(this);
} }
return this;
}
/** /**
* @param {ParseTreeVisitor} visitor * @param {ParseTreeVisitor} visitor
*/ */
visit(visitor) { visit(visitor) {
if (visitor.visitPropertyConstructorAssignment) {
visitor.visitPropertyConstructorAssignment(this); visitor.visitPropertyConstructorAssignment(this);
} }
}
/** /**
* @type {ParseTreeType} * @type {ParseTreeType}
@ -89,15 +101,21 @@ export class NamedParameterList extends ParseTree {
* @param {ParseTreeTransformer} transformer * @param {ParseTreeTransformer} transformer
*/ */
transform(transformer) { transform(transformer) {
if (transformer.transformNamedParameterList) {
return transformer.transformNamedParameterList(this); return transformer.transformNamedParameterList(this);
} }
return this;
}
/** /**
* @param {ParseTreeVisitor} visitor * @param {ParseTreeVisitor} visitor
*/ */
visit(visitor) { visit(visitor) {
if (visitor.visitNamedParameterList) {
visitor.visitNamedParameterList(this); visitor.visitNamedParameterList(this);
} }
}
/** /**
* @type {ParseTreeType} * @type {ParseTreeType}
@ -126,15 +144,21 @@ export class ObjectPatternBindingElement extends ParseTree {
* @param {ParseTreeTransformer} transformer * @param {ParseTreeTransformer} transformer
*/ */
transform(transformer) { transform(transformer) {
if (transformer.transformObjectPatternBindingElement) {
return transformer.transformObjectPatternBindingElement(this); return transformer.transformObjectPatternBindingElement(this);
} }
return this;
}
/** /**
* @param {ParseTreeVisitor} visitor * @param {ParseTreeVisitor} visitor
*/ */
visit(visitor) { visit(visitor) {
if (visitor.visitObjectPatternBindingElement) {
visitor.visitObjectPatternBindingElement(this); visitor.visitObjectPatternBindingElement(this);
} }
}
/** /**
* @type {ParseTreeType} * @type {ParseTreeType}