| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 import 'package:di/di.dart'; |  | 
| 2 import 'package:di/dynamic_injector.dart'; |  | 
| 3 import 'package:angular/core/module.dart'; |  | 
| 4 import 'package:angular/core/parser/parser.dart'; |  | 
| 5 import 'package:angular/tools/parser_generator/generator.dart'; |  | 
| 6 import 'package:angular/tools/parser_getter_setter/generator.dart'; |  | 
| 7 |  | 
| 8 main(arguments) { |  | 
| 9   var isGetter = !arguments.isEmpty; |  | 
| 10 |  | 
| 11   Module module = new Module()..type(Parser, implementedBy: DynamicParser); |  | 
| 12   if (isGetter) { |  | 
| 13     module.type(ParserBackend, implementedBy: DartGetterSetterGen); |  | 
| 14   } else { |  | 
| 15     module.type(ParserBackend, implementedBy: DynamicParserBackend); |  | 
| 16     module.type(FilterMap, implementedBy: NullFilterMap); |  | 
| 17   } |  | 
| 18   Injector injector = new DynamicInjector(modules: [module], |  | 
| 19       allowImplicitInjection: true); |  | 
| 20 |  | 
| 21   // List generated using: |  | 
| 22   // node node_modules/karma/bin/karma run | grep -Eo ":XNAY:.*:XNAY:" | sed -e 
     's/:XNAY://g' | sed -e "s/^/'/" | sed -e "s/$/',/" | sort | uniq > missing_expre
     ssions |  | 
| 23   injector.get(isGetter ? ParserGetterSetter : ParserGenerator).generateParser([ |  | 
| 24       "foo == 'bar' ||\nbaz", |  | 
| 25       "nonmap['hello']", |  | 
| 26       "nonmap['hello']=3", |  | 
| 27       "this['a'].b", |  | 
| 28       "const", |  | 
| 29       "null", |  | 
| 30       "[1, 2].length", |  | 
| 31 |  | 
| 32       "doesNotExist", |  | 
| 33       "doesNotExist()", |  | 
| 34       "doesNotExist(1)", |  | 
| 35       "doesNotExist(1, 2)", |  | 
| 36       "a.doesNotExist()", |  | 
| 37       "a.doesNotExist(1)", |  | 
| 38       "a.doesNotExist(1, 2)", |  | 
| 39 |  | 
| 40       "a.b.c", |  | 
| 41       "x.b.c", |  | 
| 42       "e1.b", |  | 
| 43       "o.f()", |  | 
| 44       "1", "-1", "+1", |  | 
| 45       "true?1", |  | 
| 46       "!true", |  | 
| 47       "3*4/2%5", "3+6-2", |  | 
| 48       "2<3", "2>3", "2<=2", "2>=2", |  | 
| 49       "2==3", "2!=3", |  | 
| 50       "true&&true", "true&&false", |  | 
| 51       "true||true", "true||false", "false||false", |  | 
| 52       "'str ' + 4", "4 + ' str'", "4 + 4", "4 + 4 + ' str'", |  | 
| 53       "'str ' + 4 + 4", |  | 
| 54       "a", "b.c" , "x.y.z", |  | 
| 55       'ident.id(6)', 'ident.doubleId(4,5)', |  | 
| 56       "a.b.c.d.e.f.g.h.i.j.k.l.m.n", |  | 
| 57       'b', 'a.x', 'a.b.c.d', |  | 
| 58       "(1+2)*3", |  | 
| 59       "a=12", "arr[c=1]", "x.y.z=123;", |  | 
| 60       "a=123; b=234", |  | 
| 61       "constN()", |  | 
| 62       "add(1,2)", |  | 
| 63       "getter()()", |  | 
| 64       "obj.elementAt(0)", |  | 
| 65       "[]", |  | 
| 66       "[1, 2]", |  | 
| 67       "[1][0]", |  | 
| 68       "[[1]][0][0]", |  | 
| 69       "[].length", |  | 
| 70       "{}", |  | 
| 71       "{a:'b'}", |  | 
| 72       "{'a':'b'}", |  | 
| 73       "{\"a\":'b'}", |  | 
| 74       "{false:'WC', true:'CC'}[false]", |  | 
| 75       ')', |  | 
| 76       '[{}]', |  | 
| 77       '0&&2', |  | 
| 78       '1%2', |  | 
| 79       '1 + 2.5', |  | 
| 80       '1+undefined', |  | 
| 81       '4()', |  | 
| 82       '5=4', |  | 
| 83       '6[3]', |  | 
| 84       '{a', |  | 
| 85       'a[1]=2', |  | 
| 86       'a=1;b=3;a+b', |  | 
| 87       'a.b', |  | 
| 88       'a(b', |  | 
| 89       '\'a\' + \'b c\'', |  | 
| 90       'a().name', |  | 
| 91       'a[x()]()', |  | 
| 92       'boo', |  | 
| 93       'getNoSuchMethod', |  | 
| 94       '[].count(', |  | 
| 95       'false', |  | 
| 96       'false && run()', |  | 
| 97       '!false || true', |  | 
| 98       'foo()', |  | 
| 99       '\$id', |  | 
| 100       'items[1] = "abc"', |  | 
| 101       'items[1].name', |  | 
| 102       'list[3] = 2', |  | 
| 103       'map["square"] = 6', |  | 
| 104       'method', |  | 
| 105       'method()', |  | 
| 106       'notAFn()', |  | 
| 107       'notmixed', |  | 
| 108       'obj[0].name=1', |  | 
| 109       'obj.field = 1', |  | 
| 110       'obj.field.key = 4', |  | 
| 111       'obj.integer = "hello"', |  | 
| 112       'obj.map.mapKey = 3', |  | 
| 113       'obj.nested.field = 1', |  | 
| 114       'obj.overload = 7', |  | 
| 115       'obj.setter = 2', |  | 
| 116       'str', |  | 
| 117       'str="bob"', |  | 
| 118       'suffix = "!"', |  | 
| 119       'taxRate / 100 * subTotal', |  | 
| 120       'true', |  | 
| 121       'true || run()', |  | 
| 122       'undefined', |  | 
| 123 |  | 
| 124       ';;1;;', |  | 
| 125       '1==1', |  | 
| 126       '!(11 == 10)', |  | 
| 127       '1 + -2.5', |  | 
| 128       '[{a', |  | 
| 129       'array[5=4]', |  | 
| 130       '\$root', |  | 
| 131       'subTotal * taxRate / 100', |  | 
| 132       '!!true', |  | 
| 133 |  | 
| 134       '1!=2', |  | 
| 135       '1+2*3/4', |  | 
| 136       '\$parent', |  | 
| 137       '{true', |  | 
| 138 |  | 
| 139       '0--1+1.5', |  | 
| 140       '1<2', |  | 
| 141       '1<=1', |  | 
| 142 |  | 
| 143       '1>2', |  | 
| 144       '{a:\'-\'}', |  | 
| 145       '{a:a}', |  | 
| 146       '[{a:[]}, {b:1}]', |  | 
| 147       '{true:"a", false:"b"}[!!true]', |  | 
| 148 |  | 
| 149       '2>=1', |  | 
| 150       'true==2<3', |  | 
| 151       '6[3]=2', |  | 
| 152 |  | 
| 153       'map.dot = 7', |  | 
| 154       'map.null', |  | 
| 155       'exists(doesNotExist())', |  | 
| 156       'doesNotExists(exists())', |  | 
| 157       'a[0]()', |  | 
| 158       '{}()', |  | 
| 159       'items[1]', |  | 
| 160       "-0--1++2*-3/-4", |  | 
| 161       "1/2*3", |  | 
| 162       "0||2", |  | 
| 163       "0||1&&2", |  | 
| 164       'undefined+1', |  | 
| 165       "12/6/2", |  | 
| 166       "a=undefined", |  | 
| 167       'add(a,b)', |  | 
| 168       'notAProperty', |  | 
| 169       "'Foo'|uppercase", |  | 
| 170       "1|increment:2", |  | 
| 171       "'abcd'|substring:1:offset", |  | 
| 172       "'abcd'|substring:1:3|uppercase", |  | 
| 173       "3*4~/2%5", |  | 
| 174       "7==3+4?10:20", |  | 
| 175       "false?10:20", |  | 
| 176       "5?10:20", |  | 
| 177       "null?10:20", |  | 
| 178       "true||false?10:20", |  | 
| 179       "true&&false?10:20", |  | 
| 180       "true?a=10:a=20", |  | 
| 181       "b=true?a=false?11:c=12:a=13", |  | 
| 182       '0?0:2', |  | 
| 183       '1?0:2', |  | 
| 184       '0?0?0:0:2', |  | 
| 185       '1?0?0:0:2', |  | 
| 186       '0?1?0:0:2', |  | 
| 187       '0?0?1:0:2', |  | 
| 188       '0?0?0:2:3', |  | 
| 189       '1?1?0:0:2', |  | 
| 190       '1?1?1:0:2', |  | 
| 191       '1?1?1:2:3', |  | 
| 192       '0?0:0?0:2', |  | 
| 193       '1?0:0?0:2', |  | 
| 194       '0?1:0?0:2', |  | 
| 195       '0?0:1?0:2', |  | 
| 196       '0?0:0?2:3', |  | 
| 197       '1?1:0?0:2', |  | 
| 198       '1?1:1?0:2', |  | 
| 199       '1?1:1?2:3', |  | 
| 200       '0&&1?0:1', |  | 
| 201       '1||0?0:0', |  | 
| 202       '0?0&&1:2', |  | 
| 203       '0?1&&1:2', |  | 
| 204       '0?0||0:1', |  | 
| 205       '0?0||1:2', |  | 
| 206       '1?0&&1:2', |  | 
| 207       '1?1&&1:2', |  | 
| 208       '1?0||0:1', |  | 
| 209       '1?0||1:2', |  | 
| 210       '0?1:0&&1', |  | 
| 211       '0?2:1&&1', |  | 
| 212       '0?1:0||0', |  | 
| 213       '0?2:0||1', |  | 
| 214       '1?1:0&&1', |  | 
| 215       '1?2:1&&1', |  | 
| 216       '1?1:0||0', |  | 
| 217       '1?2:0||1', |  | 
| 218       'returnTrue() ? returnString() : returnInt()', |  | 
| 219       'returnFalse() ? returnString() : returnInt()', |  | 
| 220       'identity(returnFalse() ? returnString() : returnInt())', |  | 
| 221       "taxRate ~/ 100 * subTotal", |  | 
| 222       "'fOo'|uppercase|lowercase", |  | 
| 223       "n = (name|lowercase)", |  | 
| 224       "n", |  | 
| 225       "1|nonexistent", |  | 
| 226       "publicField", |  | 
| 227       "_privateField", |  | 
| 228       "'World'|hello", |  | 
| 229       "1;'World'|hello", |  | 
| 230       "'World'|hello;1", |  | 
| 231 |  | 
| 232       "assert", |  | 
| 233       "break", |  | 
| 234       "case", |  | 
| 235       "catch", |  | 
| 236       "class", |  | 
| 237       "const", |  | 
| 238       "continue", |  | 
| 239       "default", |  | 
| 240       "do", |  | 
| 241       "else", |  | 
| 242       "enum", |  | 
| 243       "extends", |  | 
| 244       "final", |  | 
| 245       "finally", |  | 
| 246       "for", |  | 
| 247       "if", |  | 
| 248       "in", |  | 
| 249       "is", |  | 
| 250       "new", |  | 
| 251       "rethrow", |  | 
| 252       "return", |  | 
| 253       "super", |  | 
| 254       "switch", |  | 
| 255       "this", |  | 
| 256       "throw", |  | 
| 257       "try", |  | 
| 258       "var", |  | 
| 259       "void", |  | 
| 260       "while", |  | 
| 261       "with", |  | 
| 262 |  | 
| 263       "assert = 42", |  | 
| 264       "break = 42", |  | 
| 265       "case = 42", |  | 
| 266       "catch = 42", |  | 
| 267       "class = 42", |  | 
| 268       "const = 42", |  | 
| 269       "continue = 42", |  | 
| 270       "default = 42", |  | 
| 271       "do = 42", |  | 
| 272       "else = 42", |  | 
| 273       "enum = 42", |  | 
| 274       "extends = 42", |  | 
| 275       "false = 42", |  | 
| 276       "final = 42", |  | 
| 277       "finally = 42", |  | 
| 278       "for = 42", |  | 
| 279       "if = 42", |  | 
| 280       "in = 42", |  | 
| 281       "is = 42", |  | 
| 282       "new = 42", |  | 
| 283       "null = 42", |  | 
| 284       "rethrow = 42", |  | 
| 285       "return = 42", |  | 
| 286       "super = 42", |  | 
| 287       "switch = 42", |  | 
| 288       "this = 42", |  | 
| 289       "throw = 42", |  | 
| 290       "true = 42", |  | 
| 291       "try = 42", |  | 
| 292       "var = 42", |  | 
| 293       "void = 42", |  | 
| 294       "while = 42", |  | 
| 295       "with = 42", |  | 
| 296 |  | 
| 297       "assert()", |  | 
| 298       "break()", |  | 
| 299       "case()", |  | 
| 300       "catch()", |  | 
| 301       "class()", |  | 
| 302       "const()", |  | 
| 303       "continue()", |  | 
| 304       "default()", |  | 
| 305       "do()", |  | 
| 306       "else()", |  | 
| 307       "enum()", |  | 
| 308       "extends()", |  | 
| 309       "final()", |  | 
| 310       "finally()", |  | 
| 311       "for()", |  | 
| 312       "if()", |  | 
| 313       "in()", |  | 
| 314       "is()", |  | 
| 315       "new()", |  | 
| 316       "rethrow()", |  | 
| 317       "return()", |  | 
| 318       "super()", |  | 
| 319       "switch()", |  | 
| 320       "this()", |  | 
| 321       "throw()", |  | 
| 322       "try()", |  | 
| 323       "var()", |  | 
| 324       "void()", |  | 
| 325       "while()", |  | 
| 326       "with()", |  | 
| 327 |  | 
| 328       "o.assert", |  | 
| 329       "o.break", |  | 
| 330       "o.case", |  | 
| 331       "o.catch", |  | 
| 332       "o.class", |  | 
| 333       "o.const", |  | 
| 334       "o.continue", |  | 
| 335       "o.default", |  | 
| 336       "o.do", |  | 
| 337       "o.else", |  | 
| 338       "o.enum", |  | 
| 339       "o.extends", |  | 
| 340       "o.false", |  | 
| 341       "o.final", |  | 
| 342       "o.finally", |  | 
| 343       "o.for", |  | 
| 344       "o.if", |  | 
| 345       "o.in", |  | 
| 346       "o.is", |  | 
| 347       "o.new", |  | 
| 348       "o.null", |  | 
| 349       "o.rethrow", |  | 
| 350       "o.return", |  | 
| 351       "o.super", |  | 
| 352       "o.switch", |  | 
| 353       "o.this", |  | 
| 354       "o.throw", |  | 
| 355       "o.true", |  | 
| 356       "o.try", |  | 
| 357       "o.var", |  | 
| 358       "o.void", |  | 
| 359       "o.while", |  | 
| 360       "o.with", |  | 
| 361 |  | 
| 362       "o.assert = 42", |  | 
| 363       "o.break = 42", |  | 
| 364       "o.case = 42", |  | 
| 365       "o.catch = 42", |  | 
| 366       "o.class = 42", |  | 
| 367       "o.const = 42", |  | 
| 368       "o.continue = 42", |  | 
| 369       "o.default = 42", |  | 
| 370       "o.do = 42", |  | 
| 371       "o.else = 42", |  | 
| 372       "o.enum = 42", |  | 
| 373       "o.extends = 42", |  | 
| 374       "o.false = 42", |  | 
| 375       "o.final = 42", |  | 
| 376       "o.finally = 42", |  | 
| 377       "o.for = 42", |  | 
| 378       "o.if = 42", |  | 
| 379       "o.in = 42", |  | 
| 380       "o.is = 42", |  | 
| 381       "o.new = 42", |  | 
| 382       "o.null = 42", |  | 
| 383       "o.rethrow = 42", |  | 
| 384       "o.return = 42", |  | 
| 385       "o.super = 42", |  | 
| 386       "o.switch = 42", |  | 
| 387       "o.this = 42", |  | 
| 388       "o.throw = 42", |  | 
| 389       "o.true = 42", |  | 
| 390       "o.try = 42", |  | 
| 391       "o.var = 42", |  | 
| 392       "o.void = 42", |  | 
| 393       "o.while = 42", |  | 
| 394       "o.with = 42", |  | 
| 395 |  | 
| 396       "o.assert()", |  | 
| 397       "o.break()", |  | 
| 398       "o.case()", |  | 
| 399       "o.catch()", |  | 
| 400       "o.class()", |  | 
| 401       "o.const()", |  | 
| 402       "o.continue()", |  | 
| 403       "o.default()", |  | 
| 404       "o.do()", |  | 
| 405       "o.else()", |  | 
| 406       "o.enum()", |  | 
| 407       "o.extends()", |  | 
| 408       "o.false()", |  | 
| 409       "o.final()", |  | 
| 410       "o.finally()", |  | 
| 411       "o.for()", |  | 
| 412       "o.if()", |  | 
| 413       "o.in()", |  | 
| 414       "o.is()", |  | 
| 415       "o.new()", |  | 
| 416       "o.null()", |  | 
| 417       "o.rethrow()", |  | 
| 418       "o.return()", |  | 
| 419       "o.super()", |  | 
| 420       "o.switch()", |  | 
| 421       "o.this()", |  | 
| 422       "o.throw()", |  | 
| 423       "o.true()", |  | 
| 424       "o.try()", |  | 
| 425       "o.var()", |  | 
| 426       "o.void()", |  | 
| 427       "o.while()", |  | 
| 428       "o.with()", |  | 
| 429   ]); |  | 
| 430 } |  | 
| OLD | NEW | 
|---|