Skip to content

Commit 94e5564

Browse files
committed
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.
1 parent d1b90e1 commit 94e5564

File tree

1 file changed

+32
-8
lines changed

1 file changed

+32
-8
lines changed

tools/transpiler/src/syntax/trees/ParseTrees.js

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,17 @@ export class ClassFieldDeclaration extends ParseTree {
1818
}
1919

2020
visit(visitor) {
21-
visitor.visitClassFieldDeclaration(this);
21+
if (visitor.visitClassFieldDeclaration) {
22+
visitor.visitClassFieldDeclaration(this);
23+
}
2224
}
2325

2426
transform(transformer) {
25-
return transformer.transformClassFieldDeclaration(this);
27+
if (transformer.transformClassFieldDeclaration) {
28+
return transformer.transformClassFieldDeclaration(this);
29+
}
30+
31+
return this;
2632
}
2733
}
2834

@@ -54,14 +60,20 @@ export class PropertyConstructorAssignment extends PropertyMethodAssignment {
5460
* @param {ParseTreeTransformer} transformer
5561
*/
5662
transform(transformer) {
57-
return transformer.transformPropertyConstructorAssignment(this);
63+
if (transformer.transformPropertyConstructorAssignment) {
64+
return transformer.transformPropertyConstructorAssignment(this);
65+
}
66+
67+
return this;
5868
}
5969

6070
/**
6171
* @param {ParseTreeVisitor} visitor
6272
*/
6373
visit(visitor) {
64-
visitor.visitPropertyConstructorAssignment(this);
74+
if (visitor.visitPropertyConstructorAssignment) {
75+
visitor.visitPropertyConstructorAssignment(this);
76+
}
6577
}
6678

6779
/**
@@ -89,14 +101,20 @@ export class NamedParameterList extends ParseTree {
89101
* @param {ParseTreeTransformer} transformer
90102
*/
91103
transform(transformer) {
92-
return transformer.transformNamedParameterList(this);
104+
if (transformer.transformNamedParameterList) {
105+
return transformer.transformNamedParameterList(this);
106+
}
107+
108+
return this;
93109
}
94110

95111
/**
96112
* @param {ParseTreeVisitor} visitor
97113
*/
98114
visit(visitor) {
99-
visitor.visitNamedParameterList(this);
115+
if (visitor.visitNamedParameterList) {
116+
visitor.visitNamedParameterList(this);
117+
}
100118
}
101119

102120
/**
@@ -126,14 +144,20 @@ export class ObjectPatternBindingElement extends ParseTree {
126144
* @param {ParseTreeTransformer} transformer
127145
*/
128146
transform(transformer) {
129-
return transformer.transformObjectPatternBindingElement(this);
147+
if (transformer.transformObjectPatternBindingElement) {
148+
return transformer.transformObjectPatternBindingElement(this);
149+
}
150+
151+
return this;
130152
}
131153

132154
/**
133155
* @param {ParseTreeVisitor} visitor
134156
*/
135157
visit(visitor) {
136-
visitor.visitObjectPatternBindingElement(this);
158+
if (visitor.visitObjectPatternBindingElement) {
159+
visitor.visitObjectPatternBindingElement(this);
160+
}
137161
}
138162

139163
/**

0 commit comments

Comments
 (0)