1- import { FIELD , int , isBlank , BaseException , StringWrapper } from 'facade/lang' ;
1+ import { FIELD , int , isBlank , isPresent , BaseException , StringWrapper } from 'facade/lang' ;
22import { ListWrapper , List } from 'facade/collection' ;
33import { Lexer , EOF , Token , $PERIOD , $COLON , $SEMICOLON , $LBRACKET , $RBRACKET ,
44 $COMMA , $LBRACE , $RBRACE , $LPAREN , $RPAREN } from './lexer' ;
5- import { ClosureMap } from './closure_map ' ;
5+ import { reflector , Reflector } from 'reflection/reflection ' ;
66import {
77 AST ,
88 ImplicitReceiver ,
@@ -29,41 +29,41 @@ var _implicitReceiver = new ImplicitReceiver();
2929
3030export class Parser {
3131 _lexer :Lexer ;
32- _closureMap: ClosureMap ;
33- constructor ( lexer :Lexer , closureMap : ClosureMap ) {
32+ _reflector: Reflector ;
33+ constructor ( lexer :Lexer , providedReflector : Reflector = null ) {
3434 this . _lexer = lexer ;
35- this . _closureMap = closureMap ;
35+ this . _reflector = isPresent ( providedReflector ) ? providedReflector : reflector ;
3636 }
3737
3838 parseAction ( input :string ) :ASTWithSource {
3939 var tokens = this . _lexer . tokenize ( input ) ;
40- var ast = new _ParseAST ( input , tokens , this . _closureMap , true ) . parseChain ( ) ;
40+ var ast = new _ParseAST ( input , tokens , this . _reflector , true ) . parseChain ( ) ;
4141 return new ASTWithSource ( ast , input ) ;
4242 }
4343
4444 parseBinding ( input :string ) :ASTWithSource {
4545 var tokens = this . _lexer . tokenize ( input ) ;
46- var ast = new _ParseAST ( input , tokens , this . _closureMap , false ) . parseChain ( ) ;
46+ var ast = new _ParseAST ( input , tokens , this . _reflector , false ) . parseChain ( ) ;
4747 return new ASTWithSource ( ast , input ) ;
4848 }
4949
5050 parseTemplateBindings ( input :string ) :List < TemplateBinding > {
5151 var tokens = this . _lexer . tokenize ( input ) ;
52- return new _ParseAST ( input , tokens , this . _closureMap , false ) . parseTemplateBindings ( ) ;
52+ return new _ParseAST ( input , tokens , this . _reflector , false ) . parseTemplateBindings ( ) ;
5353 }
5454}
5555
5656class _ParseAST {
5757 input :string ;
5858 tokens :List < Token > ;
59- closureMap:ClosureMap ;
59+ reflector:Reflector ;
6060 parseAction:boolean;
6161 index:int;
62- constructor(input:string, tokens:List, closureMap:ClosureMap , parseAction:boolean) {
62+ constructor(input:string, tokens:List, reflector:Reflector , parseAction:boolean) {
6363 this . input = input ;
6464 this . tokens = tokens ;
6565 this . index = 0 ;
66- this . closureMap = closureMap ;
66+ this . reflector = reflector ;
6767 this . parseAction = parseAction ;
6868 }
6969
@@ -311,7 +311,7 @@ class _ParseAST {
311311 } else if ( this . optionalCharacter ( $LPAREN ) ) {
312312 var args = this . parseCallArguments ( ) ;
313313 this . expectCharacter ( $RPAREN ) ;
314- result = new FunctionCall ( result , this . closureMap , args ) ;
314+ result = new FunctionCall ( result , args ) ;
315315
316316 } else {
317317 return result ;
@@ -398,12 +398,12 @@ class _ParseAST {
398398 if ( this . optionalCharacter ( $LPAREN ) ) {
399399 var args = this . parseCallArguments ( ) ;
400400 this . expectCharacter ( $RPAREN ) ;
401- var fn = this . closureMap . fn ( id ) ;
401+ var fn = this . reflector . method ( id ) ;
402402 return new MethodCall ( receiver , fn , args ) ;
403403
404404 } else {
405- var getter = this . closureMap . getter ( id ) ;
406- var setter = this . closureMap . setter ( id ) ;
405+ var getter = this . reflector . getter ( id ) ;
406+ var setter = this . reflector . setter ( id ) ;
407407 return new AccessMember ( receiver , id , getter , setter ) ;
408408 }
409409 }
0 commit comments