@@ -8,23 +8,23 @@ export class AST {
88
99 assign ( context , locals , value ) { throw new BaseException ( "Not supported" ) ; }
1010
11- visit ( visitor ) : any { return null ; }
11+ visit ( visitor : AstVisitor ) : any { return null ; }
1212
1313 toString ( ) : string { return "AST" ; }
1414}
1515
1616export class EmptyExpr extends AST {
1717 eval ( context , locals ) { return null ; }
1818
19- visit ( visitor ) {
19+ visit ( visitor : AstVisitor ) {
2020 // do nothing
2121 }
2222}
2323
2424export class ImplicitReceiver extends AST {
2525 eval ( context , locals ) { return context ; }
2626
27- visit ( visitor ) { return visitor . visitImplicitReceiver ( this ) ; }
27+ visit ( visitor : AstVisitor ) { return visitor . visitImplicitReceiver ( this ) ; }
2828}
2929
3030/**
@@ -42,7 +42,7 @@ export class Chain extends AST {
4242 return result ;
4343 }
4444
45- visit ( visitor ) { return visitor . visitChain ( this ) ; }
45+ visit ( visitor : AstVisitor ) { return visitor . visitChain ( this ) ; }
4646}
4747
4848export class Conditional extends AST {
@@ -56,7 +56,7 @@ export class Conditional extends AST {
5656 }
5757 }
5858
59- visit ( visitor ) { return visitor . visitConditional ( this ) ; }
59+ visit ( visitor : AstVisitor ) { return visitor . visitConditional ( this ) ; }
6060}
6161
6262export class AccessMember extends AST {
@@ -88,7 +88,7 @@ export class AccessMember extends AST {
8888 }
8989 }
9090
91- visit ( visitor ) { return visitor . visitAccessMember ( this ) ; }
91+ visit ( visitor : AstVisitor ) { return visitor . visitAccessMember ( this ) ; }
9292}
9393
9494export class SafeAccessMember extends AST {
@@ -102,7 +102,7 @@ export class SafeAccessMember extends AST {
102102 return isBlank ( evaluatedReceiver ) ? null : this . getter ( evaluatedReceiver ) ;
103103 }
104104
105- visit ( visitor ) { return visitor . visitSafeAccessMember ( this ) ; }
105+ visit ( visitor : AstVisitor ) { return visitor . visitSafeAccessMember ( this ) ; }
106106}
107107
108108export class KeyedAccess extends AST {
@@ -123,7 +123,7 @@ export class KeyedAccess extends AST {
123123 return value ;
124124 }
125125
126- visit ( visitor ) { return visitor . visitKeyedAccess ( this ) ; }
126+ visit ( visitor : AstVisitor ) { return visitor . visitKeyedAccess ( this ) ; }
127127}
128128
129129export class Pipe extends AST {
@@ -132,15 +132,15 @@ export class Pipe extends AST {
132132 super ( ) ;
133133 }
134134
135- visit ( visitor ) { return visitor . visitPipe ( this ) ; }
135+ visit ( visitor : AstVisitor ) { return visitor . visitPipe ( this ) ; }
136136}
137137
138138export class LiteralPrimitive extends AST {
139139 constructor ( public value ) { super ( ) ; }
140140
141141 eval ( context , locals ) { return this . value ; }
142142
143- visit ( visitor ) { return visitor . visitLiteralPrimitive ( this ) ; }
143+ visit ( visitor : AstVisitor ) { return visitor . visitLiteralPrimitive ( this ) ; }
144144}
145145
146146export class LiteralArray extends AST {
@@ -150,7 +150,7 @@ export class LiteralArray extends AST {
150150 return ListWrapper . map ( this . expressions , ( e ) => e . eval ( context , locals ) ) ;
151151 }
152152
153- visit ( visitor ) { return visitor . visitLiteralArray ( this ) ; }
153+ visit ( visitor : AstVisitor ) { return visitor . visitLiteralArray ( this ) ; }
154154}
155155
156156export class LiteralMap extends AST {
@@ -164,15 +164,15 @@ export class LiteralMap extends AST {
164164 return res ;
165165 }
166166
167- visit ( visitor ) { return visitor . visitLiteralMap ( this ) ; }
167+ visit ( visitor : AstVisitor ) { return visitor . visitLiteralMap ( this ) ; }
168168}
169169
170170export class Interpolation extends AST {
171171 constructor ( public strings : List < any > , public expressions : List < any > ) { super ( ) ; }
172172
173173 eval ( context , locals ) { throw new BaseException ( "evaluating an Interpolation is not supported" ) ; }
174174
175- visit ( visitor ) { visitor . visitInterpolation ( this ) ; }
175+ visit ( visitor : AstVisitor ) { visitor . visitInterpolation ( this ) ; }
176176}
177177
178178export class Binary extends AST {
@@ -223,15 +223,15 @@ export class Binary extends AST {
223223 throw 'Internal error [$operation] not handled' ;
224224 }
225225
226- visit ( visitor ) { return visitor . visitBinary ( this ) ; }
226+ visit ( visitor : AstVisitor ) { return visitor . visitBinary ( this ) ; }
227227}
228228
229229export class PrefixNot extends AST {
230230 constructor ( public expression : AST ) { super ( ) ; }
231231
232232 eval ( context , locals ) { return ! this . expression . eval ( context , locals ) ; }
233233
234- visit ( visitor ) { return visitor . visitPrefixNot ( this ) ; }
234+ visit ( visitor : AstVisitor ) { return visitor . visitPrefixNot ( this ) ; }
235235}
236236
237237export class Assignment extends AST {
@@ -241,7 +241,7 @@ export class Assignment extends AST {
241241 return this . target . assign ( context , locals , this . value . eval ( context , locals ) ) ;
242242 }
243243
244- visit ( visitor ) { return visitor . visitAssignment ( this ) ; }
244+ visit ( visitor : AstVisitor ) { return visitor . visitAssignment ( this ) ; }
245245}
246246
247247export class MethodCall extends AST {
@@ -262,7 +262,7 @@ export class MethodCall extends AST {
262262 }
263263 }
264264
265- visit ( visitor ) { return visitor . visitMethodCall ( this ) ; }
265+ visit ( visitor : AstVisitor ) { return visitor . visitMethodCall ( this ) ; }
266266}
267267
268268export class SafeMethodCall extends AST {
@@ -278,7 +278,7 @@ export class SafeMethodCall extends AST {
278278 return this . fn ( evaluatedReceiver , evaluatedArgs ) ;
279279 }
280280
281- visit ( visitor ) { return visitor . visitSafeMethodCall ( this ) ; }
281+ visit ( visitor : AstVisitor ) { return visitor . visitSafeMethodCall ( this ) ; }
282282}
283283
284284export class FunctionCall extends AST {
@@ -292,7 +292,7 @@ export class FunctionCall extends AST {
292292 return FunctionWrapper . apply ( obj , evalList ( context , locals , this . args ) ) ;
293293 }
294294
295- visit ( visitor ) { return visitor . visitFunctionCall ( this ) ; }
295+ visit ( visitor : AstVisitor ) { return visitor . visitFunctionCall ( this ) ; }
296296}
297297
298298export class ASTWithSource extends AST {
@@ -304,7 +304,7 @@ export class ASTWithSource extends AST {
304304
305305 assign ( context , locals , value ) { return this . ast . assign ( context , locals , value ) ; }
306306
307- visit ( visitor ) { return this . ast . visit ( visitor ) ; }
307+ visit ( visitor : AstVisitor ) { return this . ast . visit ( visitor ) ; }
308308
309309 toString ( ) : string { return `${ this . source } in ${ this . location } ` ; }
310310}
@@ -314,27 +314,27 @@ export class TemplateBinding {
314314 public expression : ASTWithSource ) { }
315315}
316316
317- // INTERFACE
318- export class AstVisitor {
319- visitAccessMember ( ast : AccessMember ) { }
320- visitAssignment ( ast : Assignment ) { }
321- visitBinary ( ast : Binary ) { }
322- visitChain ( ast : Chain ) { }
323- visitConditional ( ast : Conditional ) { }
324- visitPipe ( ast : Pipe ) { }
325- visitFunctionCall ( ast : FunctionCall ) { }
326- visitImplicitReceiver ( ast : ImplicitReceiver ) { }
327- visitKeyedAccess ( ast : KeyedAccess ) { }
328- visitLiteralArray ( ast : LiteralArray ) { }
329- visitLiteralMap ( ast : LiteralMap ) { }
330- visitLiteralPrimitive ( ast : LiteralPrimitive ) { }
331- visitMethodCall ( ast : MethodCall ) { }
332- visitPrefixNot ( ast : PrefixNot ) { }
333- visitSafeAccessMember ( ast : SafeAccessMember ) { }
334- visitSafeMethodCall ( ast : SafeMethodCall ) { }
317+ export interface AstVisitor {
318+ visitAccessMember ( ast : AccessMember ) : any ;
319+ visitAssignment ( ast : Assignment ) : any ;
320+ visitBinary ( ast : Binary ) : any ;
321+ visitChain ( ast : Chain ) : any ;
322+ visitConditional ( ast : Conditional ) : any ;
323+ visitPipe ( ast : Pipe ) : any ;
324+ visitFunctionCall ( ast : FunctionCall ) : any ;
325+ visitImplicitReceiver ( ast : ImplicitReceiver ) : any ;
326+ visitInterpolation ( ast : Interpolation ) : any ;
327+ visitKeyedAccess ( ast : KeyedAccess ) : any ;
328+ visitLiteralArray ( ast : LiteralArray ) : any ;
329+ visitLiteralMap ( ast : LiteralMap ) : any ;
330+ visitLiteralPrimitive ( ast : LiteralPrimitive ) : any ;
331+ visitMethodCall ( ast : MethodCall ) : any ;
332+ visitPrefixNot ( ast : PrefixNot ) : any ;
333+ visitSafeAccessMember ( ast : SafeAccessMember ) : any ;
334+ visitSafeMethodCall ( ast : SafeMethodCall ) : any ;
335335}
336336
337- export class AstTransformer {
337+ export class AstTransformer implements AstVisitor {
338338 visitImplicitReceiver ( ast : ImplicitReceiver ) { return ast ; }
339339
340340 visitInterpolation ( ast : Interpolation ) {
@@ -393,6 +393,10 @@ export class AstTransformer {
393393 }
394394 return res ;
395395 }
396+
397+ visitChain ( ast : Chain ) { throw new BaseException ( 'Not implemented' ) ; }
398+
399+ visitAssignment ( ast : Assignment ) { throw new BaseException ( 'Not implemented' ) ; }
396400}
397401
398402var _evalListCache = [
0 commit comments