Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1209)

Side by Side Diff: pkg/compiler/lib/src/resolution/semantic_visitor_mixins.dart

Issue 1001863003: Update SemanticVisitor with visitIndex, visitSuperIndex (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Update analyze_unused_dart2js_test. Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 part of dart2js.semantics_visitor; 5 part of dart2js.semantics_visitor;
6 6
7 /// Mixin that implements all `errorX` methods of [SemanticSendVisitor] by 7 /// Mixin that implements all `errorX` methods of [SemanticSendVisitor] by
8 /// delegating to a bulk handler. 8 /// delegating to a bulk handler.
9 /// 9 ///
10 /// Use this mixin to provide a trivial implementation for all `errorX` methods. 10 /// Use this mixin to provide a trivial implementation for all `errorX` methods.
11 abstract class ErrorBulkMixin<R, A> implements SemanticSendVisitor<R, A> { 11 abstract class ErrorBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
12 R bulkHandleNode(Node node, String message); 12 R bulkHandleNode(Node node, String message);
13 13
14 R bulkHandleError(Send node) { 14 R bulkHandleError(Send node) {
15 return bulkHandleNode(node, "Error expression `$node` unhandled."); 15 return bulkHandleNode(node, "Error expression `$node` unhandled.");
16 } 16 }
17 17
18 @override 18 @override
19 R errorInvalidAssert( 19 R errorInvalidAssert(
20 Send node, 20 Send node,
21 NodeList arguments, 21 NodeList arguments,
22 A arg) { 22 A arg) {
23 bulkHandleError(node); 23 return bulkHandleError(node);
24 } 24 }
25 25
26 @override 26 @override
27 R errorClassTypeLiteralCompound(
28 Send node,
29 TypeConstantExpression constant,
30 AssignmentOperator operator,
31 Node rhs,
32 A arg) {
33 return bulkHandleError(node);
34 }
35
36 @override
37 R errorClassTypeLiteralPostfix(
38 Send node,
39 TypeConstantExpression constant,
40 IncDecOperator operator,
41 A arg) {
42 return bulkHandleError(node);
43 }
44
45 @override
46 R errorClassTypeLiteralPrefix(
47 Send node,
48 TypeConstantExpression constant,
49 IncDecOperator operator,
50 A arg) {
51 return bulkHandleError(node);
52 }
53
54 @override
27 R errorClassTypeLiteralSet( 55 R errorClassTypeLiteralSet(
28 SendSet node, 56 SendSet node,
29 TypeConstantExpression constant, 57 TypeConstantExpression constant,
30 Node rhs, 58 Node rhs,
31 A arg) { 59 A arg) {
32 return bulkHandleError(node); 60 return bulkHandleError(node);
33 } 61 }
34 62
35 @override 63 @override
64 R errorDynamicTypeLiteralCompound(
65 Send node,
66 TypeConstantExpression constant,
67 AssignmentOperator operator,
68 Node rhs,
69 A arg) {
70 return bulkHandleError(node);
71 }
72
73 @override
74 R errorDynamicTypeLiteralPostfix(
75 Send node,
76 TypeConstantExpression constant,
77 IncDecOperator operator,
78 A arg) {
79 return bulkHandleError(node);
80 }
81
82 @override
83 R errorDynamicTypeLiteralPrefix(
84 Send node,
85 TypeConstantExpression constant,
86 IncDecOperator operator,
87 A arg) {
88 return bulkHandleError(node);
89 }
90
91 @override
36 R errorDynamicTypeLiteralSet( 92 R errorDynamicTypeLiteralSet(
37 SendSet node, 93 SendSet node,
38 TypeConstantExpression constant, 94 TypeConstantExpression constant,
39 Node rhs, 95 Node rhs,
40 A arg) { 96 A arg) {
41 return bulkHandleError(node); 97 return bulkHandleError(node);
42 } 98 }
43 99
44 @override 100 @override
45 R errorFinalLocalVariableCompound( 101 R errorFinalLocalVariableCompound(
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 R errorTopLevelSetterInvoke( 332 R errorTopLevelSetterInvoke(
277 Send node, 333 Send node,
278 FunctionElement setter, 334 FunctionElement setter,
279 NodeList arguments, 335 NodeList arguments,
280 Selector selector, 336 Selector selector,
281 A arg) { 337 A arg) {
282 return bulkHandleError(node); 338 return bulkHandleError(node);
283 } 339 }
284 340
285 @override 341 @override
342 R errorTypeVariableTypeLiteralCompound(
343 Send node,
344 TypeVariableElement element,
345 AssignmentOperator operator,
346 Node rhs,
347 A arg) {
348 return bulkHandleError(node);
349 }
350
351 @override
352 R errorTypeVariableTypeLiteralPostfix(
353 Send node,
354 TypeVariableElement element,
355 IncDecOperator operator,
356 A arg) {
357 return bulkHandleError(node);
358 }
359
360 @override
361 R errorTypeVariableTypeLiteralPrefix(
362 Send node,
363 TypeVariableElement element,
364 IncDecOperator operator,
365 A arg) {
366 return bulkHandleError(node);
367 }
368
369 @override
286 R errorTypeVariableTypeLiteralSet( 370 R errorTypeVariableTypeLiteralSet(
287 SendSet node, 371 SendSet node,
288 TypeVariableElement element, 372 TypeVariableElement element,
289 Node rhs, 373 Node rhs,
290 A arg) { 374 A arg) {
291 return bulkHandleError(node); 375 return bulkHandleError(node);
292 } 376 }
293 377
294 @override 378 @override
379 R errorTypedefTypeLiteralCompound(
380 Send node,
381 TypeConstantExpression constant,
382 AssignmentOperator operator,
383 Node rhs,
384 A arg) {
385 return bulkHandleError(node);
386 }
387
388 @override
389 R errorTypedefTypeLiteralPostfix(
390 Send node,
391 TypeConstantExpression constant,
392 IncDecOperator operator,
393 A arg) {
394 return bulkHandleError(node);
395 }
396
397 @override
398 R errorTypedefTypeLiteralPrefix(
399 Send node,
400 TypeConstantExpression constant,
401 IncDecOperator operator,
402 A arg) {
403 return bulkHandleError(node);
404 }
405
406 @override
295 R errorTypedefTypeLiteralSet( 407 R errorTypedefTypeLiteralSet(
296 SendSet node, 408 SendSet node,
297 TypeConstantExpression constant, 409 TypeConstantExpression constant,
298 Node rhs, 410 Node rhs,
299 A arg) { 411 A arg) {
300 return bulkHandleError(node); 412 return bulkHandleError(node);
301 } 413 }
302 414
303 @override 415 @override
304 R errorUnresolvedCompound( 416 R errorUnresolvedCompound(
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 R errorUnresolvedSet( 462 R errorUnresolvedSet(
351 Send node, 463 Send node,
352 Element element, 464 Element element,
353 Node rhs, 465 Node rhs,
354 A arg) { 466 A arg) {
355 return bulkHandleError(node); 467 return bulkHandleError(node);
356 } 468 }
357 469
358 @override 470 @override
359 R errorUnresolvedSuperCompoundIndexSet( 471 R errorUnresolvedSuperCompoundIndexSet(
360 Send node, 472 SendSet node,
361 Element element, 473 Element element,
362 Node index, 474 Node index,
363 AssignmentOperator operator, 475 AssignmentOperator operator,
364 Node rhs, 476 Node rhs,
365 A arg) { 477 A arg) {
366 return bulkHandleError(node); 478 return bulkHandleError(node);
367 } 479 }
368 480
369 @override 481 @override
370 R errorUnresolvedSuperIndexSet( 482 R errorUnresolvedSuperIndexSet(
371 Send node, 483 SendSet node,
372 Element element, 484 Element element,
373 Node index, 485 Node index,
374 Node rhs, 486 Node rhs,
375 A arg) { 487 A arg) {
376 return bulkHandleError(node); 488 return bulkHandleError(node);
377 } 489 }
378 490
379 @override 491 @override
380 R errorUnresolvedSuperBinary( 492 R errorUnresolvedSuperBinary(
381 Send node, 493 Send node,
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 /// Use this mixin to provide a trivial implementation for all `visitXPrefix` 533 /// Use this mixin to provide a trivial implementation for all `visitXPrefix`
422 /// methods. 534 /// methods.
423 abstract class PrefixBulkMixin<R, A> implements SemanticSendVisitor<R, A> { 535 abstract class PrefixBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
424 R bulkHandleNode(Node node, String message); 536 R bulkHandleNode(Node node, String message);
425 537
426 R bulkHandlePrefix(Send node) { 538 R bulkHandlePrefix(Send node) {
427 return bulkHandleNode(node, "Prefix expression `$node` unhandled."); 539 return bulkHandleNode(node, "Prefix expression `$node` unhandled.");
428 } 540 }
429 541
430 @override 542 @override
431 R visitClassTypeLiteralPrefix(
432 Send node,
433 TypeConstantExpression constant,
434 IncDecOperator operator,
435 A arg) {
436 return bulkHandlePrefix(node);
437 }
438
439 @override
440 R visitDynamicPropertyPrefix( 543 R visitDynamicPropertyPrefix(
441 Send node, 544 Send node,
442 Node receiver, 545 Node receiver,
443 IncDecOperator operator, 546 IncDecOperator operator,
444 Selector getterSelector, 547 Selector getterSelector,
445 Selector setterSelector, 548 Selector setterSelector,
446 A arg) { 549 A arg) {
447 return bulkHandlePrefix(node); 550 return bulkHandlePrefix(node);
448 } 551 }
449 552
450 @override 553 @override
451 R visitDynamicTypeLiteralPrefix(
452 Send node,
453 TypeConstantExpression constant,
454 IncDecOperator operator,
455 A arg) {
456 return bulkHandlePrefix(node);
457 }
458
459 @override
460 R visitLocalVariablePrefix( 554 R visitLocalVariablePrefix(
461 Send node, 555 Send node,
462 LocalVariableElement variable, 556 LocalVariableElement variable,
463 IncDecOperator operator, 557 IncDecOperator operator,
464 A arg) { 558 A arg) {
465 return bulkHandlePrefix(node); 559 return bulkHandlePrefix(node);
466 } 560 }
467 561
468 @override 562 @override
469 R visitParameterPrefix( 563 R visitParameterPrefix(
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
593 687
594 @override 688 @override
595 R visitTopLevelMethodSetterPrefix( 689 R visitTopLevelMethodSetterPrefix(
596 Send node, 690 Send node,
597 FunctionElement method, 691 FunctionElement method,
598 FunctionElement setter, 692 FunctionElement setter,
599 IncDecOperator operator, 693 IncDecOperator operator,
600 A arg) { 694 A arg) {
601 return bulkHandlePrefix(node); 695 return bulkHandlePrefix(node);
602 } 696 }
603
604 @override
605 R visitTypeVariableTypeLiteralPrefix(
606 Send node,
607 TypeVariableElement element,
608 IncDecOperator operator,
609 A arg) {
610 return bulkHandlePrefix(node);
611 }
612
613 @override
614 R visitTypedefTypeLiteralPrefix(
615 Send node,
616 TypeConstantExpression constant,
617 IncDecOperator operator,
618 A arg) {
619 return bulkHandlePrefix(node);
620 }
621 } 697 }
622 698
623 /// Mixin that implements all `visitXPostfix` methods of [SemanticSendVisitor] 699 /// Mixin that implements all `visitXPostfix` methods of [SemanticSendVisitor]
624 /// by delegating to a bulk handler. 700 /// by delegating to a bulk handler.
625 /// 701 ///
626 /// Use this mixin to provide a trivial implementation for all `visitXPostfix` 702 /// Use this mixin to provide a trivial implementation for all `visitXPostfix`
627 /// methods. 703 /// methods.
628 abstract class PostfixBulkMixin<R, A> implements SemanticSendVisitor<R, A> { 704 abstract class PostfixBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
629 R bulkHandleNode(Node node, String message); 705 R bulkHandleNode(Node node, String message);
630 706
631 R bulkHandlePostfix(Send node) { 707 R bulkHandlePostfix(Send node) {
632 return bulkHandleNode(node, "Postfix expression `$node` unhandled."); 708 return bulkHandleNode(node, "Postfix expression `$node` unhandled.");
633 } 709 }
634 710
635 @override 711 @override
636 R visitClassTypeLiteralPostfix(
637 Send node,
638 TypeConstantExpression constant,
639 IncDecOperator operator,
640 A arg) {
641 return bulkHandlePostfix(node);
642 }
643
644 @override
645 R visitDynamicPropertyPostfix( 712 R visitDynamicPropertyPostfix(
646 Send node, 713 Send node,
647 Node receiver, 714 Node receiver,
648 IncDecOperator operator, 715 IncDecOperator operator,
649 Selector getterSelector, 716 Selector getterSelector,
650 Selector setterSelector, 717 Selector setterSelector,
651 A arg) { 718 A arg) {
652 return bulkHandlePostfix(node); 719 return bulkHandlePostfix(node);
653 } 720 }
654 721
655 @override 722 @override
656 R visitDynamicTypeLiteralPostfix(
657 Send node,
658 TypeConstantExpression constant,
659 IncDecOperator operator,
660 A arg) {
661 return bulkHandlePostfix(node);
662 }
663
664 @override
665 R visitLocalVariablePostfix( 723 R visitLocalVariablePostfix(
666 Send node, 724 Send node,
667 LocalVariableElement variable, 725 LocalVariableElement variable,
668 IncDecOperator operator, 726 IncDecOperator operator,
669 A arg) { 727 A arg) {
670 return bulkHandlePostfix(node); 728 return bulkHandlePostfix(node);
671 } 729 }
672 730
673 @override 731 @override
674 R visitParameterPostfix( 732 R visitParameterPostfix(
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
798 856
799 @override 857 @override
800 R visitTopLevelMethodSetterPostfix( 858 R visitTopLevelMethodSetterPostfix(
801 Send node, 859 Send node,
802 FunctionElement method, 860 FunctionElement method,
803 FunctionElement setter, 861 FunctionElement setter,
804 IncDecOperator operator, 862 IncDecOperator operator,
805 A arg) { 863 A arg) {
806 return bulkHandlePostfix(node); 864 return bulkHandlePostfix(node);
807 } 865 }
808
809 @override
810 R visitTypeVariableTypeLiteralPostfix(
811 Send node,
812 TypeVariableElement element,
813 IncDecOperator operator,
814 A arg) {
815 return bulkHandlePostfix(node);
816 }
817
818 @override
819 R visitTypedefTypeLiteralPostfix(
820 Send node,
821 TypeConstantExpression constant,
822 IncDecOperator operator,
823 A arg) {
824 return bulkHandlePostfix(node);
825 }
826 } 866 }
827 867
828 /// Mixin that implements all `visitXCompound` methods of [SemanticSendVisitor] 868 /// Mixin that implements all `visitXCompound` methods of [SemanticSendVisitor]
829 /// by delegating to a bulk handler. 869 /// by delegating to a bulk handler.
830 /// 870 ///
831 /// Use this mixin to provide a trivial implementation for all `xCompound` 871 /// Use this mixin to provide a trivial implementation for all `xCompound`
832 /// methods. 872 /// methods.
833 abstract class CompoundBulkMixin<R, A> implements SemanticSendVisitor<R, A> { 873 abstract class CompoundBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
834 R bulkHandleNode(Node node, String message); 874 R bulkHandleNode(Node node, String message);
835 875
836 R bulkHandleCompound(Send node) { 876 R bulkHandleCompound(Send node) {
837 return bulkHandleNode(node, "Compound assignment `$node` unhandled."); 877 return bulkHandleNode(node, "Compound assignment `$node` unhandled.");
838 } 878 }
839 879
840 @override 880 @override
841 R visitClassTypeLiteralCompound(
842 Send node,
843 TypeConstantExpression constant,
844 AssignmentOperator operator,
845 Node rhs,
846 A arg) {
847 return bulkHandleCompound(node);
848 }
849
850 @override
851 R visitDynamicPropertyCompound( 881 R visitDynamicPropertyCompound(
852 Send node, 882 Send node,
853 Node receiver, 883 Node receiver,
854 AssignmentOperator operator, 884 AssignmentOperator operator,
855 Node rhs, 885 Node rhs,
856 Selector getterSelector, 886 Selector getterSelector,
857 Selector setterSelector, 887 Selector setterSelector,
858 A arg) { 888 A arg) {
859 return bulkHandleCompound(node); 889 return bulkHandleCompound(node);
860 } 890 }
861 891
862 @override 892 @override
863 R visitDynamicTypeLiteralCompound(
864 Send node,
865 TypeConstantExpression constant,
866 AssignmentOperator operator,
867 Node rhs,
868 A arg) {
869 return bulkHandleCompound(node);
870 }
871
872 @override
873 R visitLocalVariableCompound( 893 R visitLocalVariableCompound(
874 Send node, 894 Send node,
875 LocalVariableElement variable, 895 LocalVariableElement variable,
876 AssignmentOperator operator, 896 AssignmentOperator operator,
877 Node rhs, 897 Node rhs,
878 A arg) { 898 A arg) {
879 return bulkHandleCompound(node); 899 return bulkHandleCompound(node);
880 } 900 }
881 901
882 @override 902 @override
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
1010 @override 1030 @override
1011 R visitTopLevelMethodSetterCompound( 1031 R visitTopLevelMethodSetterCompound(
1012 Send node, 1032 Send node,
1013 FunctionElement method, 1033 FunctionElement method,
1014 FunctionElement setter, 1034 FunctionElement setter,
1015 AssignmentOperator operator, 1035 AssignmentOperator operator,
1016 Node rhs, 1036 Node rhs,
1017 A arg) { 1037 A arg) {
1018 return bulkHandleCompound(node); 1038 return bulkHandleCompound(node);
1019 } 1039 }
1020
1021 @override
1022 R visitTypeVariableTypeLiteralCompound(
1023 Send node,
1024 TypeVariableElement element,
1025 AssignmentOperator operator,
1026 Node rhs,
1027 A arg) {
1028 return bulkHandleCompound(node);
1029 }
1030
1031 @override
1032 R visitTypedefTypeLiteralCompound(
1033 Send node,
1034 TypeConstantExpression constant,
1035 AssignmentOperator operator,
1036 Node rhs,
1037 A arg) {
1038 return bulkHandleCompound(node);
1039 }
1040 } 1040 }
1041 1041
1042 /// Mixin that implements all `visitXInvoke` methods of [SemanticSendVisitor] by 1042 /// Mixin that implements all `visitXInvoke` methods of [SemanticSendVisitor] by
1043 /// delegating to a bulk handler. 1043 /// delegating to a bulk handler.
1044 /// 1044 ///
1045 /// Use this mixin to provide a trivial implementation for all `visitXInvoke` 1045 /// Use this mixin to provide a trivial implementation for all `visitXInvoke`
1046 /// methods. 1046 /// methods.
1047 abstract class InvokeBulkMixin<R, A> implements SemanticSendVisitor<R, A> { 1047 abstract class InvokeBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
1048 R bulkHandleNode(Node node, String message); 1048 R bulkHandleNode(Node node, String message);
1049 1049
(...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after
1528 @override 1528 @override
1529 R visitTopLevelSetterSet( 1529 R visitTopLevelSetterSet(
1530 SendSet node, 1530 SendSet node,
1531 FunctionElement setter, 1531 FunctionElement setter,
1532 Node rhs, 1532 Node rhs,
1533 A arg) { 1533 A arg) {
1534 return bulkHandleSet(node); 1534 return bulkHandleSet(node);
1535 } 1535 }
1536 } 1536 }
1537 1537
1538 /// Mixin that implements all `visitXIndexSet` methods of [SemanticSendVisitor] by 1538 /// Mixin that implements all `visitXIndexSet` methods of [SemanticSendVisitor]
1539 /// delegating to a bulk handler. 1539 /// by delegating to a bulk handler.
1540 /// 1540 ///
1541 /// Use this mixin to provide a trivial implementation for all `visitXIndexSet` 1541 /// Use this mixin to provide a trivial implementation for all `visitXIndexSet`
1542 /// methods. 1542 /// methods.
1543 abstract class IndexSetBulkMixin<R, A> implements SemanticSendVisitor<R, A> { 1543 abstract class IndexSetBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
1544 R bulkHandleNode(Node node, String message); 1544 R bulkHandleNode(Node node, String message);
1545 1545
1546 R bulkHandleIndexSet(Send node) { 1546 R bulkHandleIndexSet(Send node) {
1547 return bulkHandleNode(node, "Index set expression `$node` unhandled."); 1547 return bulkHandleNode(node, "Index set expression `$node` unhandled.");
1548 } 1548 }
1549 1549
1550 @override 1550 @override
1551 R visitCompoundIndexSet( 1551 R visitCompoundIndexSet(
1552 Send node, 1552 SendSet node,
1553 Node receiver, 1553 Node receiver,
1554 Node index, 1554 Node index,
1555 AssignmentOperator operator, 1555 AssignmentOperator operator,
1556 Node rhs, 1556 Node rhs,
1557 A arg) { 1557 A arg) {
1558 return bulkHandleIndexSet(node); 1558 return bulkHandleIndexSet(node);
1559 } 1559 }
1560 1560
1561 @override 1561 @override
1562 R visitIndexSet( 1562 R visitIndexSet(
1563 Send node, 1563 SendSet node,
1564 Node receiver, 1564 Node receiver,
1565 Node index, 1565 Node index,
1566 Node rhs, 1566 Node rhs,
1567 A arg) { 1567 A arg) {
1568 return bulkHandleIndexSet(node); 1568 return bulkHandleIndexSet(node);
1569 } 1569 }
1570 1570
1571 @override 1571 @override
1572 R visitSuperCompoundIndexSet( 1572 R visitSuperCompoundIndexSet(
1573 Send node, 1573 SendSet node,
1574 FunctionElement getter, 1574 FunctionElement getter,
1575 FunctionElement setter, 1575 FunctionElement setter,
1576 Node index, 1576 Node index,
1577 AssignmentOperator operator, 1577 AssignmentOperator operator,
1578 Node rhs, 1578 Node rhs,
1579 A arg) { 1579 A arg) {
1580 return bulkHandleIndexSet(node); 1580 return bulkHandleIndexSet(node);
1581 } 1581 }
1582 1582
1583 @override 1583 @override
1584 R visitSuperIndexSet( 1584 R visitSuperIndexSet(
1585 Send node, 1585 SendSet node,
1586 FunctionElement function, 1586 FunctionElement function,
1587 Node index, 1587 Node index,
1588 Node rhs, 1588 Node rhs,
1589 A arg) { 1589 A arg) {
1590 return bulkHandleIndexSet(node); 1590 return bulkHandleIndexSet(node);
1591 } 1591 }
1592 } 1592 }
1593 1593
1594 /// Mixin that implements all binary visitor methods in [SemanticSendVisitor] by 1594 /// Mixin that implements all binary visitor methods in [SemanticSendVisitor] by
1595 /// delegating to a bulk handler. 1595 /// delegating to a bulk handler.
(...skipping 29 matching lines...) Expand all
1625 @override 1625 @override
1626 R visitNotEquals( 1626 R visitNotEquals(
1627 Send node, 1627 Send node,
1628 Node left, 1628 Node left,
1629 Node right, 1629 Node right,
1630 A arg) { 1630 A arg) {
1631 return bulkHandleBinary(node); 1631 return bulkHandleBinary(node);
1632 } 1632 }
1633 1633
1634 @override 1634 @override
1635 R visitIndex(
1636 Send node,
1637 Node receiver,
1638 Node index,
1639 A arg) {
1640 return bulkHandleBinary(node);
1641 }
1642
1643 @override
1635 R visitSuperBinary( 1644 R visitSuperBinary(
1636 Send node, 1645 Send node,
1637 FunctionElement function, 1646 FunctionElement function,
1638 BinaryOperator operator, 1647 BinaryOperator operator,
1639 Node argument, 1648 Node argument,
1640 A arg) { 1649 A arg) {
1641 return bulkHandleBinary(node); 1650 return bulkHandleBinary(node);
1642 } 1651 }
1643 1652
1644 @override 1653 @override
1645 R visitSuperEquals( 1654 R visitSuperEquals(
1646 Send node, 1655 Send node,
1647 FunctionElement function, 1656 FunctionElement function,
1648 Node argument, 1657 Node argument,
1649 A arg) { 1658 A arg) {
1650 return bulkHandleBinary(node); 1659 return bulkHandleBinary(node);
1651 } 1660 }
1652 1661
1653 @override 1662 @override
1654 R visitSuperNotEquals( 1663 R visitSuperNotEquals(
1655 Send node, 1664 Send node,
1656 FunctionElement function, 1665 FunctionElement function,
1657 Node argument, 1666 Node argument,
1658 A arg) { 1667 A arg) {
1659 return bulkHandleBinary(node); 1668 return bulkHandleBinary(node);
1660 } 1669 }
1670
1671 @override
1672 R visitSuperIndex(
1673 Send node,
1674 FunctionElement function,
1675 Node index,
1676 A arg) {
1677 return bulkHandleBinary(node);
1678 }
1661 } 1679 }
1662 1680
1663 /// Mixin that implements all unary visitor methods in [SemanticSendVisitor] by 1681 /// Mixin that implements all unary visitor methods in [SemanticSendVisitor] by
1664 /// delegating to a bulk handler. 1682 /// delegating to a bulk handler.
1665 /// 1683 ///
1666 /// Use this mixin to provide a trivial implementation for all unary visitor 1684 /// Use this mixin to provide a trivial implementation for all unary visitor
1667 /// methods. 1685 /// methods.
1668 abstract class UnaryBulkMixin<R, A> implements SemanticSendVisitor<R, A> { 1686 abstract class UnaryBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
1669 R bulkHandleNode(Node node, String message); 1687 R bulkHandleNode(Node node, String message);
1670 1688
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
1775 Send node, 1793 Send node,
1776 FunctionElement function, 1794 FunctionElement function,
1777 BinaryOperator operator, 1795 BinaryOperator operator,
1778 Node argument, 1796 Node argument,
1779 A arg) { 1797 A arg) {
1780 return bulkHandleSuper(node); 1798 return bulkHandleSuper(node);
1781 } 1799 }
1782 1800
1783 @override 1801 @override
1784 R visitSuperCompoundIndexSet( 1802 R visitSuperCompoundIndexSet(
1785 Send node, 1803 SendSet node,
1786 FunctionElement getter, 1804 FunctionElement getter,
1787 FunctionElement setter, 1805 FunctionElement setter,
1788 Node index, 1806 Node index,
1789 AssignmentOperator operator, 1807 AssignmentOperator operator,
1790 Node rhs, 1808 Node rhs,
1791 A arg) { 1809 A arg) {
1792 return bulkHandleSuper(node); 1810 return bulkHandleSuper(node);
1793 } 1811 }
1794 1812
1795 @override 1813 @override
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
1982 Send node, 2000 Send node,
1983 FunctionElement getter, 2001 FunctionElement getter,
1984 FunctionElement setter, 2002 FunctionElement setter,
1985 IncDecOperator operator, 2003 IncDecOperator operator,
1986 A arg) { 2004 A arg) {
1987 return bulkHandleSuper(node); 2005 return bulkHandleSuper(node);
1988 } 2006 }
1989 2007
1990 @override 2008 @override
1991 R visitSuperIndexSet( 2009 R visitSuperIndexSet(
1992 Send node, 2010 SendSet node,
1993 FunctionElement function, 2011 FunctionElement function,
1994 Node index, 2012 Node index,
1995 Node rhs, 2013 Node rhs,
1996 A arg) { 2014 A arg) {
1997 return bulkHandleSuper(node); 2015 return bulkHandleSuper(node);
1998 } 2016 }
1999 2017
2000 @override 2018 @override
2001 R visitSuperMethodGet( 2019 R visitSuperMethodGet(
2002 Send node, 2020 Send node,
(...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after
2445 Node left, 2463 Node left,
2446 BinaryOperator operator, 2464 BinaryOperator operator,
2447 Node right, 2465 Node right,
2448 A arg) { 2466 A arg) {
2449 apply(left, arg); 2467 apply(left, arg);
2450 apply(right, arg); 2468 apply(right, arg);
2451 return null; 2469 return null;
2452 } 2470 }
2453 2471
2454 @override 2472 @override
2455 R visitClassTypeLiteralCompound( 2473 R errorClassTypeLiteralCompound(
2456 Send node, 2474 Send node,
2457 TypeConstantExpression constant, 2475 TypeConstantExpression constant,
2458 AssignmentOperator operator, 2476 AssignmentOperator operator,
2459 Node rhs, 2477 Node rhs,
2460 A arg) { 2478 A arg) {
2461 apply(rhs, arg); 2479 apply(rhs, arg);
2462 return null; 2480 return null;
2463 } 2481 }
2464 2482
2465 @override 2483 @override
2466 R visitClassTypeLiteralGet( 2484 R visitClassTypeLiteralGet(
2467 Send node, 2485 Send node,
2468 TypeConstantExpression constant, 2486 TypeConstantExpression constant,
2469 A arg) { 2487 A arg) {
2470 return null; 2488 return null;
2471 } 2489 }
2472 2490
2473 @override 2491 @override
2474 R visitClassTypeLiteralInvoke( 2492 R visitClassTypeLiteralInvoke(
2475 Send node, 2493 Send node,
2476 TypeConstantExpression constant, 2494 TypeConstantExpression constant,
2477 NodeList arguments, 2495 NodeList arguments,
2478 Selector selector, 2496 Selector selector,
2479 A arg) { 2497 A arg) {
2480 apply(arguments, arg); 2498 apply(arguments, arg);
2481 return null; 2499 return null;
2482 } 2500 }
2483 2501
2484 @override 2502 @override
2485 R visitClassTypeLiteralPostfix( 2503 R errorClassTypeLiteralPostfix(
2486 Send node, 2504 Send node,
2487 TypeConstantExpression constant, 2505 TypeConstantExpression constant,
2488 IncDecOperator operator, 2506 IncDecOperator operator,
2489 A arg) { 2507 A arg) {
2490 return null; 2508 return null;
2491 } 2509 }
2492 2510
2493 @override 2511 @override
2494 R visitClassTypeLiteralPrefix( 2512 R errorClassTypeLiteralPrefix(
2495 Send node, 2513 Send node,
2496 TypeConstantExpression constant, 2514 TypeConstantExpression constant,
2497 IncDecOperator operator, 2515 IncDecOperator operator,
2498 A arg) { 2516 A arg) {
2499 return null; 2517 return null;
2500 } 2518 }
2501 2519
2502 @override 2520 @override
2503 R visitCompoundIndexSet( 2521 R visitCompoundIndexSet(
2504 Send node, 2522 SendSet node,
2505 Node receiver, 2523 Node receiver,
2506 Node index, 2524 Node index,
2507 AssignmentOperator operator, 2525 AssignmentOperator operator,
2508 Node rhs, 2526 Node rhs,
2509 A arg) { 2527 A arg) {
2510 apply(receiver, arg); 2528 apply(receiver, arg);
2511 apply(index, arg); 2529 apply(index, arg);
2512 apply(rhs, arg); 2530 apply(rhs, arg);
2513 return null; 2531 return null;
2514 } 2532 }
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
2597 SendSet node, 2615 SendSet node,
2598 Node receiver, 2616 Node receiver,
2599 Selector selector, 2617 Selector selector,
2600 Node rhs, 2618 Node rhs,
2601 A arg) { 2619 A arg) {
2602 apply(rhs, arg); 2620 apply(rhs, arg);
2603 return null; 2621 return null;
2604 } 2622 }
2605 2623
2606 @override 2624 @override
2607 R visitDynamicTypeLiteralCompound( 2625 R errorDynamicTypeLiteralCompound(
2608 Send node, 2626 Send node,
2609 TypeConstantExpression constant, 2627 TypeConstantExpression constant,
2610 AssignmentOperator operator, 2628 AssignmentOperator operator,
2611 Node rhs, 2629 Node rhs,
2612 A arg) { 2630 A arg) {
2613 apply(rhs, arg); 2631 apply(rhs, arg);
2614 return null; 2632 return null;
2615 } 2633 }
2616 2634
2617 @override 2635 @override
2618 R visitDynamicTypeLiteralGet( 2636 R visitDynamicTypeLiteralGet(
2619 Send node, 2637 Send node,
2620 TypeConstantExpression constant, 2638 TypeConstantExpression constant,
2621 A arg) { 2639 A arg) {
2622 return null; 2640 return null;
2623 } 2641 }
2624 2642
2625 @override 2643 @override
2626 R visitDynamicTypeLiteralInvoke( 2644 R visitDynamicTypeLiteralInvoke(
2627 Send node, 2645 Send node,
2628 TypeConstantExpression constant, 2646 TypeConstantExpression constant,
2629 NodeList arguments, 2647 NodeList arguments,
2630 Selector selector, 2648 Selector selector,
2631 A arg) { 2649 A arg) {
2632 apply(arguments, arg); 2650 apply(arguments, arg);
2633 return null; 2651 return null;
2634 } 2652 }
2635 2653
2636 @override 2654 @override
2637 R visitDynamicTypeLiteralPostfix( 2655 R errorDynamicTypeLiteralPostfix(
2638 Send node, 2656 Send node,
2639 TypeConstantExpression constant, 2657 TypeConstantExpression constant,
2640 IncDecOperator operator, 2658 IncDecOperator operator,
2641 A arg) { 2659 A arg) {
2642 return null; 2660 return null;
2643 } 2661 }
2644 2662
2645 @override 2663 @override
2646 R visitDynamicTypeLiteralPrefix( 2664 R errorDynamicTypeLiteralPrefix(
2647 Send node, 2665 Send node,
2648 TypeConstantExpression constant, 2666 TypeConstantExpression constant,
2649 IncDecOperator operator, 2667 IncDecOperator operator,
2650 A arg) { 2668 A arg) {
2651 return null; 2669 return null;
2652 } 2670 }
2653 2671
2654 @override 2672 @override
2655 R visitEquals( 2673 R visitEquals(
2656 Send node, 2674 Send node,
(...skipping 11 matching lines...) Expand all
2668 Node expression, 2686 Node expression,
2669 NodeList arguments, 2687 NodeList arguments,
2670 Selector selector, 2688 Selector selector,
2671 A arg) { 2689 A arg) {
2672 apply(expression, arg); 2690 apply(expression, arg);
2673 apply(arguments, arg); 2691 apply(arguments, arg);
2674 return null; 2692 return null;
2675 } 2693 }
2676 2694
2677 @override 2695 @override
2696 R visitIndex(
2697 Send node,
2698 Node receiver,
2699 Node index,
2700 A arg) {
2701 apply(receiver, arg);
2702 apply(index, arg);
2703 return null;
2704 }
2705
2706 @override
2678 R visitIndexSet( 2707 R visitIndexSet(
2679 Send node, 2708 SendSet node,
2680 Node receiver, 2709 Node receiver,
2681 Node index, 2710 Node index,
2682 Node rhs, 2711 Node rhs,
2683 A arg) { 2712 A arg) {
2684 apply(receiver, arg); 2713 apply(receiver, arg);
2685 apply(index, arg); 2714 apply(index, arg);
2686 apply(rhs, arg); 2715 apply(rhs, arg);
2687 return null; 2716 return null;
2688 } 2717 }
2689 2718
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after
3060 FunctionElement function, 3089 FunctionElement function,
3061 BinaryOperator operator, 3090 BinaryOperator operator,
3062 Node argument, 3091 Node argument,
3063 A arg) { 3092 A arg) {
3064 apply(argument, arg); 3093 apply(argument, arg);
3065 return null; 3094 return null;
3066 } 3095 }
3067 3096
3068 @override 3097 @override
3069 R visitSuperCompoundIndexSet( 3098 R visitSuperCompoundIndexSet(
3070 Send node, 3099 SendSet node,
3071 FunctionElement getter, 3100 FunctionElement getter,
3072 FunctionElement setter, 3101 FunctionElement setter,
3073 Node index, 3102 Node index,
3074 AssignmentOperator operator, 3103 AssignmentOperator operator,
3075 Node rhs, 3104 Node rhs,
3076 A arg) { 3105 A arg) {
3077 apply(rhs, arg); 3106 apply(rhs, arg);
3078 return null; 3107 return null;
3079 } 3108 }
3080 3109
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
3275 R visitSuperGetterSetterPrefix( 3304 R visitSuperGetterSetterPrefix(
3276 Send node, 3305 Send node,
3277 FunctionElement getter, 3306 FunctionElement getter,
3278 FunctionElement setter, 3307 FunctionElement setter,
3279 IncDecOperator operator, 3308 IncDecOperator operator,
3280 A arg) { 3309 A arg) {
3281 return null; 3310 return null;
3282 } 3311 }
3283 3312
3284 @override 3313 @override
3314 R visitSuperIndex(
3315 Send node,
3316 FunctionElement function,
3317 Node index,
3318 A arg) {
3319 apply(index, arg);
3320 return null;
3321 }
3322
3323 @override
3285 R visitSuperIndexSet( 3324 R visitSuperIndexSet(
3286 Send node, 3325 SendSet node,
3287 FunctionElement function, 3326 FunctionElement function,
3288 Node index, 3327 Node index,
3289 Node rhs, 3328 Node rhs,
3290 A arg) { 3329 A arg) {
3291 apply(index, arg); 3330 apply(index, arg);
3292 apply(rhs, arg); 3331 apply(rhs, arg);
3293 return null; 3332 return null;
3294 } 3333 }
3295 3334
3296 @override 3335 @override
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
3612 R visitTopLevelSetterSet( 3651 R visitTopLevelSetterSet(
3613 SendSet node, 3652 SendSet node,
3614 FunctionElement setter, 3653 FunctionElement setter,
3615 Node rhs, 3654 Node rhs,
3616 A arg) { 3655 A arg) {
3617 apply(rhs, arg); 3656 apply(rhs, arg);
3618 return null; 3657 return null;
3619 } 3658 }
3620 3659
3621 @override 3660 @override
3622 R visitTypeVariableTypeLiteralCompound( 3661 R errorTypeVariableTypeLiteralCompound(
3623 Send node, 3662 Send node,
3624 TypeVariableElement element, 3663 TypeVariableElement element,
3625 AssignmentOperator operator, 3664 AssignmentOperator operator,
3626 Node rhs, 3665 Node rhs,
3627 A arg) { 3666 A arg) {
3628 apply(rhs, arg); 3667 apply(rhs, arg);
3629 return null; 3668 return null;
3630 } 3669 }
3631 3670
3632 @override 3671 @override
3633 R visitTypeVariableTypeLiteralGet( 3672 R visitTypeVariableTypeLiteralGet(
3634 Send node, 3673 Send node,
3635 TypeVariableElement element, 3674 TypeVariableElement element,
3636 A arg) { 3675 A arg) {
3637 return null; 3676 return null;
3638 } 3677 }
3639 3678
3640 @override 3679 @override
3641 R visitTypeVariableTypeLiteralInvoke( 3680 R visitTypeVariableTypeLiteralInvoke(
3642 Send node, 3681 Send node,
3643 TypeVariableElement element, 3682 TypeVariableElement element,
3644 NodeList arguments, 3683 NodeList arguments,
3645 Selector selector, 3684 Selector selector,
3646 A arg) { 3685 A arg) {
3647 apply(arguments, arg); 3686 apply(arguments, arg);
3648 return null; 3687 return null;
3649 } 3688 }
3650 3689
3651 @override 3690 @override
3652 R visitTypeVariableTypeLiteralPostfix( 3691 R errorTypeVariableTypeLiteralPostfix(
3653 Send node, 3692 Send node,
3654 TypeVariableElement element, 3693 TypeVariableElement element,
3655 IncDecOperator operator, 3694 IncDecOperator operator,
3656 A arg) { 3695 A arg) {
3657 return null; 3696 return null;
3658 } 3697 }
3659 3698
3660 @override 3699 @override
3661 R visitTypeVariableTypeLiteralPrefix( 3700 R errorTypeVariableTypeLiteralPrefix(
3662 Send node, 3701 Send node,
3663 TypeVariableElement element, 3702 TypeVariableElement element,
3664 IncDecOperator operator, 3703 IncDecOperator operator,
3665 A arg) { 3704 A arg) {
3666 return null; 3705 return null;
3667 } 3706 }
3668 3707
3669 @override 3708 @override
3670 R visitTypedefTypeLiteralCompound( 3709 R errorTypedefTypeLiteralCompound(
3671 Send node, 3710 Send node,
3672 TypeConstantExpression constant, 3711 TypeConstantExpression constant,
3673 AssignmentOperator operator, 3712 AssignmentOperator operator,
3674 Node rhs, 3713 Node rhs,
3675 A arg) { 3714 A arg) {
3676 apply(rhs, arg); 3715 apply(rhs, arg);
3677 return null; 3716 return null;
3678 } 3717 }
3679 3718
3680 @override 3719 @override
3681 R visitTypedefTypeLiteralGet( 3720 R visitTypedefTypeLiteralGet(
3682 Send node, 3721 Send node,
3683 TypeConstantExpression constant, 3722 TypeConstantExpression constant,
3684 A arg) { 3723 A arg) {
3685 return null; 3724 return null;
3686 } 3725 }
3687 3726
3688 @override 3727 @override
3689 R visitTypedefTypeLiteralInvoke( 3728 R visitTypedefTypeLiteralInvoke(
3690 Send node, 3729 Send node,
3691 TypeConstantExpression constant, 3730 TypeConstantExpression constant,
3692 NodeList arguments, 3731 NodeList arguments,
3693 Selector selector, 3732 Selector selector,
3694 A arg) { 3733 A arg) {
3695 apply(arguments, arg); 3734 apply(arguments, arg);
3696 return null; 3735 return null;
3697 } 3736 }
3698 3737
3699 @override 3738 @override
3700 R visitTypedefTypeLiteralPostfix( 3739 R errorTypedefTypeLiteralPostfix(
3701 Send node, 3740 Send node,
3702 TypeConstantExpression constant, 3741 TypeConstantExpression constant,
3703 IncDecOperator operator, 3742 IncDecOperator operator,
3704 A arg) { 3743 A arg) {
3705 return null; 3744 return null;
3706 } 3745 }
3707 3746
3708 @override 3747 @override
3709 R visitTypedefTypeLiteralPrefix( 3748 R errorTypedefTypeLiteralPrefix(
3710 Send node, 3749 Send node,
3711 TypeConstantExpression constant, 3750 TypeConstantExpression constant,
3712 IncDecOperator operator, 3751 IncDecOperator operator,
3713 A arg) { 3752 A arg) {
3714 return null; 3753 return null;
3715 } 3754 }
3716 3755
3717 @override 3756 @override
3718 R visitUnary( 3757 R visitUnary(
3719 Send node, 3758 Send node,
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
3811 Node index, 3850 Node index,
3812 Node rhs, 3851 Node rhs,
3813 A arg) { 3852 A arg) {
3814 apply(index, arg); 3853 apply(index, arg);
3815 apply(rhs, arg); 3854 apply(rhs, arg);
3816 return null; 3855 return null;
3817 } 3856 }
3818 3857
3819 @override 3858 @override
3820 R errorUnresolvedSuperCompoundIndexSet( 3859 R errorUnresolvedSuperCompoundIndexSet(
3821 Send node, 3860 SendSet node,
3822 Element element, 3861 Element element,
3823 Node index, 3862 Node index,
3824 AssignmentOperator operator, 3863 AssignmentOperator operator,
3825 Node rhs, 3864 Node rhs,
3826 A arg) { 3865 A arg) {
3827 apply(index, arg); 3866 apply(index, arg);
3828 apply(rhs, arg); 3867 apply(rhs, arg);
3829 return null; 3868 return null;
3830 } 3869 }
3831 3870
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
3894 visitParameters(node.parameters); 3933 visitParameters(node.parameters);
3895 } 3934 }
3896 if (node.initializers != null) { 3935 if (node.initializers != null) {
3897 visitInitializers(node.initializers); 3936 visitInitializers(node.initializers);
3898 } 3937 }
3899 if (node.body != null) { 3938 if (node.body != null) {
3900 apply(node.body, null); 3939 apply(node.body, null);
3901 } 3940 }
3902 return null; 3941 return null;
3903 } 3942 }
3904 } 3943 }
3944
3945 /// Mixin that groups all `visitStaticX` and `visitTopLevelX` method by
3946 /// delegating calls to `handleStaticX` methods.
3947 ///
3948 /// This mixin is useful for the cases where both top level members and static
3949 /// class members are handled uniformly.
3950 abstract class GroupStaticMixin<R, A> implements SemanticSendVisitor<R, A> {
3951 R handleStaticFieldCompound(
3952 Send node,
3953 FieldElement field,
3954 AssignmentOperator operator,
3955 Node rhs,
3956 A arg);
3957
3958 R handleStaticFieldGet(
3959 Send node,
3960 FieldElement field,
3961 A arg);
3962
3963 R handleStaticFieldInvoke(
3964 Send node,
3965 FieldElement field,
3966 NodeList arguments,
3967 Selector selector,
3968 A arg);
3969
3970 R handleStaticFieldPostfixPrefix(
3971 Send node,
3972 FieldElement field,
3973 IncDecOperator operator,
3974 A arg,
3975 {bool isPrefix});
3976
3977 R handleStaticFieldSet(
3978 SendSet node,
3979 FieldElement field,
3980 Node rhs,
3981 A arg);
3982
3983 R handleStaticFunctionGet(
3984 Send node,
3985 MethodElement function,
3986 A arg);
3987
3988 R handleStaticFunctionInvoke(
3989 Send node,
3990 MethodElement function,
3991 NodeList arguments,
3992 Selector selector,
3993 A arg);
3994
3995 R handleStaticGetterGet(
3996 Send node,
3997 FunctionElement getter,
3998 A arg);
3999
4000 R handleStaticGetterInvoke(
4001 Send node,
4002 FunctionElement getter,
4003 NodeList arguments,
4004 Selector selector,
4005 A arg);
4006
4007 R handleStaticGetterSetterCompound(
4008 Send node,
4009 FunctionElement getter,
4010 FunctionElement setter,
4011 AssignmentOperator operator,
4012 Node rhs,
4013 A arg);
4014
4015 R handleStaticGetterSetterPostfixPrefix(
4016 Send node,
4017 FunctionElement getter,
4018 FunctionElement setter,
4019 IncDecOperator operator,
4020 A arg,
4021 {bool isPrefix});
4022
4023 R handleStaticMethodSetterCompound(
4024 Send node,
4025 FunctionElement method,
4026 FunctionElement setter,
4027 AssignmentOperator operator,
4028 Node rhs,
4029 A arg);
4030
4031 R handleStaticMethodSetterPostfixPrefix(
4032 Send node,
4033 FunctionElement getter,
4034 FunctionElement setter,
4035 IncDecOperator operator,
4036 A arg,
4037 {bool isPrefix});
4038
4039 R handleStaticSetterSet(
4040 SendSet node,
4041 FunctionElement setter,
4042 Node rhs,
4043 A arg);
4044
4045 @override
4046 R visitStaticFieldCompound(
4047 Send node,
4048 FieldElement field,
4049 AssignmentOperator operator,
4050 Node rhs,
4051 A arg) {
4052 return handleStaticFieldCompound(node, field, operator, rhs, arg);
4053 }
4054
4055 @override
4056 R visitStaticFieldGet(
4057 Send node,
4058 FieldElement field,
4059 A arg) {
4060 return handleStaticFieldGet(node, field, arg);
4061 }
4062
4063 @override
4064 R visitStaticFieldInvoke(
4065 Send node,
4066 FieldElement field,
4067 NodeList arguments,
4068 Selector selector,
4069 A arg) {
4070 return handleStaticFieldInvoke(node, field, arguments, selector, arg);
4071 }
4072
4073 @override
4074 R visitStaticFieldPostfix(
4075 Send node,
4076 FieldElement field,
4077 IncDecOperator operator,
4078 A arg) {
4079 return handleStaticFieldPostfixPrefix(
4080 node, field, operator, arg, isPrefix: false);
4081 }
4082
4083 @override
4084 R visitStaticFieldPrefix(
4085 Send node,
4086 FieldElement field,
4087 IncDecOperator operator,
4088 A arg) {
4089 return handleStaticFieldPostfixPrefix(
4090 node, field, operator, arg, isPrefix: true);
4091 }
4092
4093 @override
4094 R visitStaticFieldSet(
4095 SendSet node,
4096 FieldElement field,
4097 Node rhs,
4098 A arg) {
4099 return handleStaticFieldSet(node, field, rhs, arg);
4100 }
4101
4102 @override
4103 R visitStaticFunctionGet(
4104 Send node,
4105 MethodElement function,
4106 A arg) {
4107 return handleStaticFunctionGet(node, function, arg);
4108 }
4109
4110 @override
4111 R visitStaticFunctionInvoke(
4112 Send node,
4113 MethodElement function,
4114 NodeList arguments,
4115 Selector selector,
4116 A arg) {
4117 return handleStaticFunctionInvoke(node, function, arguments, selector, arg);
4118 }
4119
4120 @override
4121 R visitStaticGetterGet(
4122 Send node,
4123 FunctionElement getter,
4124 A arg) {
4125 return handleStaticGetterGet(node, getter, arg);
4126 }
4127
4128 @override
4129 R visitStaticGetterInvoke(
4130 Send node,
4131 FunctionElement getter,
4132 NodeList arguments,
4133 Selector selector,
4134 A arg) {
4135 return handleStaticGetterInvoke(node, getter, arguments, selector, arg);
4136 }
4137
4138 @override
4139 R visitStaticGetterSetterCompound(
4140 Send node,
4141 FunctionElement getter,
4142 FunctionElement setter,
4143 AssignmentOperator operator,
4144 Node rhs,
4145 A arg) {
4146 return handleStaticGetterSetterCompound(
4147 node, getter, setter, operator, rhs, arg);
4148 }
4149
4150 @override
4151 R visitStaticGetterSetterPostfix(
4152 Send node,
4153 FunctionElement getter,
4154 FunctionElement setter,
4155 IncDecOperator operator,
4156 A arg) {
4157 return handleStaticGetterSetterPostfixPrefix(
4158 node, getter, setter, operator, arg, isPrefix: false);
4159 }
4160
4161 @override
4162 R visitStaticGetterSetterPrefix(
4163 Send node,
4164 FunctionElement getter,
4165 FunctionElement setter,
4166 IncDecOperator operator,
4167 A arg) {
4168 return handleStaticGetterSetterPostfixPrefix(
4169 node, getter, setter, operator, arg, isPrefix: true);
4170 }
4171
4172 @override
4173 R visitStaticMethodSetterCompound(
4174 Send node,
4175 FunctionElement method,
4176 FunctionElement setter,
4177 AssignmentOperator operator,
4178 Node rhs,
4179 A arg) {
4180 return handleStaticMethodSetterCompound(
4181 node, method, setter, operator, rhs, arg);
4182 }
4183
4184 @override
4185 R visitStaticMethodSetterPostfix(
4186 Send node,
4187 FunctionElement getter,
4188 FunctionElement setter,
4189 IncDecOperator operator,
4190 A arg) {
4191 return handleStaticMethodSetterPostfixPrefix(
4192 node, getter, setter, operator, arg, isPrefix: false);
4193 }
4194
4195 @override
4196 R visitStaticMethodSetterPrefix(
4197 Send node,
4198 FunctionElement getter,
4199 FunctionElement setter,
4200 IncDecOperator operator,
4201 A arg) {
4202 return handleStaticMethodSetterPostfixPrefix(
4203 node, getter, setter, operator, arg, isPrefix: true);
4204 }
4205
4206 @override
4207 R visitStaticSetterSet(
4208 SendSet node,
4209 FunctionElement setter,
4210 Node rhs,
4211 A arg) {
4212 return handleStaticSetterSet(node, setter, rhs, arg);
4213 }
4214
4215 @override
4216 R visitTopLevelFieldCompound(
4217 Send node,
4218 FieldElement field,
4219 AssignmentOperator operator,
4220 Node rhs,
4221 A arg) {
4222 return handleStaticFieldCompound(node, field, operator, rhs, arg);
4223 }
4224
4225 @override
4226 R visitTopLevelFieldGet(
4227 Send node,
4228 FieldElement field,
4229 A arg) {
4230 return handleStaticFieldGet(node, field, arg);
4231 }
4232
4233 @override
4234 R visitTopLevelFieldInvoke(
4235 Send node,
4236 FieldElement field,
4237 NodeList arguments,
4238 Selector selector,
4239 A arg) {
4240 return handleStaticFieldInvoke(node, field, arguments, selector, arg);
4241 }
4242
4243 @override
4244 R visitTopLevelFieldPostfix(
4245 Send node,
4246 FieldElement field,
4247 IncDecOperator operator,
4248 A arg) {
4249 return handleStaticFieldPostfixPrefix(
4250 node, field, operator, arg, isPrefix: false);
4251 }
4252
4253 @override
4254 R visitTopLevelFieldPrefix(
4255 Send node,
4256 FieldElement field,
4257 IncDecOperator operator,
4258 A arg) {
4259 return handleStaticFieldPostfixPrefix(
4260 node, field, operator, arg, isPrefix: true);
4261 }
4262
4263 @override
4264 R visitTopLevelFieldSet(
4265 SendSet node,
4266 FieldElement field,
4267 Node rhs,
4268 A arg) {
4269 return handleStaticFieldSet(node, field, rhs, arg);
4270 }
4271
4272 @override
4273 R visitTopLevelFunctionGet(
4274 Send node,
4275 MethodElement function,
4276 A arg) {
4277 return handleStaticFunctionGet(node, function, arg);
4278 }
4279
4280 @override
4281 R visitTopLevelFunctionInvoke(
4282 Send node,
4283 MethodElement function,
4284 NodeList arguments,
4285 Selector selector,
4286 A arg) {
4287 return handleStaticFunctionInvoke(node, function, arguments, selector, arg);
4288 }
4289
4290 @override
4291 R visitTopLevelGetterGet(
4292 Send node,
4293 FunctionElement getter,
4294 A arg) {
4295 return handleStaticGetterGet(node, getter, arg);
4296 }
4297
4298 @override
4299 R visitTopLevelGetterInvoke(
4300 Send node,
4301 FunctionElement getter,
4302 NodeList arguments,
4303 Selector selector,
4304 A arg) {
4305 return handleStaticGetterInvoke(node, getter, arguments, selector, arg);
4306 }
4307
4308 @override
4309 R visitTopLevelGetterSetterCompound(
4310 Send node,
4311 FunctionElement getter,
4312 FunctionElement setter,
4313 AssignmentOperator operator,
4314 Node rhs,
4315 A arg) {
4316 return handleStaticGetterSetterCompound(
4317 node, getter, setter, operator, rhs, arg);
4318 }
4319
4320 @override
4321 R visitTopLevelGetterSetterPostfix(
4322 Send node,
4323 FunctionElement getter,
4324 FunctionElement setter,
4325 IncDecOperator operator,
4326 A arg) {
4327 return handleStaticGetterSetterPostfixPrefix(
4328 node, getter, setter, operator, arg, isPrefix: false);
4329 }
4330
4331 @override
4332 R visitTopLevelGetterSetterPrefix(
4333 Send node,
4334 FunctionElement getter,
4335 FunctionElement setter,
4336 IncDecOperator operator,
4337 A arg) {
4338 return handleStaticGetterSetterPostfixPrefix(
4339 node, getter, setter, operator, arg, isPrefix: true);
4340 }
4341
4342 @override
4343 R visitTopLevelMethodSetterCompound(
4344 Send node,
4345 FunctionElement method,
4346 FunctionElement setter,
4347 AssignmentOperator operator,
4348 Node rhs,
4349 A arg) {
4350 return handleStaticMethodSetterCompound(
4351 node, method, setter, operator, rhs, arg);
4352 }
4353
4354 @override
4355 R visitTopLevelMethodSetterPostfix(
4356 Send node,
4357 FunctionElement method,
4358 FunctionElement setter,
4359 IncDecOperator operator,
4360 A arg) {
4361 return handleStaticMethodSetterPostfixPrefix(
4362 node, method, setter, operator, arg, isPrefix: false);
4363 }
4364
4365 @override
4366 R visitTopLevelMethodSetterPrefix(
4367 Send node,
4368 FunctionElement method,
4369 FunctionElement setter,
4370 IncDecOperator operator,
4371 A arg) {
4372 return handleStaticMethodSetterPostfixPrefix(
4373 node, method, setter, operator, arg, isPrefix: true);
4374 }
4375
4376 @override
4377 R visitTopLevelSetterSet(
4378 SendSet node,
4379 FunctionElement setter,
4380 Node rhs,
4381 A arg) {
4382 return handleStaticSetterSet(node, setter, rhs, arg);
4383 }
4384 }
4385
4386 /// Mixin that groups all `visitLocalX` and `visitParameterX` method by
4387 /// delegating calls to `handleLocalX` methods.
4388 ///
4389 /// This mixin is useful for the cases where both parameters, local variables,
4390 /// and local functions, captured or not, are handled uniformly.
4391 abstract class GroupLocalMixin<R, A> implements SemanticSendVisitor<R, A> {
4392 R handleLocalCompound(
4393 Send node,
4394 LocalElement element,
4395 AssignmentOperator operator,
4396 Node rhs,
4397 A arg);
4398
4399 R handleLocalGet(
4400 Send node,
4401 LocalElement element,
4402 A arg);
4403
4404 R handleLocalInvoke(
4405 Send node,
4406 LocalElement element,
4407 NodeList arguments,
4408 Selector selector,
4409 A arg);
4410
4411 R handleLocalPostfixPrefix(
4412 Send node,
4413 LocalElement element,
4414 IncDecOperator operator,
4415 A arg,
4416 {bool isPrefix});
4417
4418 R handleLocalSet(
4419 SendSet node,
4420 LocalElement element,
4421 Node rhs,
4422 A arg);
4423
4424 @override
4425 R visitLocalFunctionGet(
4426 Send node,
4427 LocalFunctionElement function,
4428 A arg) {
4429 return handleLocalGet(node, function, arg);
4430 }
4431
4432 @override
4433 R visitLocalFunctionInvoke(
4434 Send node,
4435 LocalFunctionElement function,
4436 NodeList arguments,
4437 Selector selector,
4438 A arg) {
4439 return handleLocalInvoke(node, function, arguments, selector, arg);
4440 }
4441
4442 @override
4443 R visitLocalVariableCompound(
4444 Send node,
4445 LocalVariableElement variable,
4446 AssignmentOperator operator,
4447 Node rhs,
4448 A arg) {
4449 return handleLocalCompound(node, variable, operator, rhs, arg);
4450 }
4451
4452 @override
4453 R visitLocalVariableGet(
4454 Send node,
4455 LocalVariableElement variable,
4456 A arg) {
4457 return handleLocalGet(node, variable, arg);
4458 }
4459
4460 @override
4461 R visitLocalVariableInvoke(
4462 Send node,
4463 LocalVariableElement variable,
4464 NodeList arguments,
4465 Selector selector,
4466 A arg) {
4467 return handleLocalInvoke(node, variable, arguments, selector, arg);
4468 }
4469
4470 @override
4471 R visitLocalVariablePostfix(
4472 Send node,
4473 LocalVariableElement variable,
4474 IncDecOperator operator,
4475 A arg) {
4476 return handleLocalPostfixPrefix(
4477 node, variable, operator, arg, isPrefix: false);
4478 }
4479
4480 @override
4481 R visitLocalVariablePrefix(
4482 Send node,
4483 LocalVariableElement variable,
4484 IncDecOperator operator,
4485 A arg) {
4486 return handleLocalPostfixPrefix(
4487 node, variable, operator, arg, isPrefix: true);
4488 }
4489
4490 @override
4491 R visitLocalVariableSet(
4492 SendSet node,
4493 LocalVariableElement variable,
4494 Node rhs,
4495 A arg) {
4496 return handleLocalSet(node, variable, rhs, arg);
4497 }
4498
4499 @override
4500 R visitParameterCompound(
4501 Send node,
4502 ParameterElement parameter,
4503 AssignmentOperator operator,
4504 Node rhs,
4505 A arg) {
4506 return handleLocalCompound(node, parameter, operator, rhs, arg);
4507 }
4508
4509 @override
4510 R visitParameterGet(
4511 Send node,
4512 ParameterElement parameter,
4513 A arg) {
4514 return handleLocalGet(node, parameter, arg);
4515 }
4516
4517 @override
4518 R visitParameterInvoke(
4519 Send node,
4520 ParameterElement parameter,
4521 NodeList arguments,
4522 Selector selector,
4523 A arg) {
4524 return handleLocalInvoke(node, parameter, arguments, selector, arg);
4525 }
4526
4527 @override
4528 R visitParameterPostfix(
4529 Send node,
4530 ParameterElement parameter,
4531 IncDecOperator operator,
4532 A arg) {
4533 return handleLocalPostfixPrefix(
4534 node, parameter, operator, arg, isPrefix: false);
4535 }
4536
4537 @override
4538 R visitParameterPrefix(
4539 Send node,
4540 ParameterElement parameter,
4541 IncDecOperator operator,
4542 A arg) {
4543 return handleLocalPostfixPrefix(
4544 node, parameter, operator, arg, isPrefix: true);
4545 }
4546
4547 @override
4548 R visitParameterSet(
4549 SendSet node,
4550 ParameterElement parameter,
4551 Node rhs,
4552 A arg) {
4553 return handleLocalSet(node, parameter, rhs, arg);
4554 }
4555 }
4556
4557 /// Mixin that groups all `visitConstantX` and `visitXTypeLiteralY` methods for
4558 /// constant type literals by delegating calls to `handleConstantX` methods.
4559 ///
4560 /// This mixin is useful for the cases where expressions on constants are
4561 /// handled uniformly.
4562 abstract class GroupConstantMixin<R, A> implements SemanticSendVisitor<R, A> {
4563 R handleConstantGet(
4564 Send node,
4565 ConstantExpression constant,
4566 A arg);
4567
4568 R handleConstantInvoke(
4569 Send node,
4570 ConstantExpression constant,
4571 NodeList arguments,
4572 Selector selector,
4573 A arg);
4574
4575 @override
4576 R visitClassTypeLiteralGet(
4577 Send node,
4578 TypeConstantExpression constant,
4579 A arg) {
4580 return handleConstantGet(node, constant, arg);
4581 }
4582
4583 @override
4584 R visitClassTypeLiteralInvoke(
4585 Send node,
4586 TypeConstantExpression constant,
4587 NodeList arguments,
4588 Selector selector,
4589 A arg) {
4590 return handleConstantInvoke(node, constant, arguments, selector, arg);
4591 }
4592
4593 @override
4594 R visitConstantGet(
4595 Send node,
4596 ConstantExpression constant,
4597 A arg) {
4598 return handleConstantGet(node, constant, arg);
4599 }
4600
4601 @override
4602 R visitConstantInvoke(
4603 Send node,
4604 ConstantExpression constant,
4605 NodeList arguments,
4606 Selector selector,
4607 A arg) {
4608 return handleConstantInvoke(node, constant, arguments, selector, arg);
4609 }
4610
4611 @override
4612 R visitDynamicTypeLiteralGet(
4613 Send node,
4614 TypeConstantExpression constant,
4615 A arg) {
4616 return handleConstantGet(node, constant, arg);
4617 }
4618
4619 @override
4620 R visitDynamicTypeLiteralInvoke(
4621 Send node,
4622 TypeConstantExpression constant,
4623 NodeList arguments,
4624 Selector selector,
4625 A arg) {
4626 return handleConstantInvoke(node, constant, arguments, selector, arg);
4627 }
4628
4629 @override
4630 R visitTypedefTypeLiteralGet(
4631 Send node,
4632 TypeConstantExpression constant,
4633 A arg) {
4634 return handleConstantGet(node, constant, arg);
4635 }
4636
4637 @override
4638 R visitTypedefTypeLiteralInvoke(
4639 Send node,
4640 TypeConstantExpression constant,
4641 NodeList arguments,
4642 Selector selector,
4643 A arg) {
4644 return handleConstantInvoke(node, constant, arguments, selector, arg);
4645 }
4646 }
4647
4648 /// Mixin that groups all `visitDynamicPropertyX` and `visitThisPropertyY`
4649 /// methods for by delegating calls to `handleDynamicX` methods, providing
4650 /// `null` as the receiver for the this properties.
4651 ///
4652 /// This mixin is useful for the cases where dynamic and this properties are
4653 /// handled uniformly.
4654 abstract class GroupDynamicMixin<R, A> implements SemanticSendVisitor<R, A> {
4655 R handleDynamicCompound(
4656 Send node,
4657 Node receiver,
4658 AssignmentOperator operator,
4659 Node rhs,
4660 Selector getterSelector,
4661 Selector setterSelector,
4662 A arg);
4663
4664 R handleDynamicGet(
4665 Send node,
4666 Node receiver,
4667 Selector selector,
4668 A arg);
4669
4670 R handleDynamicInvoke(
4671 Send node,
4672 Node receiver,
4673 NodeList arguments,
4674 Selector selector,
4675 A arg);
4676
4677 R handleDynamicPostfixPrefix(
4678 Send node,
4679 Node receiver,
4680 IncDecOperator operator,
4681 Selector getterSelector,
4682 Selector setterSelector,
4683 A arg,
4684 {bool isPrefix});
4685
4686 R handleDynamicSet(
4687 SendSet node,
4688 Node receiver,
4689 Selector selector,
4690 Node rhs,
4691 A arg);
4692
4693 @override
4694 R visitDynamicPropertyCompound(
4695 Send node,
4696 Node receiver,
4697 AssignmentOperator operator,
4698 Node rhs,
4699 Selector getterSelector,
4700 Selector setterSelector,
4701 A arg) {
4702 return handleDynamicCompound(
4703 node, receiver, operator, rhs, getterSelector, setterSelector, arg);
4704 }
4705
4706 @override
4707 R visitDynamicPropertyGet(
4708 Send node,
4709 Node receiver,
4710 Selector selector,
4711 A arg) {
4712 return handleDynamicGet(node, receiver, selector, arg);
4713 }
4714
4715 @override
4716 R visitDynamicPropertyInvoke(
4717 Send node,
4718 Node receiver,
4719 NodeList arguments,
4720 Selector selector,
4721 A arg) {
4722 return handleDynamicInvoke(node, receiver, arguments, selector, arg);
4723 }
4724
4725 @override
4726 R visitDynamicPropertyPostfix(
4727 Send node,
4728 Node receiver,
4729 IncDecOperator operator,
4730 Selector getterSelector,
4731 Selector setterSelector,
4732 A arg) {
4733 return handleDynamicPostfixPrefix(
4734 node, receiver, operator,
4735 getterSelector, setterSelector, arg, isPrefix: false);
4736 }
4737
4738 @override
4739 R visitDynamicPropertyPrefix(
4740 Send node,
4741 Node receiver,
4742 IncDecOperator operator,
4743 Selector getterSelector,
4744 Selector setterSelector,
4745 A arg) {
4746 return handleDynamicPostfixPrefix(
4747 node, receiver, operator,
4748 getterSelector, setterSelector, arg, isPrefix: true);
4749 }
4750
4751 @override
4752 R visitDynamicPropertySet(
4753 SendSet node,
4754 Node receiver,
4755 Selector selector,
4756 Node rhs,
4757 A arg) {
4758 return handleDynamicSet(node, receiver, selector, rhs, arg);
4759 }
4760
4761 @override
4762 R visitThisPropertyCompound(
4763 Send node,
4764 AssignmentOperator operator,
4765 Node rhs,
4766 Selector getterSelector,
4767 Selector setterSelector,
4768 A arg) {
4769 return handleDynamicCompound(
4770 node, null, operator, rhs, getterSelector, setterSelector, arg);
4771 }
4772
4773 @override
4774 R visitThisPropertyGet(
4775 Send node,
4776 Selector selector,
4777 A arg) {
4778 return handleDynamicGet(node, null, selector, arg);
4779 }
4780
4781 @override
4782 R visitThisPropertyInvoke(
4783 Send node,
4784 NodeList arguments,
4785 Selector selector,
4786 A arg) {
4787 return handleDynamicInvoke(node, null, arguments, selector, arg);
4788 }
4789
4790 @override
4791 R visitThisPropertyPostfix(
4792 Send node,
4793 IncDecOperator operator,
4794 Selector getterSelector,
4795 Selector setterSelector,
4796 A arg) {
4797 return handleDynamicPostfixPrefix(
4798 node, null, operator,
4799 getterSelector, setterSelector, arg, isPrefix: false);
4800 }
4801
4802 @override
4803 R visitThisPropertyPrefix(
4804 Send node,
4805 IncDecOperator operator,
4806 Selector getterSelector,
4807 Selector setterSelector,
4808 A arg) {
4809 return handleDynamicPostfixPrefix(
4810 node, null, operator,
4811 getterSelector, setterSelector, arg, isPrefix: true);
4812 }
4813
4814 @override
4815 R visitThisPropertySet(
4816 SendSet node,
4817 Selector selector,
4818 Node rhs,
4819 A arg) {
4820 return handleDynamicSet(node, null, selector, rhs, arg);
4821 }
4822 }
4823
4824 /// Mixin that groups all `visitSuperXPrefix`, `visitSuperXPostfix` methods for
4825 /// by delegating calls to `handleSuperXPostfixPrefix` methods.
4826 ///
4827 /// This mixin is useful for the cases where super prefix/postfix expression are
4828 /// handled uniformly.
4829 abstract class GroupSuperMixin<R, A> implements SemanticSendVisitor<R, A> {
4830 R handleSuperFieldFieldPostfixPrefix(
4831 Send node,
4832 FieldElement readField,
4833 FieldElement writtenField,
4834 IncDecOperator operator,
4835 A arg,
4836 {bool isPrefix});
4837
4838 R handleSuperFieldSetterPostfixPrefix(
4839 Send node,
4840 FieldElement field,
4841 FunctionElement setter,
4842 IncDecOperator operator,
4843 A arg,
4844 {bool isPrefix});
4845
4846 R handleSuperGetterFieldPostfixPrefix(
4847 Send node,
4848 FunctionElement getter,
4849 FieldElement field,
4850 IncDecOperator operator,
4851 A arg,
4852 {bool isPrefix});
4853
4854 R handleSuperGetterSetterPostfixPrefix(
4855 Send node,
4856 FunctionElement getter,
4857 FunctionElement setter,
4858 IncDecOperator operator,
4859 A arg,
4860 {bool isPrefix});
4861
4862 R handleSuperMethodSetterPostfixPrefix(
4863 Send node,
4864 FunctionElement method,
4865 FunctionElement setter,
4866 IncDecOperator operator,
4867 A arg,
4868 {bool isPrefix});
4869
4870 @override
4871 R visitSuperFieldFieldPostfix(
4872 Send node,
4873 FieldElement readField,
4874 FieldElement writtenField,
4875 IncDecOperator operator,
4876 A arg) {
4877 return handleSuperFieldFieldPostfixPrefix(
4878 node, readField, writtenField, operator, arg, isPrefix: false);
4879 }
4880
4881 @override
4882 R visitSuperFieldFieldPrefix(
4883 Send node,
4884 FieldElement readField,
4885 FieldElement writtenField,
4886 IncDecOperator operator,
4887 A arg) {
4888 return handleSuperFieldFieldPostfixPrefix(
4889 node, readField, writtenField, operator, arg, isPrefix: true);
4890 }
4891
4892 @override
4893 R visitSuperFieldPostfix(
4894 Send node,
4895 FieldElement field,
4896 IncDecOperator operator,
4897 A arg) {
4898 return handleSuperFieldFieldPostfixPrefix(
4899 node, field, field, operator, arg, isPrefix: false);
4900 }
4901
4902 @override
4903 R visitSuperFieldPrefix(
4904 Send node,
4905 FieldElement field,
4906 IncDecOperator operator,
4907 A arg) {
4908 return handleSuperFieldFieldPostfixPrefix(
4909 node, field, field, operator, arg, isPrefix: true);
4910 }
4911
4912 @override
4913 R visitSuperFieldSetterPostfix(
4914 Send node,
4915 FieldElement field,
4916 FunctionElement setter,
4917 IncDecOperator operator,
4918 A arg) {
4919 return handleSuperFieldSetterPostfixPrefix(
4920 node, field, setter, operator, arg, isPrefix: false);
4921 }
4922
4923 @override
4924 R visitSuperFieldSetterPrefix(
4925 Send node,
4926 FieldElement field,
4927 FunctionElement setter,
4928 IncDecOperator operator,
4929 A arg) {
4930 return handleSuperFieldSetterPostfixPrefix(
4931 node, field, setter, operator, arg, isPrefix: true);
4932 }
4933
4934 @override
4935 R visitSuperGetterFieldPostfix(
4936 Send node,
4937 FunctionElement getter,
4938 FieldElement field,
4939 IncDecOperator operator,
4940 A arg) {
4941 return handleSuperGetterFieldPostfixPrefix(
4942 node, getter, field, operator, arg, isPrefix: false);
4943 }
4944
4945 @override
4946 R visitSuperGetterFieldPrefix(
4947 Send node,
4948 FunctionElement getter,
4949 FieldElement field,
4950 IncDecOperator operator,
4951 A arg) {
4952 return handleSuperGetterFieldPostfixPrefix(
4953 node, getter, field, operator, arg, isPrefix: true);
4954 }
4955
4956 @override
4957 R visitSuperGetterSetterPostfix(
4958 Send node,
4959 FunctionElement getter,
4960 FunctionElement setter,
4961 IncDecOperator operator,
4962 A arg) {
4963 return handleSuperGetterSetterPostfixPrefix(
4964 node, getter, setter, operator, arg, isPrefix: false);
4965 }
4966
4967 @override
4968 R visitSuperGetterSetterPrefix(
4969 Send node,
4970 FunctionElement getter,
4971 FunctionElement setter,
4972 IncDecOperator operator,
4973 A arg) {
4974 return handleSuperGetterSetterPostfixPrefix(
4975 node, getter, setter, operator, arg, isPrefix: true);
4976 }
4977
4978 @override
4979 R visitSuperMethodSetterPostfix(
4980 Send node,
4981 FunctionElement method,
4982 FunctionElement setter,
4983 IncDecOperator operator,
4984 A arg) {
4985 return handleSuperMethodSetterPostfixPrefix(
4986 node, method, setter, operator, arg, isPrefix: false);
4987 }
4988
4989 @override
4990 R visitSuperMethodSetterPrefix(
4991 Send node,
4992 FunctionElement method,
4993 FunctionElement setter,
4994 IncDecOperator operator,
4995 A arg) {
4996 return handleSuperMethodSetterPostfixPrefix(
4997 node, method, setter, operator, arg, isPrefix: true);
4998 }
4999 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/resolution/semantic_visitor.dart ('k') | pkg/compiler/lib/src/resolution/send_resolver.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698