| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library dart2js.semantics_visitor; | 5 library dart2js.semantics_visitor; |
| 6 | 6 |
| 7 import '../constants/expressions.dart'; | 7 import '../constants/expressions.dart'; |
| 8 import '../dart2jslib.dart' show invariant, MessageKind; | 8 import '../dart2jslib.dart' show invariant, MessageKind; |
| 9 import '../dart_types.dart'; | 9 import '../dart_types.dart'; |
| 10 import '../elements/elements.dart'; | 10 import '../elements/elements.dart'; |
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 297 /// | 297 /// |
| 298 /// For instance | 298 /// For instance |
| 299 /// m(receiver) => receiver.foo; | 299 /// m(receiver) => receiver.foo; |
| 300 /// | 300 /// |
| 301 R visitDynamicPropertyGet( | 301 R visitDynamicPropertyGet( |
| 302 Send node, | 302 Send node, |
| 303 Node receiver, | 303 Node receiver, |
| 304 Selector selector, | 304 Selector selector, |
| 305 A arg); | 305 A arg); |
| 306 | 306 |
| 307 /// Conditional (if not null) getter call on [receiver] of the property |
| 308 /// defined by [selector]. |
| 309 /// |
| 310 /// For instance |
| 311 /// m(receiver) => receiver?.foo; |
| 312 /// |
| 313 R visitIfNotNullDynamicPropertyGet( |
| 314 Send node, |
| 315 Node receiver, |
| 316 Selector selector, |
| 317 A arg); |
| 318 |
| 307 /// Setter call on [receiver] with argument [rhs] of the property defined by | 319 /// Setter call on [receiver] with argument [rhs] of the property defined by |
| 308 /// [selector]. | 320 /// [selector]. |
| 309 /// | 321 /// |
| 310 /// For instance | 322 /// For instance |
| 311 /// m(receiver) { | 323 /// m(receiver) { |
| 312 /// receiver.foo = rhs; | 324 /// receiver.foo = rhs; |
| 313 /// } | 325 /// } |
| 314 /// | 326 /// |
| 315 R visitDynamicPropertySet( | 327 R visitDynamicPropertySet( |
| 316 SendSet node, | 328 SendSet node, |
| 317 Node receiver, | 329 Node receiver, |
| 318 Selector selector, | 330 Selector selector, |
| 319 Node rhs, | 331 Node rhs, |
| 320 A arg); | 332 A arg); |
| 321 | 333 |
| 334 /// Conditional (if not null) setter call on [receiver] with argument [rhs] of |
| 335 /// the property defined by [selector]. |
| 336 /// |
| 337 /// For instance |
| 338 /// m(receiver) { |
| 339 /// receiver?.foo = rhs; |
| 340 /// } |
| 341 /// |
| 342 R visitIfNotNullDynamicPropertySet( |
| 343 SendSet node, |
| 344 Node receiver, |
| 345 Selector selector, |
| 346 Node rhs, |
| 347 A arg); |
| 348 |
| 322 /// Invocation of the property defined by [selector] on [receiver] with | 349 /// Invocation of the property defined by [selector] on [receiver] with |
| 323 /// [arguments]. | 350 /// [arguments]. |
| 324 /// | 351 /// |
| 325 /// For instance | 352 /// For instance |
| 326 /// m(receiver) { | 353 /// m(receiver) { |
| 327 /// receiver.foo(null, 42); | 354 /// receiver.foo(null, 42); |
| 328 /// } | 355 /// } |
| 329 /// | 356 /// |
| 330 R visitDynamicPropertyInvoke( | 357 R visitDynamicPropertyInvoke( |
| 331 Send node, | 358 Send node, |
| 332 Node receiver, | 359 Node receiver, |
| 333 NodeList arguments, | 360 NodeList arguments, |
| 334 Selector selector, | 361 Selector selector, |
| 335 A arg); | 362 A arg); |
| 336 | 363 |
| 364 /// Conditinal invocation of the property defined by [selector] on [receiver] |
| 365 /// with [arguments], if [receiver] is not null. |
| 366 /// |
| 367 /// For instance |
| 368 /// m(receiver) { |
| 369 /// receiver?.foo(null, 42); |
| 370 /// } |
| 371 /// |
| 372 R visitIfNotNullDynamicPropertyInvoke( |
| 373 Send node, |
| 374 Node receiver, |
| 375 NodeList arguments, |
| 376 Selector selector, |
| 377 A arg); |
| 378 |
| 337 /// Getter call on `this` of the property defined by [selector]. | 379 /// Getter call on `this` of the property defined by [selector]. |
| 338 /// | 380 /// |
| 339 /// For instance | 381 /// For instance |
| 340 /// class C { | 382 /// class C { |
| 341 /// m() => this.foo; | 383 /// m() => this.foo; |
| 342 /// } | 384 /// } |
| 343 /// | 385 /// |
| 344 /// or | 386 /// or |
| 345 /// | 387 /// |
| 346 /// class C { | 388 /// class C { |
| (...skipping 1273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1620 /// m() => super[1] = 42; | 1662 /// m() => super[1] = 42; |
| 1621 /// } | 1663 /// } |
| 1622 /// | 1664 /// |
| 1623 R visitUnresolvedSuperIndexSet( | 1665 R visitUnresolvedSuperIndexSet( |
| 1624 Send node, | 1666 Send node, |
| 1625 Element element, | 1667 Element element, |
| 1626 Node index, | 1668 Node index, |
| 1627 Node rhs, | 1669 Node rhs, |
| 1628 A arg); | 1670 A arg); |
| 1629 | 1671 |
| 1672 /// If-null, ??, expression with operands [left] and [right]. |
| 1673 /// |
| 1674 /// For instance |
| 1675 /// m() => left ?? right; |
| 1676 /// |
| 1677 R visitIfNull( |
| 1678 Send node, |
| 1679 Node left, |
| 1680 Node right, |
| 1681 A arg); |
| 1682 |
| 1630 /// Logical and, &&, expression with operands [left] and [right]. | 1683 /// Logical and, &&, expression with operands [left] and [right]. |
| 1631 /// | 1684 /// |
| 1632 /// For instance | 1685 /// For instance |
| 1633 /// m() => left && right; | 1686 /// m() => left && right; |
| 1634 /// | 1687 /// |
| 1635 R visitLogicalAnd( | 1688 R visitLogicalAnd( |
| 1636 Send node, | 1689 Send node, |
| 1637 Node left, | 1690 Node left, |
| 1638 Node right, | 1691 Node right, |
| 1639 A arg); | 1692 A arg); |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1695 R visitDynamicPropertyCompound( | 1748 R visitDynamicPropertyCompound( |
| 1696 Send node, | 1749 Send node, |
| 1697 Node receiver, | 1750 Node receiver, |
| 1698 AssignmentOperator operator, | 1751 AssignmentOperator operator, |
| 1699 Node rhs, | 1752 Node rhs, |
| 1700 Selector getterSelector, | 1753 Selector getterSelector, |
| 1701 Selector setterSelector, | 1754 Selector setterSelector, |
| 1702 A arg); | 1755 A arg); |
| 1703 | 1756 |
| 1704 /// Compound assignment expression of [rhs] with [operator] of the property on | 1757 /// Compound assignment expression of [rhs] with [operator] of the property on |
| 1758 /// a possibly null [receiver] whose getter and setter are defined by |
| 1759 /// [getterSelector] and [setterSelector], respectively. |
| 1760 /// |
| 1761 /// For instance: |
| 1762 /// m(receiver, rhs) => receiver?.foo += rhs; |
| 1763 /// |
| 1764 R visitIfNotNullDynamicPropertyCompound( |
| 1765 Send node, |
| 1766 Node receiver, |
| 1767 AssignmentOperator operator, |
| 1768 Node rhs, |
| 1769 Selector getterSelector, |
| 1770 Selector setterSelector, |
| 1771 A arg); |
| 1772 |
| 1773 /// Compound assignment expression of [rhs] with [operator] of the property on |
| 1705 /// `this` whose getter and setter are defined by [getterSelector] and | 1774 /// `this` whose getter and setter are defined by [getterSelector] and |
| 1706 /// [setterSelector], respectively. | 1775 /// [setterSelector], respectively. |
| 1707 /// | 1776 /// |
| 1708 /// For instance: | 1777 /// For instance: |
| 1709 /// class C { | 1778 /// class C { |
| 1710 /// m(rhs) => this.foo += rhs; | 1779 /// m(rhs) => this.foo += rhs; |
| 1711 /// } | 1780 /// } |
| 1712 /// or | 1781 /// or |
| 1713 /// class C { | 1782 /// class C { |
| 1714 /// m(rhs) => foo += rhs; | 1783 /// m(rhs) => foo += rhs; |
| (...skipping 663 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2378 /// m(receiver) => ++receiver.foo; | 2447 /// m(receiver) => ++receiver.foo; |
| 2379 /// | 2448 /// |
| 2380 R visitDynamicPropertyPrefix( | 2449 R visitDynamicPropertyPrefix( |
| 2381 Send node, | 2450 Send node, |
| 2382 Node receiver, | 2451 Node receiver, |
| 2383 IncDecOperator operator, | 2452 IncDecOperator operator, |
| 2384 Selector getterSelector, | 2453 Selector getterSelector, |
| 2385 Selector setterSelector, | 2454 Selector setterSelector, |
| 2386 A arg); | 2455 A arg); |
| 2387 | 2456 |
| 2457 /// Prefix expression with [operator] of the property on a possibly null |
| 2458 /// [receiver] whose getter and setter are defined by [getterSelector] and |
| 2459 /// [setterSelector], respectively. |
| 2460 /// |
| 2461 /// For instance: |
| 2462 /// m(receiver) => ++receiver?.foo; |
| 2463 /// |
| 2464 R visitIfNotNullDynamicPropertyPrefix( |
| 2465 Send node, |
| 2466 Node receiver, |
| 2467 IncDecOperator operator, |
| 2468 Selector getterSelector, |
| 2469 Selector setterSelector, |
| 2470 A arg); |
| 2471 |
| 2388 /// Prefix expression with [operator] on a [parameter]. | 2472 /// Prefix expression with [operator] on a [parameter]. |
| 2389 /// | 2473 /// |
| 2390 /// For instance: | 2474 /// For instance: |
| 2391 /// m(parameter) => ++parameter; | 2475 /// m(parameter) => ++parameter; |
| 2392 /// | 2476 /// |
| 2393 R visitParameterPrefix( | 2477 R visitParameterPrefix( |
| 2394 Send node, | 2478 Send node, |
| 2395 ParameterElement parameter, | 2479 ParameterElement parameter, |
| 2396 IncDecOperator operator, | 2480 IncDecOperator operator, |
| 2397 A arg); | 2481 A arg); |
| (...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2819 /// m(receiver) => receiver.foo++; | 2903 /// m(receiver) => receiver.foo++; |
| 2820 /// | 2904 /// |
| 2821 R visitDynamicPropertyPostfix( | 2905 R visitDynamicPropertyPostfix( |
| 2822 Send node, | 2906 Send node, |
| 2823 Node receiver, | 2907 Node receiver, |
| 2824 IncDecOperator operator, | 2908 IncDecOperator operator, |
| 2825 Selector getterSelector, | 2909 Selector getterSelector, |
| 2826 Selector setterSelector, | 2910 Selector setterSelector, |
| 2827 A arg); | 2911 A arg); |
| 2828 | 2912 |
| 2913 /// Postfix expression with [operator] of the property on a possibly null |
| 2914 /// [receiver] whose getter and setter are defined by [getterSelector] and |
| 2915 /// [setterSelector], respectively. |
| 2916 /// |
| 2917 /// For instance: |
| 2918 /// m(receiver) => receiver?.foo++; |
| 2919 /// |
| 2920 R visitIfNotNullDynamicPropertyPostfix( |
| 2921 Send node, |
| 2922 Node receiver, |
| 2923 IncDecOperator operator, |
| 2924 Selector getterSelector, |
| 2925 Selector setterSelector, |
| 2926 A arg); |
| 2927 |
| 2829 /// Postfix expression with [operator] on a [parameter]. | 2928 /// Postfix expression with [operator] on a [parameter]. |
| 2830 /// | 2929 /// |
| 2831 /// For instance: | 2930 /// For instance: |
| 2832 /// m(parameter) => parameter++; | 2931 /// m(parameter) => parameter++; |
| 2833 /// | 2932 /// |
| 2834 R visitParameterPostfix( | 2933 R visitParameterPostfix( |
| 2835 Send node, | 2934 Send node, |
| 2836 ParameterElement parameter, | 2935 ParameterElement parameter, |
| 2837 IncDecOperator operator, | 2936 IncDecOperator operator, |
| 2838 A arg); | 2937 A arg); |
| (...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3281 /// | 3380 /// |
| 3282 /// For instance | 3381 /// For instance |
| 3283 /// class C {} | 3382 /// class C {} |
| 3284 /// m1() => unresolved; | 3383 /// m1() => unresolved; |
| 3285 /// m2() => prefix.unresolved; | 3384 /// m2() => prefix.unresolved; |
| 3286 /// m3() => Unresolved.foo; | 3385 /// m3() => Unresolved.foo; |
| 3287 /// m4() => unresolved.foo; | 3386 /// m4() => unresolved.foo; |
| 3288 /// m5() => unresolved.Foo.bar; | 3387 /// m5() => unresolved.Foo.bar; |
| 3289 /// m6() => C.unresolved; | 3388 /// m6() => C.unresolved; |
| 3290 /// m7() => prefix.C.unresolved; | 3389 /// m7() => prefix.C.unresolved; |
| 3390 /// m8() => prefix?.unresolved; |
| 3391 /// m9() => Unresolved?.foo; |
| 3392 /// m10() => unresolved?.foo; |
| 3393 /// m11() => unresolved?.Foo?.bar; |
| 3291 /// | 3394 /// |
| 3292 // TODO(johnniwinther): Split the cases in which a prefix is resolved. | 3395 // TODO(johnniwinther): Split the cases in which a prefix is resolved. |
| 3293 R visitUnresolvedGet( | 3396 R visitUnresolvedGet( |
| 3294 Send node, | 3397 Send node, |
| 3295 Element element, | 3398 Element element, |
| 3296 A arg); | 3399 A arg); |
| 3297 | 3400 |
| 3298 /// Read of the unresolved super [element]. | 3401 /// Read of the unresolved super [element]. |
| 3299 /// | 3402 /// |
| 3300 /// For instance | 3403 /// For instance |
| (...skipping 11 matching lines...) Expand all Loading... |
| 3312 /// | 3415 /// |
| 3313 /// For instance | 3416 /// For instance |
| 3314 /// class C {} | 3417 /// class C {} |
| 3315 /// m1() => unresolved = 42; | 3418 /// m1() => unresolved = 42; |
| 3316 /// m2() => prefix.unresolved = 42; | 3419 /// m2() => prefix.unresolved = 42; |
| 3317 /// m3() => Unresolved.foo = 42; | 3420 /// m3() => Unresolved.foo = 42; |
| 3318 /// m4() => unresolved.foo = 42; | 3421 /// m4() => unresolved.foo = 42; |
| 3319 /// m5() => unresolved.Foo.bar = 42; | 3422 /// m5() => unresolved.Foo.bar = 42; |
| 3320 /// m6() => C.unresolved = 42; | 3423 /// m6() => C.unresolved = 42; |
| 3321 /// m7() => prefix.C.unresolved = 42; | 3424 /// m7() => prefix.C.unresolved = 42; |
| 3425 /// m8() => prefix?.unresolved = 42; |
| 3426 /// m9() => Unresolved?.foo = 42; |
| 3427 /// m10() => unresolved?.foo = 42; |
| 3428 /// m11() => unresolved?.Foo?.bar = 42; |
| 3322 /// | 3429 /// |
| 3323 // TODO(johnniwinther): Split the cases in which a prefix is resolved. | 3430 // TODO(johnniwinther): Split the cases in which a prefix is resolved. |
| 3324 R visitUnresolvedSet( | 3431 R visitUnresolvedSet( |
| 3325 Send node, | 3432 Send node, |
| 3326 Element element, | 3433 Element element, |
| 3327 Node rhs, | 3434 Node rhs, |
| 3328 A arg); | 3435 A arg); |
| 3329 | 3436 |
| 3330 /// Invocation of the unresolved [element] with [arguments]. | 3437 /// Invocation of the unresolved [element] with [arguments]. |
| 3331 /// | 3438 /// |
| 3332 /// For instance | 3439 /// For instance |
| 3333 /// class C {} | 3440 /// class C {} |
| 3334 /// m1() => unresolved(null, 42); | 3441 /// m1() => unresolved(null, 42); |
| 3335 /// m2() => prefix.unresolved(null, 42); | 3442 /// m2() => prefix.unresolved(null, 42); |
| 3336 /// m3() => Unresolved.foo(null, 42); | 3443 /// m3() => Unresolved.foo(null, 42); |
| 3337 /// m4() => unresolved.foo(null, 42); | 3444 /// m4() => unresolved.foo(null, 42); |
| 3338 /// m5() => unresolved.Foo.bar(null, 42); | 3445 /// m5() => unresolved.Foo.bar(null, 42); |
| 3339 /// m6() => C.unresolved(null, 42); | 3446 /// m6() => C.unresolved(null, 42); |
| 3340 /// m7() => prefix.C.unresolved(null, 42); | 3447 /// m7() => prefix.C.unresolved(null, 42); |
| 3448 /// m8() => prefix?.unresolved(null, 42); |
| 3449 /// m9() => Unresolved?.foo(null, 42); |
| 3450 /// m10() => unresolved?.foo(null, 42); |
| 3451 /// m11() => unresolved?.Foo?.bar(null, 42); |
| 3341 /// | 3452 /// |
| 3342 // TODO(johnniwinther): Split the cases in which a prefix is resolved. | 3453 // TODO(johnniwinther): Split the cases in which a prefix is resolved. |
| 3343 R visitUnresolvedInvoke( | 3454 R visitUnresolvedInvoke( |
| 3344 Send node, | 3455 Send node, |
| 3345 Element element, | 3456 Element element, |
| 3346 NodeList arguments, | 3457 NodeList arguments, |
| 3347 Selector selector, | 3458 Selector selector, |
| 3348 A arg); | 3459 A arg); |
| 3349 | 3460 |
| 3350 /// Invocation of the unresolved super [element] with [arguments]. | 3461 /// Invocation of the unresolved super [element] with [arguments]. |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3446 /// | 3557 /// |
| 3447 /// For instance | 3558 /// For instance |
| 3448 /// class C {} | 3559 /// class C {} |
| 3449 /// m1() => unresolved += 42; | 3560 /// m1() => unresolved += 42; |
| 3450 /// m2() => prefix.unresolved += 42; | 3561 /// m2() => prefix.unresolved += 42; |
| 3451 /// m3() => Unresolved.foo += 42; | 3562 /// m3() => Unresolved.foo += 42; |
| 3452 /// m4() => unresolved.foo += 42; | 3563 /// m4() => unresolved.foo += 42; |
| 3453 /// m5() => unresolved.Foo.bar += 42; | 3564 /// m5() => unresolved.Foo.bar += 42; |
| 3454 /// m6() => C.unresolved += 42; | 3565 /// m6() => C.unresolved += 42; |
| 3455 /// m7() => prefix.C.unresolved += 42; | 3566 /// m7() => prefix.C.unresolved += 42; |
| 3567 /// m8() => prefix?.unresolved += 42; |
| 3568 /// m9() => Unresolved?.foo += 42; |
| 3569 /// m10() => unresolved?.foo += 42; |
| 3570 /// m11() => unresolved?.Foo?.bar += 42; |
| 3456 /// | 3571 /// |
| 3457 // TODO(johnniwinther): Split the cases in which a prefix is resolved. | 3572 // TODO(johnniwinther): Split the cases in which a prefix is resolved. |
| 3458 R visitUnresolvedCompound( | 3573 R visitUnresolvedCompound( |
| 3459 Send node, | 3574 Send node, |
| 3460 Element element, | 3575 Element element, |
| 3461 AssignmentOperator operator, | 3576 AssignmentOperator operator, |
| 3462 Node rhs, | 3577 Node rhs, |
| 3463 A arg); | 3578 A arg); |
| 3464 | 3579 |
| 3465 /// Prefix operation of [operator] reading from the non-existing static getter | 3580 /// Prefix operation of [operator] reading from the non-existing static getter |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3556 /// | 3671 /// |
| 3557 /// For instance | 3672 /// For instance |
| 3558 /// class C {} | 3673 /// class C {} |
| 3559 /// m1() => ++unresolved; | 3674 /// m1() => ++unresolved; |
| 3560 /// m2() => ++prefix.unresolved; | 3675 /// m2() => ++prefix.unresolved; |
| 3561 /// m3() => ++Unresolved.foo; | 3676 /// m3() => ++Unresolved.foo; |
| 3562 /// m4() => ++unresolved.foo; | 3677 /// m4() => ++unresolved.foo; |
| 3563 /// m5() => ++unresolved.Foo.bar; | 3678 /// m5() => ++unresolved.Foo.bar; |
| 3564 /// m6() => ++C.unresolved; | 3679 /// m6() => ++C.unresolved; |
| 3565 /// m7() => ++prefix.C.unresolved; | 3680 /// m7() => ++prefix.C.unresolved; |
| 3681 /// m8() => ++prefix?.unresolved; |
| 3682 /// m9() => ++Unresolved?.foo; |
| 3683 /// m10() => ++unresolved?.foo; |
| 3684 /// m11() => ++unresolved?.Foo?.bar; |
| 3566 /// | 3685 /// |
| 3567 // TODO(johnniwinther): Split the cases in which a prefix is resolved. | 3686 // TODO(johnniwinther): Split the cases in which a prefix is resolved. |
| 3568 R visitUnresolvedPrefix( | 3687 R visitUnresolvedPrefix( |
| 3569 Send node, | 3688 Send node, |
| 3570 Element element, | 3689 Element element, |
| 3571 IncDecOperator operator, | 3690 IncDecOperator operator, |
| 3572 A arg); | 3691 A arg); |
| 3573 | 3692 |
| 3574 /// Postfix operation of [operator] reading from the non-existing static | 3693 /// Postfix operation of [operator] reading from the non-existing static |
| 3575 /// getter and writing to the static [setter]. | 3694 /// getter and writing to the static [setter]. |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3665 /// | 3784 /// |
| 3666 /// For instance | 3785 /// For instance |
| 3667 /// class C {} | 3786 /// class C {} |
| 3668 /// m1() => unresolved++; | 3787 /// m1() => unresolved++; |
| 3669 /// m2() => prefix.unresolved++; | 3788 /// m2() => prefix.unresolved++; |
| 3670 /// m3() => Unresolved.foo++; | 3789 /// m3() => Unresolved.foo++; |
| 3671 /// m4() => unresolved.foo++; | 3790 /// m4() => unresolved.foo++; |
| 3672 /// m5() => unresolved.Foo.bar++; | 3791 /// m5() => unresolved.Foo.bar++; |
| 3673 /// m6() => C.unresolved++; | 3792 /// m6() => C.unresolved++; |
| 3674 /// m7() => prefix.C.unresolved++; | 3793 /// m7() => prefix.C.unresolved++; |
| 3794 /// m8() => prefix?.unresolved++; |
| 3795 /// m9() => Unresolved?.foo++; |
| 3796 /// m10() => unresolved?.foo++; |
| 3797 /// m11() => unresolved?.Foo?.bar++; |
| 3675 /// | 3798 /// |
| 3676 // TODO(johnniwinther): Split the cases in which a prefix is resolved. | 3799 // TODO(johnniwinther): Split the cases in which a prefix is resolved. |
| 3677 R visitUnresolvedPostfix( | 3800 R visitUnresolvedPostfix( |
| 3678 Send node, | 3801 Send node, |
| 3679 Element element, | 3802 Element element, |
| 3680 IncDecOperator operator, | 3803 IncDecOperator operator, |
| 3681 A arg); | 3804 A arg); |
| 3682 | 3805 |
| 3683 /// Invocation of an undefined unary [operator] on [expression]. | 3806 /// Invocation of an undefined unary [operator] on [expression]. |
| 3684 R errorUndefinedUnaryExpression( | 3807 R errorUndefinedUnaryExpression( |
| (...skipping 736 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4421 /// C() : this._(42); | 4544 /// C() : this._(42); |
| 4422 /// } | 4545 /// } |
| 4423 /// | 4546 /// |
| 4424 R errorUnresolvedThisConstructorInvoke( | 4547 R errorUnresolvedThisConstructorInvoke( |
| 4425 Send node, | 4548 Send node, |
| 4426 Element element, | 4549 Element element, |
| 4427 NodeList arguments, | 4550 NodeList arguments, |
| 4428 Selector selector, | 4551 Selector selector, |
| 4429 A arg); | 4552 A arg); |
| 4430 } | 4553 } |
| OLD | NEW |