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 '../common.dart'; | 7 import '../common.dart'; |
8 import '../constants/expressions.dart'; | 8 import '../constants/expressions.dart'; |
9 import '../elements/elements.dart'; | 9 import '../elements/elements.dart'; |
10 import '../elements/names.dart'; | 10 import '../elements/names.dart'; |
(...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
514 /// | 514 /// |
515 /// For instance: | 515 /// For instance: |
516 /// | 516 /// |
517 /// class B { | 517 /// class B { |
518 /// foo(a, b) {} | 518 /// foo(a, b) {} |
519 /// } | 519 /// } |
520 /// class C extends B { | 520 /// class C extends B { |
521 /// m() { super.foo = rhs; } | 521 /// m() { super.foo = rhs; } |
522 /// } | 522 /// } |
523 /// | 523 /// |
524 R visitSuperMethodSet(Send node, MethodElement method, Node rhs, A arg); | 524 R visitSuperMethodSet(SendSet node, MethodElement method, Node rhs, A arg); |
525 | 525 |
526 /// Getter call to the super [getter]. | 526 /// Getter call to the super [getter]. |
527 /// | 527 /// |
528 /// For instance: | 528 /// For instance: |
529 /// | 529 /// |
530 /// class B { | 530 /// class B { |
531 /// get foo => null; | 531 /// get foo => null; |
532 /// } | 532 /// } |
533 /// class C extends B { | 533 /// class C extends B { |
534 /// m() => super.foo; | 534 /// m() => super.foo; |
535 /// } | 535 /// } |
536 /// | 536 /// |
537 R visitSuperGetterGet(Send node, FunctionElement getter, A arg); | 537 R visitSuperGetterGet(Send node, GetterElement getter, A arg); |
538 | 538 |
539 /// Getter call the super [setter]. | 539 /// Getter call the super [setter]. |
540 /// | 540 /// |
541 /// For instance: | 541 /// For instance: |
542 /// | 542 /// |
543 /// class B { | 543 /// class B { |
544 /// set foo(_) {} | 544 /// set foo(_) {} |
545 /// } | 545 /// } |
546 /// class C extends B { | 546 /// class C extends B { |
547 /// m() => super.foo; | 547 /// m() => super.foo; |
548 /// } | 548 /// } |
549 /// | 549 /// |
550 R visitSuperSetterGet(Send node, FunctionElement setter, A arg); | 550 R visitSuperSetterGet(Send node, SetterElement setter, A arg); |
551 | 551 |
552 /// Setter call to the super [setter]. | 552 /// Setter call to the super [setter]. |
553 /// | 553 /// |
554 /// For instance: | 554 /// For instance: |
555 /// | 555 /// |
556 /// class B { | 556 /// class B { |
557 /// set foo(_) {} | 557 /// set foo(_) {} |
558 /// } | 558 /// } |
559 /// class C extends B { | 559 /// class C extends B { |
560 /// m() { super.foo = rhs; } | 560 /// m() { super.foo = rhs; } |
561 /// } | 561 /// } |
562 /// | 562 /// |
563 R visitSuperSetterSet(SendSet node, FunctionElement setter, Node rhs, A arg); | 563 R visitSuperSetterSet(SendSet node, SetterElement setter, Node rhs, A arg); |
564 | 564 |
565 /// Assignment of [rhs] to the super [getter]. | 565 /// Assignment of [rhs] to the super [getter]. |
566 /// | 566 /// |
567 /// For instance: | 567 /// For instance: |
568 /// | 568 /// |
569 /// class B { | 569 /// class B { |
570 /// get foo => null; | 570 /// get foo => null; |
571 /// } | 571 /// } |
572 /// class C extends B { | 572 /// class C extends B { |
573 /// m() { super.foo = rhs; } | 573 /// m() { super.foo = rhs; } |
574 /// } | 574 /// } |
575 /// | 575 /// |
576 R visitSuperGetterSet(SendSet node, FunctionElement getter, Node rhs, A arg); | 576 R visitSuperGetterSet(SendSet node, GetterElement getter, Node rhs, A arg); |
577 | 577 |
578 /// Invocation of the super [getter] with [arguments]. | 578 /// Invocation of the super [getter] with [arguments]. |
579 /// | 579 /// |
580 /// For instance: | 580 /// For instance: |
581 /// | 581 /// |
582 /// class B { | 582 /// class B { |
583 /// get foo => null; | 583 /// get foo => null; |
584 /// } | 584 /// } |
585 /// class C extends B { | 585 /// class C extends B { |
586 /// m() { super.foo(null, 42; } | 586 /// m() { super.foo(null, 42; } |
587 /// } | 587 /// } |
588 /// | 588 /// |
589 R visitSuperGetterInvoke(Send node, FunctionElement getter, | 589 R visitSuperGetterInvoke(Send node, GetterElement getter, NodeList arguments, |
590 NodeList arguments, CallStructure callStructure, A arg); | 590 CallStructure callStructure, A arg); |
591 | 591 |
592 /// Invocation of the super [setter] with [arguments]. | 592 /// Invocation of the super [setter] with [arguments]. |
593 /// | 593 /// |
594 /// For instance: | 594 /// For instance: |
595 /// | 595 /// |
596 /// class B { | 596 /// class B { |
597 /// set foo(_) {} | 597 /// set foo(_) {} |
598 /// } | 598 /// } |
599 /// class C extends B { | 599 /// class C extends B { |
600 /// m() { super.foo(null, 42; } | 600 /// m() { super.foo(null, 42; } |
601 /// } | 601 /// } |
602 /// | 602 /// |
603 R visitSuperSetterInvoke(Send node, FunctionElement setter, | 603 R visitSuperSetterInvoke(Send node, SetterElement setter, NodeList arguments, |
604 NodeList arguments, CallStructure callStructure, A arg); | 604 CallStructure callStructure, A arg); |
605 | 605 |
606 /// Invocation of a [expression] with [arguments]. | 606 /// Invocation of a [expression] with [arguments]. |
607 /// | 607 /// |
608 /// For instance: | 608 /// For instance: |
609 /// | 609 /// |
610 /// m() => (a, b){}(null, 42); | 610 /// m() => (a, b){}(null, 42); |
611 /// | 611 /// |
612 R visitExpressionInvoke(Send node, Node expression, NodeList arguments, | 612 R visitExpressionInvoke(Send node, Node expression, NodeList arguments, |
613 CallStructure callStructure, A arg); | 613 CallStructure callStructure, A arg); |
614 | 614 |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
694 | 694 |
695 /// Assignment of [rhs] to the static [function]. | 695 /// Assignment of [rhs] to the static [function]. |
696 /// | 696 /// |
697 /// For instance: | 697 /// For instance: |
698 /// | 698 /// |
699 /// class C { | 699 /// class C { |
700 /// static foo(a, b) {} | 700 /// static foo(a, b) {} |
701 /// } | 701 /// } |
702 /// m() { C.foo = rhs; } | 702 /// m() { C.foo = rhs; } |
703 /// | 703 /// |
704 R visitStaticFunctionSet(Send node, MethodElement function, Node rhs, A arg); | 704 R visitStaticFunctionSet( |
| 705 SendSet node, MethodElement function, Node rhs, A arg); |
705 | 706 |
706 /// Getter call to the static [getter]. | 707 /// Getter call to the static [getter]. |
707 /// | 708 /// |
708 /// For instance: | 709 /// For instance: |
709 /// | 710 /// |
710 /// class C { | 711 /// class C { |
711 /// static get foo => null; | 712 /// static get foo => null; |
712 /// } | 713 /// } |
713 /// m() => C.foo; | 714 /// m() => C.foo; |
714 /// | 715 /// |
715 R visitStaticGetterGet(Send node, FunctionElement getter, A arg); | 716 R visitStaticGetterGet(Send node, GetterElement getter, A arg); |
716 | 717 |
717 /// Getter call the static [setter]. | 718 /// Getter call the static [setter]. |
718 /// | 719 /// |
719 /// For instance: | 720 /// For instance: |
720 /// | 721 /// |
721 /// class C { | 722 /// class C { |
722 /// static set foo(_) {} | 723 /// static set foo(_) {} |
723 /// } | 724 /// } |
724 /// m() => C.foo; | 725 /// m() => C.foo; |
725 /// | 726 /// |
726 R visitStaticSetterGet(Send node, FunctionElement setter, A arg); | 727 R visitStaticSetterGet(Send node, SetterElement setter, A arg); |
727 | 728 |
728 /// Setter call to the static [setter]. | 729 /// Setter call to the static [setter]. |
729 /// | 730 /// |
730 /// For instance: | 731 /// For instance: |
731 /// | 732 /// |
732 /// class C { | 733 /// class C { |
733 /// static set foo(_) {} | 734 /// static set foo(_) {} |
734 /// } | 735 /// } |
735 /// m() { C.foo = rhs; } | 736 /// m() { C.foo = rhs; } |
736 /// | 737 /// |
737 R visitStaticSetterSet(SendSet node, FunctionElement setter, Node rhs, A arg); | 738 R visitStaticSetterSet(SendSet node, SetterElement setter, Node rhs, A arg); |
738 | 739 |
739 /// Assignment of [rhs] to the static [getter]. | 740 /// Assignment of [rhs] to the static [getter]. |
740 /// | 741 /// |
741 /// For instance: | 742 /// For instance: |
742 /// | 743 /// |
743 /// class C { | 744 /// class C { |
744 /// static get foo => null; | 745 /// static get foo => null; |
745 /// } | 746 /// } |
746 /// m() { C.foo = rhs; } | 747 /// m() { C.foo = rhs; } |
747 /// | 748 /// |
748 R visitStaticGetterSet(SendSet node, FunctionElement getter, Node rhs, A arg); | 749 R visitStaticGetterSet(SendSet node, GetterElement getter, Node rhs, A arg); |
749 | 750 |
750 /// Invocation of the static [getter] with [arguments]. | 751 /// Invocation of the static [getter] with [arguments]. |
751 /// | 752 /// |
752 /// For instance: | 753 /// For instance: |
753 /// | 754 /// |
754 /// class C { | 755 /// class C { |
755 /// static get foo => null; | 756 /// static get foo => null; |
756 /// } | 757 /// } |
757 /// m() { C.foo(null, 42; } | 758 /// m() { C.foo(null, 42; } |
758 /// | 759 /// |
759 R visitStaticGetterInvoke(Send node, FunctionElement getter, | 760 R visitStaticGetterInvoke(Send node, GetterElement getter, NodeList arguments, |
760 NodeList arguments, CallStructure callStructure, A arg); | 761 CallStructure callStructure, A arg); |
761 | 762 |
762 /// Invocation of the static [setter] with [arguments]. | 763 /// Invocation of the static [setter] with [arguments]. |
763 /// | 764 /// |
764 /// For instance: | 765 /// For instance: |
765 /// | 766 /// |
766 /// class C { | 767 /// class C { |
767 /// static set foo(_) {} | 768 /// static set foo(_) {} |
768 /// } | 769 /// } |
769 /// m() { C.foo(null, 42; } | 770 /// m() { C.foo(null, 42; } |
770 /// | 771 /// |
771 R visitStaticSetterInvoke(Send node, FunctionElement setter, | 772 R visitStaticSetterInvoke(Send node, SetterElement setter, NodeList arguments, |
772 NodeList arguments, CallStructure callStructure, A arg); | 773 CallStructure callStructure, A arg); |
773 | 774 |
774 /// Read of the top level [field]. | 775 /// Read of the top level [field]. |
775 /// | 776 /// |
776 /// For instance: | 777 /// For instance: |
777 /// | 778 /// |
778 /// var foo; | 779 /// var foo; |
779 /// m() => foo; | 780 /// m() => foo; |
780 /// | 781 /// |
781 R visitTopLevelFieldGet(Send node, FieldElement field, A arg); | 782 R visitTopLevelFieldGet(Send node, FieldElement field, A arg); |
782 | 783 |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
841 NodeList arguments, CallStructure callStructure, A arg); | 842 NodeList arguments, CallStructure callStructure, A arg); |
842 | 843 |
843 /// Assignment of [rhs] to the top level [function]. | 844 /// Assignment of [rhs] to the top level [function]. |
844 /// | 845 /// |
845 /// For instance: | 846 /// For instance: |
846 /// | 847 /// |
847 /// foo(a, b) {}; | 848 /// foo(a, b) {}; |
848 /// m() { foo = rhs; } | 849 /// m() { foo = rhs; } |
849 /// | 850 /// |
850 R visitTopLevelFunctionSet( | 851 R visitTopLevelFunctionSet( |
851 Send node, MethodElement function, Node rhs, A arg); | 852 SendSet node, MethodElement function, Node rhs, A arg); |
852 | 853 |
853 /// Getter call to the top level [getter]. | 854 /// Getter call to the top level [getter]. |
854 /// | 855 /// |
855 /// For instance: | 856 /// For instance: |
856 /// | 857 /// |
857 /// get foo => null; | 858 /// get foo => null; |
858 /// m() => foo; | 859 /// m() => foo; |
859 /// | 860 /// |
860 R visitTopLevelGetterGet(Send node, FunctionElement getter, A arg); | 861 R visitTopLevelGetterGet(Send node, GetterElement getter, A arg); |
861 | 862 |
862 /// Getter call the top level [setter]. | 863 /// Getter call the top level [setter]. |
863 /// | 864 /// |
864 /// For instance: | 865 /// For instance: |
865 /// | 866 /// |
866 /// set foo(_) {} | 867 /// set foo(_) {} |
867 /// m() => foo; | 868 /// m() => foo; |
868 /// | 869 /// |
869 R visitTopLevelSetterGet(Send node, FunctionElement setter, A arg); | 870 R visitTopLevelSetterGet(Send node, SetterElement setter, A arg); |
870 | 871 |
871 /// Setter call to the top level [setter]. | 872 /// Setter call to the top level [setter]. |
872 /// | 873 /// |
873 /// For instance: | 874 /// For instance: |
874 /// | 875 /// |
875 /// set foo(_) {} | 876 /// set foo(_) {} |
876 /// m() { foo = rhs; } | 877 /// m() { foo = rhs; } |
877 /// | 878 /// |
878 R visitTopLevelSetterSet( | 879 R visitTopLevelSetterSet(SendSet node, SetterElement setter, Node rhs, A arg); |
879 SendSet node, FunctionElement setter, Node rhs, A arg); | |
880 | 880 |
881 /// Assignment of [rhs] to the top level [getter]. | 881 /// Assignment of [rhs] to the top level [getter]. |
882 /// | 882 /// |
883 /// For instance: | 883 /// For instance: |
884 /// | 884 /// |
885 /// get foo => null; | 885 /// get foo => null; |
886 /// m() { foo = rhs; } | 886 /// m() { foo = rhs; } |
887 /// | 887 /// |
888 R visitTopLevelGetterSet( | 888 R visitTopLevelGetterSet(SendSet node, GetterElement getter, Node rhs, A arg); |
889 SendSet node, FunctionElement getter, Node rhs, A arg); | |
890 | 889 |
891 /// Invocation of the top level [getter] with [arguments]. | 890 /// Invocation of the top level [getter] with [arguments]. |
892 /// | 891 /// |
893 /// For instance: | 892 /// For instance: |
894 /// | 893 /// |
895 /// get foo => null; | 894 /// get foo => null; |
896 /// m() { foo(null, 42); } | 895 /// m() { foo(null, 42); } |
897 /// | 896 /// |
898 R visitTopLevelGetterInvoke(Send node, FunctionElement getter, | 897 R visitTopLevelGetterInvoke(Send node, GetterElement getter, |
899 NodeList arguments, CallStructure callStructure, A arg); | 898 NodeList arguments, CallStructure callStructure, A arg); |
900 | 899 |
901 /// Invocation of the top level [setter] with [arguments]. | 900 /// Invocation of the top level [setter] with [arguments]. |
902 /// | 901 /// |
903 /// For instance: | 902 /// For instance: |
904 /// | 903 /// |
905 /// set foo(_) {}; | 904 /// set foo(_) {}; |
906 /// m() { foo(null, 42); } | 905 /// m() { foo(null, 42); } |
907 /// | 906 /// |
908 R visitTopLevelSetterInvoke(Send node, FunctionElement setter, | 907 R visitTopLevelSetterInvoke(Send node, SetterElement setter, |
909 NodeList arguments, CallStructure callStructure, A arg); | 908 NodeList arguments, CallStructure callStructure, A arg); |
910 | 909 |
911 /// Read of the type literal for class [element]. | 910 /// Read of the type literal for class [element]. |
912 /// | 911 /// |
913 /// For instance: | 912 /// For instance: |
914 /// | 913 /// |
915 /// class C {} | 914 /// class C {} |
916 /// m() => C; | 915 /// m() => C; |
917 /// | 916 /// |
918 R visitClassTypeLiteralGet(Send node, ConstantExpression constant, A arg); | 917 R visitClassTypeLiteralGet(Send node, ConstantExpression constant, A arg); |
919 | 918 |
920 /// Invocation of the type literal for class [element] with [arguments]. | 919 /// Invocation of the type literal for class [element] with [arguments]. |
921 /// | 920 /// |
922 /// For instance: | 921 /// For instance: |
923 /// | 922 /// |
924 /// class C {} | 923 /// class C {} |
925 /// m() => C(null, 42); | 924 /// m() => C(null, 42); |
926 /// | 925 /// |
927 R visitClassTypeLiteralInvoke(Send node, ConstantExpression constant, | 926 R visitClassTypeLiteralInvoke(Send node, ConstantExpression constant, |
928 NodeList arguments, CallStructure callStructure, A arg); | 927 NodeList arguments, CallStructure callStructure, A arg); |
929 | 928 |
930 /// Assignment of [rhs] to the type literal for class [element]. | 929 /// Assignment of [rhs] to the type literal for class [element]. |
931 /// | 930 /// |
932 /// For instance: | 931 /// For instance: |
933 /// | 932 /// |
934 /// class C {} | 933 /// class C {} |
935 /// m() { C = rhs; } | 934 /// m() { C = rhs; } |
936 /// | 935 /// |
937 R visitClassTypeLiteralSet( | 936 R visitClassTypeLiteralSet( |
938 SendSet node, ConstantExpression constant, Node rhs, A arg); | 937 SendSet node, TypeConstantExpression constant, Node rhs, A arg); |
939 | 938 |
940 /// Read of the type literal for typedef [element]. | 939 /// Read of the type literal for typedef [element]. |
941 /// | 940 /// |
942 /// For instance: | 941 /// For instance: |
943 /// | 942 /// |
944 /// typedef F(); | 943 /// typedef F(); |
945 /// m() => F; | 944 /// m() => F; |
946 /// | 945 /// |
947 R visitTypedefTypeLiteralGet(Send node, ConstantExpression constant, A arg); | 946 R visitTypedefTypeLiteralGet(Send node, ConstantExpression constant, A arg); |
948 | 947 |
949 /// Invocation of the type literal for typedef [element] with [arguments]. | 948 /// Invocation of the type literal for typedef [element] with [arguments]. |
950 /// | 949 /// |
951 /// For instance: | 950 /// For instance: |
952 /// | 951 /// |
953 /// typedef F(); | 952 /// typedef F(); |
954 /// m() => F(null, 42); | 953 /// m() => F(null, 42); |
955 /// | 954 /// |
956 R visitTypedefTypeLiteralInvoke(Send node, ConstantExpression constant, | 955 R visitTypedefTypeLiteralInvoke(Send node, ConstantExpression constant, |
957 NodeList arguments, CallStructure callStructure, A arg); | 956 NodeList arguments, CallStructure callStructure, A arg); |
958 | 957 |
959 /// Assignment of [rhs] to the type literal for typedef [element]. | 958 /// Assignment of [rhs] to the type literal for typedef [element]. |
960 /// | 959 /// |
961 /// For instance: | 960 /// For instance: |
962 /// | 961 /// |
963 /// typedef F(); | 962 /// typedef F(); |
964 /// m() { F = rhs; } | 963 /// m() { F = rhs; } |
965 /// | 964 /// |
966 R visitTypedefTypeLiteralSet( | 965 R visitTypedefTypeLiteralSet( |
967 SendSet node, ConstantExpression constant, Node rhs, A arg); | 966 SendSet node, TypeConstantExpression constant, Node rhs, A arg); |
968 | 967 |
969 /// Read of the type literal for type variable [element]. | 968 /// Read of the type literal for type variable [element]. |
970 /// | 969 /// |
971 /// For instance: | 970 /// For instance: |
972 /// | 971 /// |
973 /// class C<T> { | 972 /// class C<T> { |
974 /// m() => T; | 973 /// m() => T; |
975 /// } | 974 /// } |
976 /// | 975 /// |
977 R visitTypeVariableTypeLiteralGet( | 976 R visitTypeVariableTypeLiteralGet( |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1017 R visitDynamicTypeLiteralInvoke(Send node, ConstantExpression constant, | 1016 R visitDynamicTypeLiteralInvoke(Send node, ConstantExpression constant, |
1018 NodeList arguments, CallStructure callStructure, A arg); | 1017 NodeList arguments, CallStructure callStructure, A arg); |
1019 | 1018 |
1020 /// Assignment of [rhs] to the type literal for `dynamic`. | 1019 /// Assignment of [rhs] to the type literal for `dynamic`. |
1021 /// | 1020 /// |
1022 /// For instance: | 1021 /// For instance: |
1023 /// | 1022 /// |
1024 /// m() { dynamic = rhs; } | 1023 /// m() { dynamic = rhs; } |
1025 /// | 1024 /// |
1026 R visitDynamicTypeLiteralSet( | 1025 R visitDynamicTypeLiteralSet( |
1027 SendSet node, ConstantExpression constant, Node rhs, A arg); | 1026 SendSet node, TypeConstantExpression constant, Node rhs, A arg); |
1028 | 1027 |
1029 /// Binary expression `left operator right` where [operator] is a user | 1028 /// Binary expression `left operator right` where [operator] is a user |
1030 /// definable operator. Binary expressions using operator `==` are handled | 1029 /// definable operator. Binary expressions using operator `==` are handled |
1031 /// by [visitEquals] and index operations `a[b]` are handled by [visitIndex]. | 1030 /// by [visitEquals] and index operations `a[b]` are handled by [visitIndex]. |
1032 /// | 1031 /// |
1033 /// For instance: | 1032 /// For instance: |
1034 /// | 1033 /// |
1035 /// add(a, b) => a + b; | 1034 /// add(a, b) => a + b; |
1036 /// sub(a, b) => a - b; | 1035 /// sub(a, b) => a - b; |
1037 /// mul(a, b) => a * b; | 1036 /// mul(a, b) => a * b; |
1038 /// | 1037 /// |
1039 R visitBinary( | 1038 R visitBinary( |
1040 Send node, Node left, BinaryOperator operator, Node right, A arg); | 1039 Send node, Node left, BinaryOperator operator, Node right, A arg); |
1041 | 1040 |
1042 /// Binary expression `super operator argument` where [operator] is a user | 1041 /// Binary expression `super operator argument` where [operator] is a user |
1043 /// definable operator implemented on a superclass by [function]. Binary | 1042 /// definable operator implemented on a superclass by [function]. Binary |
1044 /// expressions using operator `==` are handled by [visitSuperEquals]. | 1043 /// expressions using operator `==` are handled by [visitSuperEquals]. |
1045 /// | 1044 /// |
1046 /// For instance: | 1045 /// For instance: |
1047 /// | 1046 /// |
1048 /// class B { | 1047 /// class B { |
1049 /// operator +(_) => null; | 1048 /// operator +(_) => null; |
1050 /// } | 1049 /// } |
1051 /// class C extends B { | 1050 /// class C extends B { |
1052 /// m(a) => super + a; | 1051 /// m(a) => super + a; |
1053 /// } | 1052 /// } |
1054 /// | 1053 /// |
1055 R visitSuperBinary(Send node, FunctionElement function, | 1054 R visitSuperBinary(Send node, MethodElement function, BinaryOperator operator, |
1056 BinaryOperator operator, Node argument, A arg); | 1055 Node argument, A arg); |
1057 | 1056 |
1058 /// Binary operation on the unresolved super [element]. | 1057 /// Binary operation on the unresolved super [element]. |
1059 /// | 1058 /// |
1060 /// For instance: | 1059 /// For instance: |
1061 /// | 1060 /// |
1062 /// class B { | 1061 /// class B { |
1063 /// } | 1062 /// } |
1064 /// class C extends B { | 1063 /// class C extends B { |
1065 /// m() => super + 42; | 1064 /// m() => super + 42; |
1066 /// } | 1065 /// } |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1101 /// | 1100 /// |
1102 /// For instance: | 1101 /// For instance: |
1103 /// | 1102 /// |
1104 /// class B { | 1103 /// class B { |
1105 /// operator [](_) => null; | 1104 /// operator [](_) => null; |
1106 /// } | 1105 /// } |
1107 /// class C extends B { | 1106 /// class C extends B { |
1108 /// m(a) => super[a]; | 1107 /// m(a) => super[a]; |
1109 /// } | 1108 /// } |
1110 /// | 1109 /// |
1111 R visitSuperIndex(Send node, FunctionElement function, Node index, A arg); | 1110 R visitSuperIndex(Send node, MethodElement function, Node index, A arg); |
1112 | 1111 |
1113 /// Index expression `super[index]` where 'operator []' is unresolved. | 1112 /// Index expression `super[index]` where 'operator []' is unresolved. |
1114 /// | 1113 /// |
1115 /// For instance: | 1114 /// For instance: |
1116 /// | 1115 /// |
1117 /// class B {} | 1116 /// class B {} |
1118 /// class C extends B { | 1117 /// class C extends B { |
1119 /// m(a) => super[a]; | 1118 /// m(a) => super[a]; |
1120 /// } | 1119 /// } |
1121 /// | 1120 /// |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1173 /// | 1172 /// |
1174 /// For instance: | 1173 /// For instance: |
1175 /// | 1174 /// |
1176 /// class B { | 1175 /// class B { |
1177 /// operator []=(a, b) {} | 1176 /// operator []=(a, b) {} |
1178 /// } | 1177 /// } |
1179 /// class C extends B { | 1178 /// class C extends B { |
1180 /// m(a) => --super[a]; | 1179 /// m(a) => --super[a]; |
1181 /// } | 1180 /// } |
1182 /// | 1181 /// |
1183 R visitUnresolvedSuperGetterIndexPrefix(Send node, Element element, | 1182 R visitUnresolvedSuperGetterIndexPrefix(SendSet node, Element element, |
1184 MethodElement setter, Node index, IncDecOperator operator, A arg); | 1183 MethodElement setter, Node index, IncDecOperator operator, A arg); |
1185 | 1184 |
1186 /// Postfix operation on an index expression `super[index] operator` where | 1185 /// Postfix operation on an index expression `super[index] operator` where |
1187 /// 'operator []' is unresolved, 'operator []=' is defined by [setter], and | 1186 /// 'operator []' is unresolved, 'operator []=' is defined by [setter], and |
1188 /// the operation is defined by [operator]. | 1187 /// the operation is defined by [operator]. |
1189 /// | 1188 /// |
1190 /// For instance: | 1189 /// For instance: |
1191 /// | 1190 /// |
1192 /// class B { | 1191 /// class B { |
1193 /// operator []=(a, b) {} | 1192 /// operator []=(a, b) {} |
1194 /// } | 1193 /// } |
1195 /// class C extends B { | 1194 /// class C extends B { |
1196 /// m(a) => super[a]++; | 1195 /// m(a) => super[a]++; |
1197 /// } | 1196 /// } |
1198 /// | 1197 /// |
1199 R visitUnresolvedSuperGetterIndexPostfix(Send node, Element element, | 1198 R visitUnresolvedSuperGetterIndexPostfix(SendSet node, Element element, |
1200 MethodElement setter, Node index, IncDecOperator operator, A arg); | 1199 MethodElement setter, Node index, IncDecOperator operator, A arg); |
1201 | 1200 |
1202 /// Prefix operation on an index expression `operator super[index]` where | 1201 /// Prefix operation on an index expression `operator super[index]` where |
1203 /// 'operator []' is implemented on a superclass by [indexFunction] and | 1202 /// 'operator []' is implemented on a superclass by [indexFunction] and |
1204 /// 'operator []=' is unresolved and the operation is defined by [operator]. | 1203 /// 'operator []=' is unresolved and the operation is defined by [operator]. |
1205 /// | 1204 /// |
1206 /// For instance: | 1205 /// For instance: |
1207 /// | 1206 /// |
1208 /// class B { | 1207 /// class B { |
1209 /// operator [](_) => 42; | 1208 /// operator [](_) => 42; |
1210 /// } | 1209 /// } |
1211 /// class C extends B { | 1210 /// class C extends B { |
1212 /// m(a) => --super[a]; | 1211 /// m(a) => --super[a]; |
1213 /// } | 1212 /// } |
1214 /// | 1213 /// |
1215 R visitUnresolvedSuperSetterIndexPrefix( | 1214 R visitUnresolvedSuperSetterIndexPrefix( |
1216 Send node, | 1215 SendSet node, |
1217 MethodElement indexFunction, | 1216 MethodElement indexFunction, |
1218 Element element, | 1217 Element element, |
1219 Node index, | 1218 Node index, |
1220 IncDecOperator operator, | 1219 IncDecOperator operator, |
1221 A arg); | 1220 A arg); |
1222 | 1221 |
1223 /// Postfix operation on an index expression `super[index] operator` where | 1222 /// Postfix operation on an index expression `super[index] operator` where |
1224 /// 'operator []' is implemented on a superclass by [indexFunction] and | 1223 /// 'operator []' is implemented on a superclass by [indexFunction] and |
1225 /// 'operator []=' is unresolved and the operation is defined by [operator]. | 1224 /// 'operator []=' is unresolved and the operation is defined by [operator]. |
1226 /// | 1225 /// |
1227 /// For instance: | 1226 /// For instance: |
1228 /// | 1227 /// |
1229 /// class B { | 1228 /// class B { |
1230 /// operator [](_) => 42; | 1229 /// operator [](_) => 42; |
1231 /// } | 1230 /// } |
1232 /// class C extends B { | 1231 /// class C extends B { |
1233 /// m(a) => super[a]++; | 1232 /// m(a) => super[a]++; |
1234 /// } | 1233 /// } |
1235 /// | 1234 /// |
1236 R visitUnresolvedSuperSetterIndexPostfix( | 1235 R visitUnresolvedSuperSetterIndexPostfix( |
1237 Send node, | 1236 SendSet node, |
1238 MethodElement indexFunction, | 1237 MethodElement indexFunction, |
1239 Element element, | 1238 Element element, |
1240 Node index, | 1239 Node index, |
1241 IncDecOperator operator, | 1240 IncDecOperator operator, |
1242 A arg); | 1241 A arg); |
1243 | 1242 |
1244 /// Prefix operation on an index expression `super[index] operator` where | 1243 /// Prefix operation on an index expression `super[index] operator` where |
1245 /// both 'operator []' and 'operator []=' are unresolved and the operation is | 1244 /// both 'operator []' and 'operator []=' are unresolved and the operation is |
1246 /// defined by [operator]. | 1245 /// defined by [operator]. |
1247 /// | 1246 /// |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1287 /// For instance: | 1286 /// For instance: |
1288 /// | 1287 /// |
1289 /// class B { | 1288 /// class B { |
1290 /// operator +(_) => null; | 1289 /// operator +(_) => null; |
1291 /// } | 1290 /// } |
1292 /// class C extends B { | 1291 /// class C extends B { |
1293 /// m(a) => super + a; | 1292 /// m(a) => super + a; |
1294 /// } | 1293 /// } |
1295 /// | 1294 /// |
1296 R visitSuperNotEquals( | 1295 R visitSuperNotEquals( |
1297 Send node, FunctionElement function, Node argument, A arg); | 1296 Send node, MethodElement function, Node argument, A arg); |
1298 | 1297 |
1299 /// Binary expression `left == right`. | 1298 /// Binary expression `left == right`. |
1300 /// | 1299 /// |
1301 /// For instance: | 1300 /// For instance: |
1302 /// | 1301 /// |
1303 /// eq(a, b) => a == b; | 1302 /// eq(a, b) => a == b; |
1304 /// | 1303 /// |
1305 R visitEquals(Send node, Node left, Node right, A arg); | 1304 R visitEquals(Send node, Node left, Node right, A arg); |
1306 | 1305 |
1307 /// Binary expression `super == argument` where `==` is implemented on a | 1306 /// Binary expression `super == argument` where `==` is implemented on a |
1308 /// superclass by [function]. | 1307 /// superclass by [function]. |
1309 /// | 1308 /// |
1310 /// For instance: | 1309 /// For instance: |
1311 /// | 1310 /// |
1312 /// class B { | 1311 /// class B { |
1313 /// operator ==(_) => null; | 1312 /// operator ==(_) => null; |
1314 /// } | 1313 /// } |
1315 /// class C extends B { | 1314 /// class C extends B { |
1316 /// m(a) => super == a; | 1315 /// m(a) => super == a; |
1317 /// } | 1316 /// } |
1318 /// | 1317 /// |
1319 R visitSuperEquals(Send node, FunctionElement function, Node argument, A arg); | 1318 R visitSuperEquals(Send node, MethodElement function, Node argument, A arg); |
1320 | 1319 |
1321 /// Unary expression `operator expression` where [operator] is a user | 1320 /// Unary expression `operator expression` where [operator] is a user |
1322 /// definable operator. | 1321 /// definable operator. |
1323 /// | 1322 /// |
1324 /// For instance: | 1323 /// For instance: |
1325 /// | 1324 /// |
1326 /// neg(a, b) => -a; | 1325 /// neg(a, b) => -a; |
1327 /// comp(a, b) => ~a; | 1326 /// comp(a, b) => ~a; |
1328 /// | 1327 /// |
1329 R visitUnary(Send node, UnaryOperator operator, Node expression, A arg); | 1328 R visitUnary(Send node, UnaryOperator operator, Node expression, A arg); |
1330 | 1329 |
1331 /// Unary expression `operator super` where [operator] is a user definable | 1330 /// Unary expression `operator super` where [operator] is a user definable |
1332 /// operator implemented on a superclass by [function]. | 1331 /// operator implemented on a superclass by [function]. |
1333 /// | 1332 /// |
1334 /// For instance: | 1333 /// For instance: |
1335 /// | 1334 /// |
1336 /// class B { | 1335 /// class B { |
1337 /// operator -() => null; | 1336 /// operator -() => null; |
1338 /// } | 1337 /// } |
1339 /// class C extends B { | 1338 /// class C extends B { |
1340 /// m(a) => -super; | 1339 /// m(a) => -super; |
1341 /// } | 1340 /// } |
1342 /// | 1341 /// |
1343 R visitSuperUnary( | 1342 R visitSuperUnary( |
1344 Send node, UnaryOperator operator, FunctionElement function, A arg); | 1343 Send node, UnaryOperator operator, MethodElement function, A arg); |
1345 | 1344 |
1346 /// Unary operation on the unresolved super [element]. | 1345 /// Unary operation on the unresolved super [element]. |
1347 /// | 1346 /// |
1348 /// For instance: | 1347 /// For instance: |
1349 /// | 1348 /// |
1350 /// class B { | 1349 /// class B { |
1351 /// } | 1350 /// } |
1352 /// class C extends B { | 1351 /// class C extends B { |
1353 /// m() => -super; | 1352 /// m() => -super; |
1354 /// } | 1353 /// } |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1392 /// | 1391 /// |
1393 /// For instance: | 1392 /// For instance: |
1394 /// | 1393 /// |
1395 /// class B { | 1394 /// class B { |
1396 /// } | 1395 /// } |
1397 /// class C extends B { | 1396 /// class C extends B { |
1398 /// m() => super[1] = 42; | 1397 /// m() => super[1] = 42; |
1399 /// } | 1398 /// } |
1400 /// | 1399 /// |
1401 R visitUnresolvedSuperIndexSet( | 1400 R visitUnresolvedSuperIndexSet( |
1402 Send node, Element element, Node index, Node rhs, A arg); | 1401 SendSet node, ErroneousElement element, Node index, Node rhs, A arg); |
1403 | 1402 |
1404 /// If-null, ??, expression with operands [left] and [right]. | 1403 /// If-null, ??, expression with operands [left] and [right]. |
1405 /// | 1404 /// |
1406 /// For instance: | 1405 /// For instance: |
1407 /// | 1406 /// |
1408 /// m() => left ?? right; | 1407 /// m() => left ?? right; |
1409 /// | 1408 /// |
1410 R visitIfNull(Send node, Node left, Node right, A arg); | 1409 R visitIfNull(Send node, Node left, Node right, A arg); |
1411 | 1410 |
1412 /// Logical and, &&, expression with operands [left] and [right]. | 1411 /// Logical and, &&, expression with operands [left] and [right]. |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1581 /// static [getter] and writing to a static [setter]. | 1580 /// static [getter] and writing to a static [setter]. |
1582 /// | 1581 /// |
1583 /// For instance: | 1582 /// For instance: |
1584 /// | 1583 /// |
1585 /// class C { | 1584 /// class C { |
1586 /// static get o => 0; | 1585 /// static get o => 0; |
1587 /// static set o(_) {} | 1586 /// static set o(_) {} |
1588 /// m(rhs) => o += rhs; | 1587 /// m(rhs) => o += rhs; |
1589 /// } | 1588 /// } |
1590 /// | 1589 /// |
1591 R visitStaticGetterSetterCompound(Send node, FunctionElement getter, | 1590 R visitStaticGetterSetterCompound(Send node, GetterElement getter, |
1592 FunctionElement setter, AssignmentOperator operator, Node rhs, A arg); | 1591 SetterElement setter, AssignmentOperator operator, Node rhs, A arg); |
1593 | 1592 |
1594 /// Compound assignment expression of [rhs] with [operator] reading from a | 1593 /// Compound assignment expression of [rhs] with [operator] reading from a |
1595 /// static [method], that is, closurizing [method], and writing to a static | 1594 /// static [method], that is, closurizing [method], and writing to a static |
1596 /// [setter]. | 1595 /// [setter]. |
1597 /// | 1596 /// |
1598 /// For instance: | 1597 /// For instance: |
1599 /// | 1598 /// |
1600 /// class C { | 1599 /// class C { |
1601 /// static o() {} | 1600 /// static o() {} |
1602 /// static set o(_) {} | 1601 /// static set o(_) {} |
1603 /// m(rhs) => o += rhs; | 1602 /// m(rhs) => o += rhs; |
1604 /// } | 1603 /// } |
1605 /// | 1604 /// |
1606 R visitStaticMethodSetterCompound(Send node, MethodElement method, | 1605 R visitStaticMethodSetterCompound(Send node, MethodElement method, |
1607 MethodElement setter, AssignmentOperator operator, Node rhs, A arg); | 1606 SetterElement setter, AssignmentOperator operator, Node rhs, A arg); |
1608 | 1607 |
1609 /// Compound assignment expression of [rhs] with [operator] on a top level | 1608 /// Compound assignment expression of [rhs] with [operator] on a top level |
1610 /// [field]. | 1609 /// [field]. |
1611 /// | 1610 /// |
1612 /// For instance: | 1611 /// For instance: |
1613 /// | 1612 /// |
1614 /// var field; | 1613 /// var field; |
1615 /// m(rhs) => field += rhs; | 1614 /// m(rhs) => field += rhs; |
1616 /// | 1615 /// |
1617 R visitTopLevelFieldCompound(Send node, FieldElement field, | 1616 R visitTopLevelFieldCompound(Send node, FieldElement field, |
(...skipping 12 matching lines...) Expand all Loading... |
1630 | 1629 |
1631 /// Compound assignment expression of [rhs] with [operator] reading from a | 1630 /// Compound assignment expression of [rhs] with [operator] reading from a |
1632 /// top level [getter] and writing to a top level [setter]. | 1631 /// top level [getter] and writing to a top level [setter]. |
1633 /// | 1632 /// |
1634 /// For instance: | 1633 /// For instance: |
1635 /// | 1634 /// |
1636 /// get o => 0; | 1635 /// get o => 0; |
1637 /// set o(_) {} | 1636 /// set o(_) {} |
1638 /// m(rhs) => o += rhs; | 1637 /// m(rhs) => o += rhs; |
1639 /// | 1638 /// |
1640 R visitTopLevelGetterSetterCompound(Send node, FunctionElement getter, | 1639 R visitTopLevelGetterSetterCompound(Send node, GetterElement getter, |
1641 FunctionElement setter, AssignmentOperator operator, Node rhs, A arg); | 1640 SetterElement setter, AssignmentOperator operator, Node rhs, A arg); |
1642 | 1641 |
1643 /// Compound assignment expression of [rhs] with [operator] reading from a | 1642 /// Compound assignment expression of [rhs] with [operator] reading from a |
1644 /// top level [method], that is, closurizing [method], and writing to a top | 1643 /// top level [method], that is, closurizing [method], and writing to a top |
1645 /// level [setter]. | 1644 /// level [setter]. |
1646 /// | 1645 /// |
1647 /// For instance: | 1646 /// For instance: |
1648 /// | 1647 /// |
1649 /// o() {} | 1648 /// o() {} |
1650 /// set o(_) {} | 1649 /// set o(_) {} |
1651 /// m(rhs) => o += rhs; | 1650 /// m(rhs) => o += rhs; |
1652 /// | 1651 /// |
1653 R visitTopLevelMethodSetterCompound(Send node, FunctionElement method, | 1652 R visitTopLevelMethodSetterCompound(Send node, FunctionElement method, |
1654 FunctionElement setter, AssignmentOperator operator, Node rhs, A arg); | 1653 SetterElement setter, AssignmentOperator operator, Node rhs, A arg); |
1655 | 1654 |
1656 /// Compound assignment expression of [rhs] with [operator] reading from a | 1655 /// Compound assignment expression of [rhs] with [operator] reading from a |
1657 /// top level [method], that is, closurizing [method], and writing to an | 1656 /// top level [method], that is, closurizing [method], and writing to an |
1658 /// unresolved setter. | 1657 /// unresolved setter. |
1659 /// | 1658 /// |
1660 /// For instance: | 1659 /// For instance: |
1661 /// | 1660 /// |
1662 /// o() {} | 1661 /// o() {} |
1663 /// m(rhs) => o += rhs; | 1662 /// m(rhs) => o += rhs; |
1664 /// | 1663 /// |
1665 R visitTopLevelMethodCompound(Send node, FunctionElement method, | 1664 R visitTopLevelMethodCompound(Send node, MethodElement method, |
1666 AssignmentOperator operator, Node rhs, A arg); | 1665 AssignmentOperator operator, Node rhs, A arg); |
1667 | 1666 |
1668 /// Compound assignment expression of [rhs] with [operator] on a super | 1667 /// Compound assignment expression of [rhs] with [operator] on a super |
1669 /// [field]. | 1668 /// [field]. |
1670 /// | 1669 /// |
1671 /// For instance: | 1670 /// For instance: |
1672 /// | 1671 /// |
1673 /// class B { | 1672 /// class B { |
1674 /// var field; | 1673 /// var field; |
1675 /// } | 1674 /// } |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1831 /// the [setter], if the value of the [getter] is `null`. | 1830 /// the [setter], if the value of the [getter] is `null`. |
1832 /// | 1831 /// |
1833 /// For instance: | 1832 /// For instance: |
1834 /// | 1833 /// |
1835 /// class C { | 1834 /// class C { |
1836 /// static get o => 0; | 1835 /// static get o => 0; |
1837 /// static set o(_) {} | 1836 /// static set o(_) {} |
1838 /// m(rhs) => o ??= rhs; | 1837 /// m(rhs) => o ??= rhs; |
1839 /// } | 1838 /// } |
1840 /// | 1839 /// |
1841 R visitStaticGetterSetterSetIfNull(Send node, FunctionElement getter, | 1840 R visitStaticGetterSetterSetIfNull( |
1842 FunctionElement setter, Node rhs, A arg); | 1841 Send node, GetterElement getter, SetterElement setter, Node rhs, A arg); |
1843 | 1842 |
1844 /// If-null assignment expression of [rhs] to the static property defined by | 1843 /// If-null assignment expression of [rhs] to the static property defined by |
1845 /// [method] and [setter]. That is, [rhs] is only evaluated and assigned to | 1844 /// [method] and [setter]. That is, [rhs] is only evaluated and assigned to |
1846 /// the [setter], if the value of the [method] is `null`. The behavior is thus | 1845 /// the [setter], if the value of the [method] is `null`. The behavior is thus |
1847 /// equivalent to a closurization of [method]. | 1846 /// equivalent to a closurization of [method]. |
1848 /// | 1847 /// |
1849 /// For instance: | 1848 /// For instance: |
1850 /// | 1849 /// |
1851 /// class C { | 1850 /// class C { |
1852 /// static o() {} | 1851 /// static o() {} |
1853 /// static set o(_) {} | 1852 /// static set o(_) {} |
1854 /// m(rhs) => o ??= rhs; | 1853 /// m(rhs) => o ??= rhs; |
1855 /// } | 1854 /// } |
1856 /// | 1855 /// |
1857 R visitStaticMethodSetterSetIfNull( | 1856 R visitStaticMethodSetterSetIfNull( |
1858 Send node, MethodElement method, MethodElement setter, Node rhs, A arg); | 1857 Send node, MethodElement method, SetterElement setter, Node rhs, A arg); |
1859 | 1858 |
1860 /// If-null assignment expression of [rhs] to the static [method]. That is, | 1859 /// If-null assignment expression of [rhs] to the static [method]. That is, |
1861 /// [rhs] is only evaluated and assigned, if the value of the [method] is | 1860 /// [rhs] is only evaluated and assigned, if the value of the [method] is |
1862 /// `null`. The behavior is thus equivalent to a closurization of [method]. | 1861 /// `null`. The behavior is thus equivalent to a closurization of [method]. |
1863 /// | 1862 /// |
1864 /// For instance: | 1863 /// For instance: |
1865 /// | 1864 /// |
1866 /// o() {} | 1865 /// o() {} |
1867 /// m(rhs) => o ??= rhs; | 1866 /// m(rhs) => o ??= rhs; |
1868 /// | 1867 /// |
(...skipping 26 matching lines...) Expand all Loading... |
1895 /// If-null assignment expression of [rhs] to the top level property defined | 1894 /// If-null assignment expression of [rhs] to the top level property defined |
1896 /// by [getter] and [setter]. That is, [rhs] is only evaluated and assigned to | 1895 /// by [getter] and [setter]. That is, [rhs] is only evaluated and assigned to |
1897 /// the [setter], if the value of the [getter] is `null`. | 1896 /// the [setter], if the value of the [getter] is `null`. |
1898 /// | 1897 /// |
1899 /// For instance: | 1898 /// For instance: |
1900 /// | 1899 /// |
1901 /// get o => 0; | 1900 /// get o => 0; |
1902 /// set o(_) {} | 1901 /// set o(_) {} |
1903 /// m(rhs) => o ??= rhs; | 1902 /// m(rhs) => o ??= rhs; |
1904 /// | 1903 /// |
1905 R visitTopLevelGetterSetterSetIfNull(Send node, FunctionElement getter, | 1904 R visitTopLevelGetterSetterSetIfNull( |
1906 FunctionElement setter, Node rhs, A arg); | 1905 Send node, GetterElement getter, SetterElement setter, Node rhs, A arg); |
1907 | 1906 |
1908 /// If-null assignment expression of [rhs] to the top level property defined | 1907 /// If-null assignment expression of [rhs] to the top level property defined |
1909 /// by [method] and [setter]. That is, [rhs] is only evaluated and assigned to | 1908 /// by [method] and [setter]. That is, [rhs] is only evaluated and assigned to |
1910 /// the [setter], if the value of the [method] is `null`. The behavior is thus | 1909 /// the [setter], if the value of the [method] is `null`. The behavior is thus |
1911 /// equivalent to a closurization of [method]. | 1910 /// equivalent to a closurization of [method]. |
1912 /// | 1911 /// |
1913 /// For instance: | 1912 /// For instance: |
1914 /// | 1913 /// |
1915 /// o() {} | 1914 /// o() {} |
1916 /// set o(_) {} | 1915 /// set o(_) {} |
1917 /// m(rhs) => o ??= rhs; | 1916 /// m(rhs) => o ??= rhs; |
1918 /// | 1917 /// |
1919 R visitTopLevelMethodSetterSetIfNull(Send node, FunctionElement method, | 1918 R visitTopLevelMethodSetterSetIfNull( |
1920 FunctionElement setter, Node rhs, A arg); | 1919 Send node, FunctionElement method, SetterElement setter, Node rhs, A arg); |
1921 | 1920 |
1922 /// If-null assignment expression of [rhs] to the top level [method]. That is, | 1921 /// If-null assignment expression of [rhs] to the top level [method]. That is, |
1923 /// [rhs] is only evaluated and assigned, if the value of the [method] is | 1922 /// [rhs] is only evaluated and assigned, if the value of the [method] is |
1924 /// `null`. The behavior is thus equivalent to a closurization of [method]. | 1923 /// `null`. The behavior is thus equivalent to a closurization of [method]. |
1925 /// | 1924 /// |
1926 /// For instance: | 1925 /// For instance: |
1927 /// | 1926 /// |
1928 /// o() {} | 1927 /// o() {} |
1929 /// m(rhs) => o ??= rhs; | 1928 /// m(rhs) => o ??= rhs; |
1930 /// | 1929 /// |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1988 /// For instance: | 1987 /// For instance: |
1989 /// | 1988 /// |
1990 /// class B { | 1989 /// class B { |
1991 /// get o => 0; | 1990 /// get o => 0; |
1992 /// set o(_) {} | 1991 /// set o(_) {} |
1993 /// } | 1992 /// } |
1994 /// class C extends B { | 1993 /// class C extends B { |
1995 /// m(rhs) => super.o ??= rhs; | 1994 /// m(rhs) => super.o ??= rhs; |
1996 /// } | 1995 /// } |
1997 /// | 1996 /// |
1998 R visitSuperGetterSetterSetIfNull(Send node, FunctionElement getter, | 1997 R visitSuperGetterSetterSetIfNull( |
1999 FunctionElement setter, Node rhs, A arg); | 1998 Send node, GetterElement getter, SetterElement setter, Node rhs, A arg); |
2000 | 1999 |
2001 /// If-null assignment expression of [rhs] to the super property defined | 2000 /// If-null assignment expression of [rhs] to the super property defined |
2002 /// by [method] and [setter]. That is, [rhs] is only evaluated and assigned to | 2001 /// by [method] and [setter]. That is, [rhs] is only evaluated and assigned to |
2003 /// the [setter], if the value of the [method] is `null`. The behavior is thus | 2002 /// the [setter], if the value of the [method] is `null`. The behavior is thus |
2004 /// equivalent to a closurization of [method]. | 2003 /// equivalent to a closurization of [method]. |
2005 /// | 2004 /// |
2006 /// For instance: | 2005 /// For instance: |
2007 /// | 2006 /// |
2008 /// class B { | 2007 /// class B { |
2009 /// o() {} | 2008 /// o() {} |
2010 /// set o(_) {} | 2009 /// set o(_) {} |
2011 /// } | 2010 /// } |
2012 /// class C extends B { | 2011 /// class C extends B { |
2013 /// m(rhs) => super.o ??= rhs; | 2012 /// m(rhs) => super.o ??= rhs; |
2014 /// } | 2013 /// } |
2015 /// | 2014 /// |
2016 R visitSuperMethodSetterSetIfNull(Send node, FunctionElement method, | 2015 R visitSuperMethodSetterSetIfNull( |
2017 FunctionElement setter, Node rhs, A arg); | 2016 Send node, FunctionElement method, SetterElement setter, Node rhs, A arg); |
2018 | 2017 |
2019 /// If-null assignment expression of [rhs] to the super [method]. | 2018 /// If-null assignment expression of [rhs] to the super [method]. |
2020 /// That is, [rhs] is only evaluated and assigned, if the value of | 2019 /// That is, [rhs] is only evaluated and assigned, if the value of |
2021 /// the [method] is `null`. The behavior is thus equivalent to a closurization | 2020 /// the [method] is `null`. The behavior is thus equivalent to a closurization |
2022 /// of [method]. | 2021 /// of [method]. |
2023 /// | 2022 /// |
2024 /// For instance: | 2023 /// For instance: |
2025 /// | 2024 /// |
2026 /// class B { | 2025 /// class B { |
2027 /// o() {} | 2026 /// o() {} |
(...skipping 13 matching lines...) Expand all Loading... |
2041 /// For instance: | 2040 /// For instance: |
2042 /// | 2041 /// |
2043 /// class B { | 2042 /// class B { |
2044 /// set o(_) {} | 2043 /// set o(_) {} |
2045 /// } | 2044 /// } |
2046 /// class C extends B { | 2045 /// class C extends B { |
2047 /// m(rhs) => super.o ??= rhs; | 2046 /// m(rhs) => super.o ??= rhs; |
2048 /// } | 2047 /// } |
2049 /// | 2048 /// |
2050 R visitUnresolvedSuperGetterSetIfNull( | 2049 R visitUnresolvedSuperGetterSetIfNull( |
2051 Send node, Element element, MethodElement setter, Node rhs, A arg); | 2050 Send node, Element element, SetterElement setter, Node rhs, A arg); |
2052 | 2051 |
2053 /// If-null assignment expression of [rhs] to the super property defined | 2052 /// If-null assignment expression of [rhs] to the super property defined |
2054 /// by [getter] with no corresponding setter. That is, [rhs] is only evaluated | 2053 /// by [getter] with no corresponding setter. That is, [rhs] is only evaluated |
2055 /// and assigned to the unresolved setter, if the value of the [getter] is | 2054 /// and assigned to the unresolved setter, if the value of the [getter] is |
2056 /// `null`. | 2055 /// `null`. |
2057 /// | 2056 /// |
2058 /// For instance: | 2057 /// For instance: |
2059 /// | 2058 /// |
2060 /// class B { | 2059 /// class B { |
2061 /// get o => 42; | 2060 /// get o => 42; |
2062 /// } | 2061 /// } |
2063 /// class C extends B { | 2062 /// class C extends B { |
2064 /// m(rhs) => super.o ??= rhs; | 2063 /// m(rhs) => super.o ??= rhs; |
2065 /// } | 2064 /// } |
2066 /// | 2065 /// |
2067 R visitUnresolvedSuperSetterSetIfNull( | 2066 R visitUnresolvedSuperSetterSetIfNull( |
2068 Send node, MethodElement getter, Element element, Node rhs, A arg); | 2067 Send node, GetterElement getter, Element element, Node rhs, A arg); |
2069 | 2068 |
2070 /// If-null assignment expression of [rhs] to the top level property defined | 2069 /// If-null assignment expression of [rhs] to the top level property defined |
2071 /// by [field] and [setter]. That is, [rhs] is only evaluated and assigned to | 2070 /// by [field] and [setter]. That is, [rhs] is only evaluated and assigned to |
2072 /// the [setter], if the value of the [field] is `null`. | 2071 /// the [setter], if the value of the [field] is `null`. |
2073 /// | 2072 /// |
2074 /// For instance: | 2073 /// For instance: |
2075 /// | 2074 /// |
2076 /// class A { | 2075 /// class A { |
2077 /// var o; | 2076 /// var o; |
2078 /// } | 2077 /// } |
2079 /// class B extends A { | 2078 /// class B extends A { |
2080 /// set o(_) {} | 2079 /// set o(_) {} |
2081 /// } | 2080 /// } |
2082 /// class C extends B { | 2081 /// class C extends B { |
2083 /// m(rhs) => super.o ??= rhs; | 2082 /// m(rhs) => super.o ??= rhs; |
2084 /// } | 2083 /// } |
2085 /// | 2084 /// |
2086 R visitSuperFieldSetterSetIfNull( | 2085 R visitSuperFieldSetterSetIfNull( |
2087 Send node, FieldElement field, FunctionElement setter, Node rhs, A arg); | 2086 Send node, FieldElement field, SetterElement setter, Node rhs, A arg); |
2088 | 2087 |
2089 /// If-null assignment expression of [rhs] to the top level property defined | 2088 /// If-null assignment expression of [rhs] to the top level property defined |
2090 /// by [getter] and [field]. That is, [rhs] is only evaluated and assigned to | 2089 /// by [getter] and [field]. That is, [rhs] is only evaluated and assigned to |
2091 /// the [field], if the value of the [getter] is `null`. | 2090 /// the [field], if the value of the [getter] is `null`. |
2092 /// | 2091 /// |
2093 /// For instance: | 2092 /// For instance: |
2094 /// | 2093 /// |
2095 /// class A { | 2094 /// class A { |
2096 /// var o; | 2095 /// var o; |
2097 /// } | 2096 /// } |
2098 /// class B extends A { | 2097 /// class B extends A { |
2099 /// get o => 0; | 2098 /// get o => 0; |
2100 /// } | 2099 /// } |
2101 /// class C extends B { | 2100 /// class C extends B { |
2102 /// m(rhs) => super.o ??= rhs; | 2101 /// m(rhs) => super.o ??= rhs; |
2103 /// } | 2102 /// } |
2104 /// | 2103 /// |
2105 R visitSuperGetterFieldSetIfNull( | 2104 R visitSuperGetterFieldSetIfNull( |
2106 Send node, FunctionElement getter, FieldElement field, Node rhs, A arg); | 2105 Send node, GetterElement getter, FieldElement field, Node rhs, A arg); |
2107 | 2106 |
2108 /// If-null assignment expression of [rhs] to an unresolved super property. | 2107 /// If-null assignment expression of [rhs] to an unresolved super property. |
2109 /// That is, [rhs] is only evaluated and assigned, if the value of the | 2108 /// That is, [rhs] is only evaluated and assigned, if the value of the |
2110 /// unresolved property is `null`. The behavior is thus equivalent to a no | 2109 /// unresolved property is `null`. The behavior is thus equivalent to a no |
2111 /// such method error. | 2110 /// such method error. |
2112 /// | 2111 /// |
2113 /// For instance: | 2112 /// For instance: |
2114 /// | 2113 /// |
2115 /// class B { | 2114 /// class B { |
2116 /// } | 2115 /// } |
(...skipping 10 matching lines...) Expand all Loading... |
2127 /// error. | 2126 /// error. |
2128 /// | 2127 /// |
2129 /// For instance: | 2128 /// For instance: |
2130 /// | 2129 /// |
2131 /// class C { | 2130 /// class C { |
2132 /// set foo(_) {} | 2131 /// set foo(_) {} |
2133 /// } | 2132 /// } |
2134 /// m1() => C.foo ??= 42; | 2133 /// m1() => C.foo ??= 42; |
2135 /// | 2134 /// |
2136 R visitUnresolvedStaticGetterSetIfNull( | 2135 R visitUnresolvedStaticGetterSetIfNull( |
2137 Send node, Element element, MethodElement setter, Node rhs, A arg); | 2136 Send node, Element element, SetterElement setter, Node rhs, A arg); |
2138 | 2137 |
2139 /// If-null assignment expression of [rhs] to the top level property defined | 2138 /// If-null assignment expression of [rhs] to the top level property defined |
2140 /// by [setter] with no corresponding getter. That is, [rhs] is only evaluated | 2139 /// by [setter] with no corresponding getter. That is, [rhs] is only evaluated |
2141 /// and assigned to the [setter], if the value of the unresolved getter is | 2140 /// and assigned to the [setter], if the value of the unresolved getter is |
2142 /// `null`. The behavior is thus equivalent to a no such method error. | 2141 /// `null`. The behavior is thus equivalent to a no such method error. |
2143 /// | 2142 /// |
2144 /// For instance: | 2143 /// For instance: |
2145 /// | 2144 /// |
2146 /// set foo(_) {} | 2145 /// set foo(_) {} |
2147 /// m1() => foo ??= 42; | 2146 /// m1() => foo ??= 42; |
2148 /// | 2147 /// |
2149 R visitUnresolvedTopLevelGetterSetIfNull( | 2148 R visitUnresolvedTopLevelGetterSetIfNull( |
2150 Send node, Element element, MethodElement setter, Node rhs, A arg); | 2149 Send node, Element element, SetterElement setter, Node rhs, A arg); |
2151 | 2150 |
2152 /// If-null assignment expression of [rhs] to the static property defined | 2151 /// If-null assignment expression of [rhs] to the static property defined |
2153 /// by [getter] with no corresponding setter. That is, [rhs] is only evaluated | 2152 /// by [getter] with no corresponding setter. That is, [rhs] is only evaluated |
2154 /// and assigned to the unresolved setter, if the value of the [getter] is | 2153 /// and assigned to the unresolved setter, if the value of the [getter] is |
2155 /// `null`. | 2154 /// `null`. |
2156 /// | 2155 /// |
2157 /// For instance: | 2156 /// For instance: |
2158 /// | 2157 /// |
2159 /// class C { | 2158 /// class C { |
2160 /// get foo => 42; | 2159 /// get foo => 42; |
2161 /// } | 2160 /// } |
2162 /// m1() => C.foo ??= 42; | 2161 /// m1() => C.foo ??= 42; |
2163 /// | 2162 /// |
2164 R visitUnresolvedStaticSetterSetIfNull( | 2163 R visitUnresolvedStaticSetterSetIfNull( |
2165 Send node, MethodElement getter, Element element, Node rhs, A arg); | 2164 Send node, GetterElement getter, Element element, Node rhs, A arg); |
2166 | 2165 |
2167 /// If-null assignment expression of [rhs] to the top level property defined | 2166 /// If-null assignment expression of [rhs] to the top level property defined |
2168 /// by [getter] with no corresponding setter. That is, [rhs] is only evaluated | 2167 /// by [getter] with no corresponding setter. That is, [rhs] is only evaluated |
2169 /// and assigned to the unresolved setter, if the value of the [getter] is | 2168 /// and assigned to the unresolved setter, if the value of the [getter] is |
2170 /// `null`. | 2169 /// `null`. |
2171 /// | 2170 /// |
2172 /// For instance: | 2171 /// For instance: |
2173 /// | 2172 /// |
2174 /// get foo => 42; | 2173 /// get foo => 42; |
2175 /// m1() => foo ??= 42; | 2174 /// m1() => foo ??= 42; |
2176 /// | 2175 /// |
2177 R visitUnresolvedTopLevelSetterSetIfNull( | 2176 R visitUnresolvedTopLevelSetterSetIfNull( |
2178 Send node, MethodElement getter, Element element, Node rhs, A arg); | 2177 Send node, GetterElement getter, Element element, Node rhs, A arg); |
2179 | 2178 |
2180 /// If-null assignment expression of [rhs] to an unresolved property. | 2179 /// If-null assignment expression of [rhs] to an unresolved property. |
2181 /// That is, [rhs] is only evaluated and assigned, if the value of the | 2180 /// That is, [rhs] is only evaluated and assigned, if the value of the |
2182 /// unresolved property is `null`. The behavior is thus equivalent to a no | 2181 /// unresolved property is `null`. The behavior is thus equivalent to a no |
2183 /// such method error. | 2182 /// such method error. |
2184 /// | 2183 /// |
2185 /// For instance: | 2184 /// For instance: |
2186 /// | 2185 /// |
2187 /// class C {} | 2186 /// class C {} |
2188 /// m1() => unresolved ??= 42; | 2187 /// m1() => unresolved ??= 42; |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2271 /// | 2270 /// |
2272 /// For instance: | 2271 /// For instance: |
2273 /// | 2272 /// |
2274 /// class B { | 2273 /// class B { |
2275 /// } | 2274 /// } |
2276 /// class C extends B { | 2275 /// class C extends B { |
2277 /// m(rhs) => ++super.unresolved; | 2276 /// m(rhs) => ++super.unresolved; |
2278 /// } | 2277 /// } |
2279 /// | 2278 /// |
2280 R visitUnresolvedSuperPrefix( | 2279 R visitUnresolvedSuperPrefix( |
2281 Send node, Element element, IncDecOperator operator, A arg); | 2280 SendSet node, Element element, IncDecOperator operator, A arg); |
2282 | 2281 |
2283 /// Postfix expression with [operator] on an unresolved super property. | 2282 /// Postfix expression with [operator] on an unresolved super property. |
2284 /// | 2283 /// |
2285 /// For instance: | 2284 /// For instance: |
2286 /// | 2285 /// |
2287 /// class B { | 2286 /// class B { |
2288 /// } | 2287 /// } |
2289 /// class C extends B { | 2288 /// class C extends B { |
2290 /// m(rhs) => super.unresolved++; | 2289 /// m(rhs) => super.unresolved++; |
2291 /// } | 2290 /// } |
2292 /// | 2291 /// |
2293 R visitUnresolvedSuperPostfix( | 2292 R visitUnresolvedSuperPostfix( |
2294 Send node, Element element, IncDecOperator operator, A arg); | 2293 SendSet node, Element element, IncDecOperator operator, A arg); |
2295 | 2294 |
2296 /// Compound assignment expression of [rhs] with [operator] on an unresolved | 2295 /// Compound assignment expression of [rhs] with [operator] on an unresolved |
2297 /// super property. | 2296 /// super property. |
2298 /// | 2297 /// |
2299 /// For instance: | 2298 /// For instance: |
2300 /// | 2299 /// |
2301 /// class B { | 2300 /// class B { |
2302 /// } | 2301 /// } |
2303 /// class C extends B { | 2302 /// class C extends B { |
2304 /// m(rhs) => super.unresolved += rhs; | 2303 /// m(rhs) => super.unresolved += rhs; |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2346 /// For instance: | 2345 /// For instance: |
2347 /// | 2346 /// |
2348 /// class B { | 2347 /// class B { |
2349 /// get o => 0; | 2348 /// get o => 0; |
2350 /// set o(_) {} | 2349 /// set o(_) {} |
2351 /// } | 2350 /// } |
2352 /// class C extends B { | 2351 /// class C extends B { |
2353 /// m(rhs) => super.o += rhs; | 2352 /// m(rhs) => super.o += rhs; |
2354 /// } | 2353 /// } |
2355 /// | 2354 /// |
2356 R visitSuperGetterSetterCompound(Send node, FunctionElement getter, | 2355 R visitSuperGetterSetterCompound(Send node, GetterElement getter, |
2357 FunctionElement setter, AssignmentOperator operator, Node rhs, A arg); | 2356 SetterElement setter, AssignmentOperator operator, Node rhs, A arg); |
2358 | 2357 |
2359 /// Compound assignment expression of [rhs] with [operator] reading from a | 2358 /// Compound assignment expression of [rhs] with [operator] reading from a |
2360 /// super [method], that is, closurizing [method], and writing to a super | 2359 /// super [method], that is, closurizing [method], and writing to a super |
2361 /// [setter]. | 2360 /// [setter]. |
2362 /// | 2361 /// |
2363 /// For instance: | 2362 /// For instance: |
2364 /// | 2363 /// |
2365 /// class B { | 2364 /// class B { |
2366 /// o() {} | 2365 /// o() {} |
2367 /// set o(_) {} | 2366 /// set o(_) {} |
2368 /// } | 2367 /// } |
2369 /// class C extends B { | 2368 /// class C extends B { |
2370 /// m(rhs) => super.o += rhs; | 2369 /// m(rhs) => super.o += rhs; |
2371 /// } | 2370 /// } |
2372 /// | 2371 /// |
2373 R visitSuperMethodSetterCompound(Send node, FunctionElement method, | 2372 R visitSuperMethodSetterCompound(Send node, FunctionElement method, |
2374 FunctionElement setter, AssignmentOperator operator, Node rhs, A arg); | 2373 SetterElement setter, AssignmentOperator operator, Node rhs, A arg); |
2375 | 2374 |
2376 /// Compound assignment expression of [rhs] with [operator] reading the | 2375 /// Compound assignment expression of [rhs] with [operator] reading the |
2377 /// closurized super [method] and trying to invoke the non-existing setter. | 2376 /// closurized super [method] and trying to invoke the non-existing setter. |
2378 /// | 2377 /// |
2379 /// For instance: | 2378 /// For instance: |
2380 /// | 2379 /// |
2381 /// class B { | 2380 /// class B { |
2382 /// o() {} | 2381 /// o() {} |
2383 /// } | 2382 /// } |
2384 /// class C extends B { | 2383 /// class C extends B { |
2385 /// m(rhs) => super.o += rhs; | 2384 /// m(rhs) => super.o += rhs; |
2386 /// } | 2385 /// } |
2387 /// | 2386 /// |
2388 R visitSuperMethodCompound(Send node, FunctionElement method, | 2387 R visitSuperMethodCompound(Send node, MethodElement method, |
2389 AssignmentOperator operator, Node rhs, A arg); | 2388 AssignmentOperator operator, Node rhs, A arg); |
2390 | 2389 |
2391 /// Compound assignment expression of [rhs] with [operator] reading from the | 2390 /// Compound assignment expression of [rhs] with [operator] reading from the |
2392 /// non-existing super getter and writing to a super [setter]. | 2391 /// non-existing super getter and writing to a super [setter]. |
2393 /// | 2392 /// |
2394 /// For instance: | 2393 /// For instance: |
2395 /// | 2394 /// |
2396 /// class B { | 2395 /// class B { |
2397 /// set o(_) {} | 2396 /// set o(_) {} |
2398 /// } | 2397 /// } |
2399 /// class C extends B { | 2398 /// class C extends B { |
2400 /// m(rhs) => super.o += rhs; | 2399 /// m(rhs) => super.o += rhs; |
2401 /// } | 2400 /// } |
2402 /// | 2401 /// |
2403 R visitUnresolvedSuperGetterCompound(Send node, Element element, | 2402 R visitUnresolvedSuperGetterCompound(SendSet node, Element element, |
2404 MethodElement setter, AssignmentOperator operator, Node rhs, A arg); | 2403 SetterElement setter, AssignmentOperator operator, Node rhs, A arg); |
2405 | 2404 |
2406 /// Compound assignment expression of [rhs] with [operator] reading from a | 2405 /// Compound assignment expression of [rhs] with [operator] reading from a |
2407 /// super [getter] and writing to the non-existing super setter. | 2406 /// super [getter] and writing to the non-existing super setter. |
2408 /// | 2407 /// |
2409 /// For instance: | 2408 /// For instance: |
2410 /// | 2409 /// |
2411 /// class B { | 2410 /// class B { |
2412 /// get o => 42; | 2411 /// get o => 42; |
2413 /// } | 2412 /// } |
2414 /// class C extends B { | 2413 /// class C extends B { |
2415 /// m(rhs) => super.o += rhs; | 2414 /// m(rhs) => super.o += rhs; |
2416 /// } | 2415 /// } |
2417 /// | 2416 /// |
2418 R visitUnresolvedSuperSetterCompound(Send node, MethodElement getter, | 2417 R visitUnresolvedSuperSetterCompound(Send node, GetterElement getter, |
2419 Element element, AssignmentOperator operator, Node rhs, A arg); | 2418 Element element, AssignmentOperator operator, Node rhs, A arg); |
2420 | 2419 |
2421 /// Compound assignment expression of [rhs] with [operator] reading from a | 2420 /// Compound assignment expression of [rhs] with [operator] reading from a |
2422 /// super [field] and writing to a super [setter]. | 2421 /// super [field] and writing to a super [setter]. |
2423 /// | 2422 /// |
2424 /// For instance: | 2423 /// For instance: |
2425 /// | 2424 /// |
2426 /// class A { | 2425 /// class A { |
2427 /// var o; | 2426 /// var o; |
2428 /// } | 2427 /// } |
2429 /// class B extends A { | 2428 /// class B extends A { |
2430 /// set o(_) {} | 2429 /// set o(_) {} |
2431 /// } | 2430 /// } |
2432 /// class C extends B { | 2431 /// class C extends B { |
2433 /// m(rhs) => super.o += rhs; | 2432 /// m(rhs) => super.o += rhs; |
2434 /// } | 2433 /// } |
2435 /// | 2434 /// |
2436 R visitSuperFieldSetterCompound(Send node, FieldElement field, | 2435 R visitSuperFieldSetterCompound(Send node, FieldElement field, |
2437 FunctionElement setter, AssignmentOperator operator, Node rhs, A arg); | 2436 SetterElement setter, AssignmentOperator operator, Node rhs, A arg); |
2438 | 2437 |
2439 /// Compound assignment expression of [rhs] with [operator] reading from a | 2438 /// Compound assignment expression of [rhs] with [operator] reading from a |
2440 /// super [getter] and writing to a super [field]. | 2439 /// super [getter] and writing to a super [field]. |
2441 /// | 2440 /// |
2442 /// For instance: | 2441 /// For instance: |
2443 /// | 2442 /// |
2444 /// class A { | 2443 /// class A { |
2445 /// var o; | 2444 /// var o; |
2446 /// } | 2445 /// } |
2447 /// class B extends A { | 2446 /// class B extends A { |
2448 /// get o => 0; | 2447 /// get o => 0; |
2449 /// } | 2448 /// } |
2450 /// class C extends B { | 2449 /// class C extends B { |
2451 /// m(rhs) => super.o += rhs; | 2450 /// m(rhs) => super.o += rhs; |
2452 /// } | 2451 /// } |
2453 /// | 2452 /// |
2454 R visitSuperGetterFieldCompound(Send node, FunctionElement getter, | 2453 R visitSuperGetterFieldCompound(Send node, GetterElement getter, |
2455 FieldElement field, AssignmentOperator operator, Node rhs, A arg); | 2454 FieldElement field, AssignmentOperator operator, Node rhs, A arg); |
2456 | 2455 |
2457 /// Compound assignment expression of [rhs] with [operator] on a type literal | 2456 /// Compound assignment expression of [rhs] with [operator] on a type literal |
2458 /// for class [element]. | 2457 /// for class [element]. |
2459 /// | 2458 /// |
2460 /// For instance: | 2459 /// For instance: |
2461 /// | 2460 /// |
2462 /// class C {} | 2461 /// class C {} |
2463 /// m(rhs) => C += rhs; | 2462 /// m(rhs) => C += rhs; |
2464 /// | 2463 /// |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2536 /// | 2535 /// |
2537 /// For instance: | 2536 /// For instance: |
2538 /// | 2537 /// |
2539 /// class B { | 2538 /// class B { |
2540 /// } | 2539 /// } |
2541 /// class C extends B { | 2540 /// class C extends B { |
2542 /// m() => super[1] += 42; | 2541 /// m() => super[1] += 42; |
2543 /// } | 2542 /// } |
2544 /// | 2543 /// |
2545 R visitUnresolvedSuperGetterCompoundIndexSet( | 2544 R visitUnresolvedSuperGetterCompoundIndexSet( |
2546 Send node, | 2545 SendSet node, |
2547 Element element, | 2546 Element element, |
2548 MethodElement setter, | 2547 MethodElement setter, |
2549 Node index, | 2548 Node index, |
2550 AssignmentOperator operator, | 2549 AssignmentOperator operator, |
2551 Node rhs, | 2550 Node rhs, |
2552 A arg); | 2551 A arg); |
2553 | 2552 |
2554 /// Compound index assignment of [rhs] with [operator] to [index] on a super | 2553 /// Compound index assignment of [rhs] with [operator] to [index] on a super |
2555 /// class where the index getter is defined by [getter] but the index setter | 2554 /// class where the index getter is defined by [getter] but the index setter |
2556 /// is undefined. | 2555 /// is undefined. |
2557 /// | 2556 /// |
2558 /// For instance: | 2557 /// For instance: |
2559 /// | 2558 /// |
2560 /// class B { | 2559 /// class B { |
2561 /// operator [](index) => 42; | 2560 /// operator [](index) => 42; |
2562 /// } | 2561 /// } |
2563 /// class C extends B { | 2562 /// class C extends B { |
2564 /// m() => super[1] += 42; | 2563 /// m() => super[1] += 42; |
2565 /// } | 2564 /// } |
2566 /// | 2565 /// |
2567 R visitUnresolvedSuperSetterCompoundIndexSet( | 2566 R visitUnresolvedSuperSetterCompoundIndexSet( |
2568 Send node, | 2567 SendSet node, |
2569 MethodElement getter, | 2568 MethodElement getter, |
2570 Element element, | 2569 Element element, |
2571 Node index, | 2570 Node index, |
2572 AssignmentOperator operator, | 2571 AssignmentOperator operator, |
2573 Node rhs, | 2572 Node rhs, |
2574 A arg); | 2573 A arg); |
2575 | 2574 |
2576 /// Compound index assignment of [rhs] with [operator] to [index] on a super | 2575 /// Compound index assignment of [rhs] with [operator] to [index] on a super |
2577 /// class where the index getter and setter are undefined. | 2576 /// class where the index getter and setter are undefined. |
2578 /// | 2577 /// |
2579 /// For instance: | 2578 /// For instance: |
2580 /// | 2579 /// |
2581 /// class B { | 2580 /// class B { |
2582 /// } | 2581 /// } |
2583 /// class C extends B { | 2582 /// class C extends B { |
2584 /// m() => super[1] += 42; | 2583 /// m() => super[1] += 42; |
2585 /// } | 2584 /// } |
2586 /// | 2585 /// |
2587 R visitUnresolvedSuperCompoundIndexSet(Send node, Element element, Node index, | 2586 R visitUnresolvedSuperCompoundIndexSet(SendSet node, Element element, |
2588 AssignmentOperator operator, Node rhs, A arg); | 2587 Node index, AssignmentOperator operator, Node rhs, A arg); |
2589 | 2588 |
2590 /// If-null assignment expression of [rhs] to [index] on the index operators | 2589 /// If-null assignment expression of [rhs] to [index] on the index operators |
2591 /// of [receiver]. | 2590 /// of [receiver]. |
2592 /// | 2591 /// |
2593 /// For instance: | 2592 /// For instance: |
2594 /// | 2593 /// |
2595 /// m(receiver, index, rhs) => receiver[index] ??= rhs; | 2594 /// m(receiver, index, rhs) => receiver[index] ??= rhs; |
2596 /// | 2595 /// |
2597 R visitIndexSetIfNull( | 2596 R visitIndexSetIfNull( |
2598 SendSet node, Node receiver, Node index, Node rhs, A arg); | 2597 SendSet node, Node receiver, Node index, Node rhs, A arg); |
(...skipping 19 matching lines...) Expand all Loading... |
2618 /// | 2617 /// |
2619 /// For instance: | 2618 /// For instance: |
2620 /// | 2619 /// |
2621 /// class B { | 2620 /// class B { |
2622 /// operator [](index, value) {} | 2621 /// operator [](index, value) {} |
2623 /// } | 2622 /// } |
2624 /// class C extends B { | 2623 /// class C extends B { |
2625 /// m() => super[1] ??= 42; | 2624 /// m() => super[1] ??= 42; |
2626 /// } | 2625 /// } |
2627 /// | 2626 /// |
2628 R visitUnresolvedSuperGetterIndexSetIfNull(Send node, Element element, | 2627 R visitUnresolvedSuperGetterIndexSetIfNull(SendSet node, Element element, |
2629 MethodElement setter, Node index, Node rhs, A arg); | 2628 MethodElement setter, Node index, Node rhs, A arg); |
2630 | 2629 |
2631 /// If-null assignment expression of [rhs] to [index] on a super class where | 2630 /// If-null assignment expression of [rhs] to [index] on a super class where |
2632 /// the index getter is defined by [getter] but the index setter is undefined. | 2631 /// the index getter is defined by [getter] but the index setter is undefined. |
2633 /// | 2632 /// |
2634 /// For instance: | 2633 /// For instance: |
2635 /// | 2634 /// |
2636 /// class B { | 2635 /// class B { |
2637 /// operator [](index) => 42; | 2636 /// operator [](index) => 42; |
2638 /// } | 2637 /// } |
2639 /// class C extends B { | 2638 /// class C extends B { |
2640 /// m() => super[1] ??= 42; | 2639 /// m() => super[1] ??= 42; |
2641 /// } | 2640 /// } |
2642 /// | 2641 /// |
2643 R visitUnresolvedSuperSetterIndexSetIfNull(Send node, MethodElement getter, | 2642 R visitUnresolvedSuperSetterIndexSetIfNull(SendSet node, MethodElement getter, |
2644 Element element, Node index, Node rhs, A arg); | 2643 Element element, Node index, Node rhs, A arg); |
2645 | 2644 |
2646 /// If-null assignment expression of [rhs] to [index] on a super class where | 2645 /// If-null assignment expression of [rhs] to [index] on a super class where |
2647 /// the index getter and setter are undefined. | 2646 /// the index getter and setter are undefined. |
2648 /// | 2647 /// |
2649 /// For instance: | 2648 /// For instance: |
2650 /// | 2649 /// |
2651 /// class B { | 2650 /// class B { |
2652 /// } | 2651 /// } |
2653 /// class C extends B { | 2652 /// class C extends B { |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2780 /// writing to a static [setter]. | 2779 /// writing to a static [setter]. |
2781 /// | 2780 /// |
2782 /// For instance: | 2781 /// For instance: |
2783 /// | 2782 /// |
2784 /// class C { | 2783 /// class C { |
2785 /// static get o => 0; | 2784 /// static get o => 0; |
2786 /// static set o(_) {} | 2785 /// static set o(_) {} |
2787 /// m() => ++o; | 2786 /// m() => ++o; |
2788 /// } | 2787 /// } |
2789 /// | 2788 /// |
2790 R visitStaticGetterSetterPrefix(Send node, FunctionElement getter, | 2789 R visitStaticGetterSetterPrefix(Send node, GetterElement getter, |
2791 FunctionElement setter, IncDecOperator operator, A arg); | 2790 SetterElement setter, IncDecOperator operator, A arg); |
2792 | 2791 |
2793 /// Prefix expression with [operator] reading from a static [method], that is, | 2792 /// Prefix expression with [operator] reading from a static [method], that is, |
2794 /// closurizing [method], and writing to a static [setter]. | 2793 /// closurizing [method], and writing to a static [setter]. |
2795 /// | 2794 /// |
2796 /// For instance: | 2795 /// For instance: |
2797 /// | 2796 /// |
2798 /// class C { | 2797 /// class C { |
2799 /// static o() {} | 2798 /// static o() {} |
2800 /// static set o(_) {} | 2799 /// static set o(_) {} |
2801 /// m() => ++o; | 2800 /// m() => ++o; |
2802 /// } | 2801 /// } |
2803 /// | 2802 /// |
2804 R visitStaticMethodSetterPrefix(Send node, FunctionElement getter, | 2803 R visitStaticMethodSetterPrefix(Send node, GetterElement getter, |
2805 FunctionElement setter, IncDecOperator operator, A arg); | 2804 SetterElement setter, IncDecOperator operator, A arg); |
2806 | 2805 |
2807 /// Prefix expression with [operator] on a top level [field]. | 2806 /// Prefix expression with [operator] on a top level [field]. |
2808 /// | 2807 /// |
2809 /// For instance: | 2808 /// For instance: |
2810 /// | 2809 /// |
2811 /// var field; | 2810 /// var field; |
2812 /// m() => ++field; | 2811 /// m() => ++field; |
2813 /// | 2812 /// |
2814 R visitTopLevelFieldPrefix( | 2813 R visitTopLevelFieldPrefix( |
2815 Send node, FieldElement field, IncDecOperator operator, A arg); | 2814 Send node, FieldElement field, IncDecOperator operator, A arg); |
(...skipping 10 matching lines...) Expand all Loading... |
2826 | 2825 |
2827 /// Prefix expression with [operator] reading from a top level [getter] and | 2826 /// Prefix expression with [operator] reading from a top level [getter] and |
2828 /// writing to a top level [setter]. | 2827 /// writing to a top level [setter]. |
2829 /// | 2828 /// |
2830 /// For instance: | 2829 /// For instance: |
2831 /// | 2830 /// |
2832 /// get o => 0; | 2831 /// get o => 0; |
2833 /// set o(_) {} | 2832 /// set o(_) {} |
2834 /// m() => ++o; | 2833 /// m() => ++o; |
2835 /// | 2834 /// |
2836 R visitTopLevelGetterSetterPrefix(Send node, FunctionElement getter, | 2835 R visitTopLevelGetterSetterPrefix(Send node, GetterElement getter, |
2837 FunctionElement setter, IncDecOperator operator, A arg); | 2836 SetterElement setter, IncDecOperator operator, A arg); |
2838 | 2837 |
2839 /// Prefix expression with [operator] reading from a top level [method], that | 2838 /// Prefix expression with [operator] reading from a top level [method], that |
2840 /// is, closurizing [method], and writing to a top level [setter]. | 2839 /// is, closurizing [method], and writing to a top level [setter]. |
2841 /// | 2840 /// |
2842 /// For instance: | 2841 /// For instance: |
2843 /// | 2842 /// |
2844 /// o() {} | 2843 /// o() {} |
2845 /// set o(_) {} | 2844 /// set o(_) {} |
2846 /// m() => ++o; | 2845 /// m() => ++o; |
2847 /// | 2846 /// |
2848 R visitTopLevelMethodSetterPrefix(Send node, FunctionElement method, | 2847 R visitTopLevelMethodSetterPrefix(Send node, FunctionElement method, |
2849 FunctionElement setter, IncDecOperator operator, A arg); | 2848 SetterElement setter, IncDecOperator operator, A arg); |
2850 | 2849 |
2851 /// Prefix expression with [operator] on a super [field]. | 2850 /// Prefix expression with [operator] on a super [field]. |
2852 /// | 2851 /// |
2853 /// For instance: | 2852 /// For instance: |
2854 /// | 2853 /// |
2855 /// class B { | 2854 /// class B { |
2856 /// var field; | 2855 /// var field; |
2857 /// } | 2856 /// } |
2858 /// class C extends B { | 2857 /// class C extends B { |
2859 /// m() => ++super.field; | 2858 /// m() => ++super.field; |
2860 /// } | 2859 /// } |
2861 /// | 2860 /// |
2862 R visitSuperFieldPrefix( | 2861 R visitSuperFieldPrefix( |
2863 Send node, FieldElement field, IncDecOperator operator, A arg); | 2862 SendSet node, FieldElement field, IncDecOperator operator, A arg); |
2864 | 2863 |
2865 /// Prefix expression with [operator] reading from the super field [readField] | 2864 /// Prefix expression with [operator] reading from the super field [readField] |
2866 /// and writing to the different super field [writtenField]. | 2865 /// and writing to the different super field [writtenField]. |
2867 /// | 2866 /// |
2868 /// For instance: | 2867 /// For instance: |
2869 /// | 2868 /// |
2870 /// class A { | 2869 /// class A { |
2871 /// var field; | 2870 /// var field; |
2872 /// } | 2871 /// } |
2873 /// class B extends A { | 2872 /// class B extends A { |
2874 /// final field; | 2873 /// final field; |
2875 /// } | 2874 /// } |
2876 /// class C extends B { | 2875 /// class C extends B { |
2877 /// m() => ++super.field; | 2876 /// m() => ++super.field; |
2878 /// } | 2877 /// } |
2879 /// | 2878 /// |
2880 R visitSuperFieldFieldPrefix(Send node, FieldElement readField, | 2879 R visitSuperFieldFieldPrefix(SendSet node, FieldElement readField, |
2881 FieldElement writtenField, IncDecOperator operator, A arg); | 2880 FieldElement writtenField, IncDecOperator operator, A arg); |
2882 | 2881 |
2883 /// Prefix expression with [operator] reading from a super [field] and writing | 2882 /// Prefix expression with [operator] reading from a super [field] and writing |
2884 /// to a super [setter]. | 2883 /// to a super [setter]. |
2885 /// | 2884 /// |
2886 /// For instance: | 2885 /// For instance: |
2887 /// | 2886 /// |
2888 /// class A { | 2887 /// class A { |
2889 /// var field; | 2888 /// var field; |
2890 /// } | 2889 /// } |
2891 /// class B extends A { | 2890 /// class B extends A { |
2892 /// set field(_) {} | 2891 /// set field(_) {} |
2893 /// } | 2892 /// } |
2894 /// class C extends B { | 2893 /// class C extends B { |
2895 /// m() => ++super.field; | 2894 /// m() => ++super.field; |
2896 /// } | 2895 /// } |
2897 /// | 2896 /// |
2898 R visitSuperFieldSetterPrefix(Send node, FieldElement field, | 2897 R visitSuperFieldSetterPrefix(SendSet node, FieldElement field, |
2899 FunctionElement setter, IncDecOperator operator, A arg); | 2898 SetterElement setter, IncDecOperator operator, A arg); |
2900 | 2899 |
2901 /// Prefix expression with [operator] reading from a super [getter] and | 2900 /// Prefix expression with [operator] reading from a super [getter] and |
2902 /// writing to a super [setter]. | 2901 /// writing to a super [setter]. |
2903 /// | 2902 /// |
2904 /// For instance: | 2903 /// For instance: |
2905 /// | 2904 /// |
2906 /// class B { | 2905 /// class B { |
2907 /// get field => 0; | 2906 /// get field => 0; |
2908 /// set field(_) {} | 2907 /// set field(_) {} |
2909 /// } | 2908 /// } |
2910 /// class C extends B { | 2909 /// class C extends B { |
2911 /// m() => ++super.field; | 2910 /// m() => ++super.field; |
2912 /// } | 2911 /// } |
2913 /// | 2912 /// |
2914 R visitSuperGetterSetterPrefix(Send node, FunctionElement getter, | 2913 R visitSuperGetterSetterPrefix(SendSet node, GetterElement getter, |
2915 FunctionElement setter, IncDecOperator operator, A arg); | 2914 SetterElement setter, IncDecOperator operator, A arg); |
2916 | 2915 |
2917 /// Prefix expression with [operator] reading from a super [getter] and | 2916 /// Prefix expression with [operator] reading from a super [getter] and |
2918 /// writing to a super [field]. | 2917 /// writing to a super [field]. |
2919 /// | 2918 /// |
2920 /// For instance: | 2919 /// For instance: |
2921 /// | 2920 /// |
2922 /// class A { | 2921 /// class A { |
2923 /// var field; | 2922 /// var field; |
2924 /// } | 2923 /// } |
2925 /// class B extends A { | 2924 /// class B extends A { |
2926 /// get field => 0; | 2925 /// get field => 0; |
2927 /// } | 2926 /// } |
2928 /// class C extends B { | 2927 /// class C extends B { |
2929 /// m() => ++super.field; | 2928 /// m() => ++super.field; |
2930 /// } | 2929 /// } |
2931 /// | 2930 /// |
2932 R visitSuperGetterFieldPrefix(Send node, FunctionElement getter, | 2931 R visitSuperGetterFieldPrefix(SendSet node, GetterElement getter, |
2933 FieldElement field, IncDecOperator operator, A arg); | 2932 FieldElement field, IncDecOperator operator, A arg); |
2934 | 2933 |
2935 /// Prefix expression with [operator] reading from a super [method], that is, | 2934 /// Prefix expression with [operator] reading from a super [method], that is, |
2936 /// closurizing [method], and writing to a super [setter]. | 2935 /// closurizing [method], and writing to a super [setter]. |
2937 /// | 2936 /// |
2938 /// For instance: | 2937 /// For instance: |
2939 /// | 2938 /// |
2940 /// class B { | 2939 /// class B { |
2941 /// o() {} | 2940 /// o() {} |
2942 /// set o(_) {} | 2941 /// set o(_) {} |
2943 /// } | 2942 /// } |
2944 /// class C extends B { | 2943 /// class C extends B { |
2945 /// m() => ++super.o; | 2944 /// m() => ++super.o; |
2946 /// } | 2945 /// } |
2947 /// | 2946 /// |
2948 R visitSuperMethodSetterPrefix(Send node, FunctionElement method, | 2947 R visitSuperMethodSetterPrefix(SendSet node, FunctionElement method, |
2949 FunctionElement setter, IncDecOperator operator, A arg); | 2948 SetterElement setter, IncDecOperator operator, A arg); |
2950 | 2949 |
2951 /// Prefix expression with [operator] reading from a super [method], that is, | 2950 /// Prefix expression with [operator] reading from a super [method], that is, |
2952 /// closurizing [method], and writing to an unresolved super setter. | 2951 /// closurizing [method], and writing to an unresolved super setter. |
2953 /// | 2952 /// |
2954 /// For instance: | 2953 /// For instance: |
2955 /// | 2954 /// |
2956 /// class B { | 2955 /// class B { |
2957 /// o() {} | 2956 /// o() {} |
2958 /// set o(_) {} | 2957 /// set o(_) {} |
2959 /// } | 2958 /// } |
2960 /// class C extends B { | 2959 /// class C extends B { |
2961 /// m() => ++super.o; | 2960 /// m() => ++super.o; |
2962 /// } | 2961 /// } |
2963 /// | 2962 /// |
2964 R visitSuperMethodPrefix( | 2963 R visitSuperMethodPrefix( |
2965 Send node, FunctionElement method, IncDecOperator operator, A arg); | 2964 Send node, MethodElement method, IncDecOperator operator, A arg); |
2966 | 2965 |
2967 /// Prefix expression with [operator] reading from an unresolved super getter | 2966 /// Prefix expression with [operator] reading from an unresolved super getter |
2968 /// and writing to a super [setter]. | 2967 /// and writing to a super [setter]. |
2969 /// | 2968 /// |
2970 /// For instance: | 2969 /// For instance: |
2971 /// | 2970 /// |
2972 /// class B { | 2971 /// class B { |
2973 /// set o(_) {} | 2972 /// set o(_) {} |
2974 /// } | 2973 /// } |
2975 /// class C extends B { | 2974 /// class C extends B { |
2976 /// m() => ++super.o; | 2975 /// m() => ++super.o; |
2977 /// } | 2976 /// } |
2978 /// | 2977 /// |
2979 /// | 2978 /// |
2980 R visitUnresolvedSuperGetterPrefix(Send node, Element element, | 2979 R visitUnresolvedSuperGetterPrefix(SendSet node, Element element, |
2981 MethodElement setter, IncDecOperator operator, A arg); | 2980 SetterElement setter, IncDecOperator operator, A arg); |
2982 | 2981 |
2983 /// Prefix expression with [operator] reading from a super [getter] and | 2982 /// Prefix expression with [operator] reading from a super [getter] and |
2984 /// writing to an unresolved super setter. | 2983 /// writing to an unresolved super setter. |
2985 /// | 2984 /// |
2986 /// For instance: | 2985 /// For instance: |
2987 /// | 2986 /// |
2988 /// class B { | 2987 /// class B { |
2989 /// get o => 42 | 2988 /// get o => 42 |
2990 /// } | 2989 /// } |
2991 /// class C extends B { | 2990 /// class C extends B { |
2992 /// m() => ++super.o; | 2991 /// m() => ++super.o; |
2993 /// } | 2992 /// } |
2994 /// | 2993 /// |
2995 /// | 2994 /// |
2996 R visitUnresolvedSuperSetterPrefix(Send node, MethodElement getter, | 2995 R visitUnresolvedSuperSetterPrefix(SendSet node, GetterElement getter, |
2997 Element element, IncDecOperator operator, A arg); | 2996 Element element, IncDecOperator operator, A arg); |
2998 | 2997 |
2999 /// Prefix expression with [operator] on a type literal for a class [element]. | 2998 /// Prefix expression with [operator] on a type literal for a class [element]. |
3000 /// | 2999 /// |
3001 /// For instance: | 3000 /// For instance: |
3002 /// | 3001 /// |
3003 /// class C {} | 3002 /// class C {} |
3004 /// m() => ++C; | 3003 /// m() => ++C; |
3005 /// | 3004 /// |
3006 R visitClassTypeLiteralPrefix( | 3005 R visitClassTypeLiteralPrefix( |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3161 /// writing to a static [setter]. | 3160 /// writing to a static [setter]. |
3162 /// | 3161 /// |
3163 /// For instance: | 3162 /// For instance: |
3164 /// | 3163 /// |
3165 /// class C { | 3164 /// class C { |
3166 /// static get o => 0; | 3165 /// static get o => 0; |
3167 /// static set o(_) {} | 3166 /// static set o(_) {} |
3168 /// m() => o++; | 3167 /// m() => o++; |
3169 /// } | 3168 /// } |
3170 /// | 3169 /// |
3171 R visitStaticGetterSetterPostfix(Send node, FunctionElement getter, | 3170 R visitStaticGetterSetterPostfix(Send node, GetterElement getter, |
3172 FunctionElement setter, IncDecOperator operator, A arg); | 3171 SetterElement setter, IncDecOperator operator, A arg); |
3173 | 3172 |
3174 /// Postfix expression with [operator] reading from a static [method], that | 3173 /// Postfix expression with [operator] reading from a static [method], that |
3175 /// is, closurizing [method], and writing to a static [setter]. | 3174 /// is, closurizing [method], and writing to a static [setter]. |
3176 /// | 3175 /// |
3177 /// For instance: | 3176 /// For instance: |
3178 /// | 3177 /// |
3179 /// class C { | 3178 /// class C { |
3180 /// static o() {} | 3179 /// static o() {} |
3181 /// static set o(_) {} | 3180 /// static set o(_) {} |
3182 /// m() => o++; | 3181 /// m() => o++; |
3183 /// } | 3182 /// } |
3184 /// | 3183 /// |
3185 R visitStaticMethodSetterPostfix(Send node, FunctionElement getter, | 3184 R visitStaticMethodSetterPostfix(Send node, GetterElement getter, |
3186 FunctionElement setter, IncDecOperator operator, A arg); | 3185 SetterElement setter, IncDecOperator operator, A arg); |
3187 | 3186 |
3188 /// Postfix expression with [operator] on a top level [field]. | 3187 /// Postfix expression with [operator] on a top level [field]. |
3189 /// | 3188 /// |
3190 /// For instance: | 3189 /// For instance: |
3191 /// | 3190 /// |
3192 /// var field; | 3191 /// var field; |
3193 /// m() => field++; | 3192 /// m() => field++; |
3194 /// | 3193 /// |
3195 R visitTopLevelFieldPostfix( | 3194 R visitTopLevelFieldPostfix( |
3196 Send node, FieldElement field, IncDecOperator operator, A arg); | 3195 Send node, FieldElement field, IncDecOperator operator, A arg); |
(...skipping 10 matching lines...) Expand all Loading... |
3207 | 3206 |
3208 /// Postfix expression with [operator] reading from a top level [getter] and | 3207 /// Postfix expression with [operator] reading from a top level [getter] and |
3209 /// writing to a top level [setter]. | 3208 /// writing to a top level [setter]. |
3210 /// | 3209 /// |
3211 /// For instance: | 3210 /// For instance: |
3212 /// | 3211 /// |
3213 /// get o => 0; | 3212 /// get o => 0; |
3214 /// set o(_) {} | 3213 /// set o(_) {} |
3215 /// m() => o++; | 3214 /// m() => o++; |
3216 /// | 3215 /// |
3217 R visitTopLevelGetterSetterPostfix(Send node, FunctionElement getter, | 3216 R visitTopLevelGetterSetterPostfix(Send node, GetterElement getter, |
3218 FunctionElement setter, IncDecOperator operator, A arg); | 3217 SetterElement setter, IncDecOperator operator, A arg); |
3219 | 3218 |
3220 /// Postfix expression with [operator] reading from a top level [method], that | 3219 /// Postfix expression with [operator] reading from a top level [method], that |
3221 /// is, closurizing [method], and writing to a top level [setter]. | 3220 /// is, closurizing [method], and writing to a top level [setter]. |
3222 /// | 3221 /// |
3223 /// For instance: | 3222 /// For instance: |
3224 /// | 3223 /// |
3225 /// o() {} | 3224 /// o() {} |
3226 /// set o(_) {} | 3225 /// set o(_) {} |
3227 /// m() => o++; | 3226 /// m() => o++; |
3228 /// | 3227 /// |
3229 R visitTopLevelMethodSetterPostfix(Send node, FunctionElement method, | 3228 R visitTopLevelMethodSetterPostfix(Send node, FunctionElement method, |
3230 FunctionElement setter, IncDecOperator operator, A arg); | 3229 SetterElement setter, IncDecOperator operator, A arg); |
3231 | 3230 |
3232 /// Postfix expression with [operator] on a super [field]. | 3231 /// Postfix expression with [operator] on a super [field]. |
3233 /// | 3232 /// |
3234 /// For instance: | 3233 /// For instance: |
3235 /// | 3234 /// |
3236 /// class B { | 3235 /// class B { |
3237 /// var field; | 3236 /// var field; |
3238 /// } | 3237 /// } |
3239 /// class C extends B { | 3238 /// class C extends B { |
3240 /// m() => super.field++; | 3239 /// m() => super.field++; |
3241 /// } | 3240 /// } |
3242 /// | 3241 /// |
3243 R visitSuperFieldPostfix( | 3242 R visitSuperFieldPostfix( |
3244 Send node, FieldElement field, IncDecOperator operator, A arg); | 3243 SendSet node, FieldElement field, IncDecOperator operator, A arg); |
3245 | 3244 |
3246 /// Postfix expression with [operator] reading from the super field | 3245 /// Postfix expression with [operator] reading from the super field |
3247 /// [readField] and writing to the different super field [writtenField]. | 3246 /// [readField] and writing to the different super field [writtenField]. |
3248 /// | 3247 /// |
3249 /// For instance: | 3248 /// For instance: |
3250 /// | 3249 /// |
3251 /// class A { | 3250 /// class A { |
3252 /// var field; | 3251 /// var field; |
3253 /// } | 3252 /// } |
3254 /// class B extends A { | 3253 /// class B extends A { |
3255 /// final field; | 3254 /// final field; |
3256 /// } | 3255 /// } |
3257 /// class C extends B { | 3256 /// class C extends B { |
3258 /// m() => super.field++; | 3257 /// m() => super.field++; |
3259 /// } | 3258 /// } |
3260 /// | 3259 /// |
3261 R visitSuperFieldFieldPostfix(Send node, FieldElement readField, | 3260 R visitSuperFieldFieldPostfix(SendSet node, FieldElement readField, |
3262 FieldElement writtenField, IncDecOperator operator, A arg); | 3261 FieldElement writtenField, IncDecOperator operator, A arg); |
3263 | 3262 |
3264 /// Postfix expression with [operator] reading from a super [field] and | 3263 /// Postfix expression with [operator] reading from a super [field] and |
3265 /// writing to a super [setter]. | 3264 /// writing to a super [setter]. |
3266 /// | 3265 /// |
3267 /// For instance: | 3266 /// For instance: |
3268 /// | 3267 /// |
3269 /// class A { | 3268 /// class A { |
3270 /// var field; | 3269 /// var field; |
3271 /// } | 3270 /// } |
3272 /// class B extends A { | 3271 /// class B extends A { |
3273 /// set field(_) {} | 3272 /// set field(_) {} |
3274 /// } | 3273 /// } |
3275 /// class C extends B { | 3274 /// class C extends B { |
3276 /// m() => super.field++; | 3275 /// m() => super.field++; |
3277 /// } | 3276 /// } |
3278 /// | 3277 /// |
3279 R visitSuperFieldSetterPostfix(Send node, FieldElement field, | 3278 R visitSuperFieldSetterPostfix(SendSet node, FieldElement field, |
3280 FunctionElement setter, IncDecOperator operator, A arg); | 3279 SetterElement setter, IncDecOperator operator, A arg); |
3281 | 3280 |
3282 /// Postfix expression with [operator] reading from a super [getter] and | 3281 /// Postfix expression with [operator] reading from a super [getter] and |
3283 /// writing to a super [setter]. | 3282 /// writing to a super [setter]. |
3284 /// | 3283 /// |
3285 /// For instance: | 3284 /// For instance: |
3286 /// | 3285 /// |
3287 /// class B { | 3286 /// class B { |
3288 /// get field => 0; | 3287 /// get field => 0; |
3289 /// set field(_) {} | 3288 /// set field(_) {} |
3290 /// } | 3289 /// } |
3291 /// class C extends B { | 3290 /// class C extends B { |
3292 /// m() => super.field++; | 3291 /// m() => super.field++; |
3293 /// } | 3292 /// } |
3294 /// | 3293 /// |
3295 R visitSuperGetterSetterPostfix(Send node, FunctionElement getter, | 3294 R visitSuperGetterSetterPostfix(SendSet node, GetterElement getter, |
3296 FunctionElement setter, IncDecOperator operator, A arg); | 3295 SetterElement setter, IncDecOperator operator, A arg); |
3297 | 3296 |
3298 /// Postfix expression with [operator] reading from a super [getter] and | 3297 /// Postfix expression with [operator] reading from a super [getter] and |
3299 /// writing to a super [field]. | 3298 /// writing to a super [field]. |
3300 /// | 3299 /// |
3301 /// For instance: | 3300 /// For instance: |
3302 /// | 3301 /// |
3303 /// class A { | 3302 /// class A { |
3304 /// var field; | 3303 /// var field; |
3305 /// } | 3304 /// } |
3306 /// class B extends A { | 3305 /// class B extends A { |
3307 /// get field => 0; | 3306 /// get field => 0; |
3308 /// } | 3307 /// } |
3309 /// class C extends B { | 3308 /// class C extends B { |
3310 /// m() => super.field++; | 3309 /// m() => super.field++; |
3311 /// } | 3310 /// } |
3312 /// | 3311 /// |
3313 R visitSuperGetterFieldPostfix(Send node, FunctionElement getter, | 3312 R visitSuperGetterFieldPostfix(SendSet node, GetterElement getter, |
3314 FieldElement field, IncDecOperator operator, A arg); | 3313 FieldElement field, IncDecOperator operator, A arg); |
3315 | 3314 |
3316 /// Postfix expression with [operator] reading from a super [method], that is, | 3315 /// Postfix expression with [operator] reading from a super [method], that is, |
3317 /// closurizing [method], and writing to a super [setter]. | 3316 /// closurizing [method], and writing to a super [setter]. |
3318 /// | 3317 /// |
3319 /// For instance: | 3318 /// For instance: |
3320 /// | 3319 /// |
3321 /// class B { | 3320 /// class B { |
3322 /// o() {} | 3321 /// o() {} |
3323 /// set o(_) {} | 3322 /// set o(_) {} |
3324 /// } | 3323 /// } |
3325 /// class C extends B { | 3324 /// class C extends B { |
3326 /// m() => super.o++; | 3325 /// m() => super.o++; |
3327 /// } | 3326 /// } |
3328 /// | 3327 /// |
3329 R visitSuperMethodSetterPostfix(Send node, FunctionElement method, | 3328 R visitSuperMethodSetterPostfix(SendSet node, FunctionElement method, |
3330 FunctionElement setter, IncDecOperator operator, A arg); | 3329 SetterElement setter, IncDecOperator operator, A arg); |
3331 | 3330 |
3332 /// Postfix expression with [operator] reading from a super [method], that is, | 3331 /// Postfix expression with [operator] reading from a super [method], that is, |
3333 /// closurizing [method], and writing to an unresolved super. | 3332 /// closurizing [method], and writing to an unresolved super. |
3334 /// | 3333 /// |
3335 /// For instance: | 3334 /// For instance: |
3336 /// | 3335 /// |
3337 /// class B { | 3336 /// class B { |
3338 /// o() {} | 3337 /// o() {} |
3339 /// set o(_) {} | 3338 /// set o(_) {} |
3340 /// } | 3339 /// } |
3341 /// class C extends B { | 3340 /// class C extends B { |
3342 /// m() => super.o++; | 3341 /// m() => super.o++; |
3343 /// } | 3342 /// } |
3344 /// | 3343 /// |
3345 R visitSuperMethodPostfix( | 3344 R visitSuperMethodPostfix( |
3346 Send node, FunctionElement method, IncDecOperator operator, A arg); | 3345 Send node, MethodElement method, IncDecOperator operator, A arg); |
3347 | 3346 |
3348 /// Prefix expression with [operator] reading from an unresolved super getter | 3347 /// Prefix expression with [operator] reading from an unresolved super getter |
3349 /// and writing to a super [setter]. | 3348 /// and writing to a super [setter]. |
3350 /// | 3349 /// |
3351 /// For instance: | 3350 /// For instance: |
3352 /// | 3351 /// |
3353 /// class B { | 3352 /// class B { |
3354 /// set o(_) {} | 3353 /// set o(_) {} |
3355 /// } | 3354 /// } |
3356 /// class C extends B { | 3355 /// class C extends B { |
3357 /// m() => super.o++; | 3356 /// m() => super.o++; |
3358 /// } | 3357 /// } |
3359 /// | 3358 /// |
3360 /// | 3359 /// |
3361 R visitUnresolvedSuperGetterPostfix(Send node, Element element, | 3360 R visitUnresolvedSuperGetterPostfix(SendSet node, Element element, |
3362 MethodElement setter, IncDecOperator operator, A arg); | 3361 SetterElement setter, IncDecOperator operator, A arg); |
3363 | 3362 |
3364 /// Prefix expression with [operator] reading from a super [getter] and | 3363 /// Prefix expression with [operator] reading from a super [getter] and |
3365 /// writing to an unresolved super setter. | 3364 /// writing to an unresolved super setter. |
3366 /// | 3365 /// |
3367 /// For instance: | 3366 /// For instance: |
3368 /// | 3367 /// |
3369 /// class B { | 3368 /// class B { |
3370 /// get o => 42 | 3369 /// get o => 42 |
3371 /// } | 3370 /// } |
3372 /// class C extends B { | 3371 /// class C extends B { |
3373 /// m() => super.o++; | 3372 /// m() => super.o++; |
3374 /// } | 3373 /// } |
3375 /// | 3374 /// |
3376 /// | 3375 /// |
3377 R visitUnresolvedSuperSetterPostfix(Send node, MethodElement getter, | 3376 R visitUnresolvedSuperSetterPostfix(SendSet node, GetterElement getter, |
3378 Element element, IncDecOperator operator, A arg); | 3377 Element element, IncDecOperator operator, A arg); |
3379 | 3378 |
3380 /// Postfix expression with [operator] on a type literal for a class | 3379 /// Postfix expression with [operator] on a type literal for a class |
3381 /// [element]. | 3380 /// [element]. |
3382 /// | 3381 /// |
3383 /// For instance: | 3382 /// For instance: |
3384 /// | 3383 /// |
3385 /// class C {} | 3384 /// class C {} |
3386 /// m() => C++; | 3385 /// m() => C++; |
3387 /// | 3386 /// |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3481 /// m4() => unresolved.foo = 42; | 3480 /// m4() => unresolved.foo = 42; |
3482 /// m5() => unresolved.Foo.bar = 42; | 3481 /// m5() => unresolved.Foo.bar = 42; |
3483 /// m6() => C.unresolved = 42; | 3482 /// m6() => C.unresolved = 42; |
3484 /// m7() => prefix.C.unresolved = 42; | 3483 /// m7() => prefix.C.unresolved = 42; |
3485 /// m8() => prefix?.unresolved = 42; | 3484 /// m8() => prefix?.unresolved = 42; |
3486 /// m9() => Unresolved?.foo = 42; | 3485 /// m9() => Unresolved?.foo = 42; |
3487 /// m10() => unresolved?.foo = 42; | 3486 /// m10() => unresolved?.foo = 42; |
3488 /// m11() => unresolved?.Foo?.bar = 42; | 3487 /// m11() => unresolved?.Foo?.bar = 42; |
3489 /// | 3488 /// |
3490 // TODO(johnniwinther): Split the cases in which a prefix is resolved. | 3489 // TODO(johnniwinther): Split the cases in which a prefix is resolved. |
3491 R visitUnresolvedSet(Send node, Element element, Node rhs, A arg); | 3490 R visitUnresolvedSet(SendSet node, Element element, Node rhs, A arg); |
3492 | 3491 |
3493 /// Assignment of [rhs] to the unresolved super [element]. | 3492 /// Assignment of [rhs] to the unresolved super [element]. |
3494 /// | 3493 /// |
3495 /// For instance: | 3494 /// For instance: |
3496 /// | 3495 /// |
3497 /// class B {} | 3496 /// class B {} |
3498 /// class C { | 3497 /// class C { |
3499 /// m() => super.foo = 42; | 3498 /// m() => super.foo = 42; |
3500 /// } | 3499 /// } |
3501 /// | 3500 /// |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3538 /// non-existing static getter and writing to the static [setter]. | 3537 /// non-existing static getter and writing to the static [setter]. |
3539 /// | 3538 /// |
3540 /// For instance: | 3539 /// For instance: |
3541 /// | 3540 /// |
3542 /// class C { | 3541 /// class C { |
3543 /// set foo(_) {} | 3542 /// set foo(_) {} |
3544 /// } | 3543 /// } |
3545 /// m1() => C.foo += 42; | 3544 /// m1() => C.foo += 42; |
3546 /// | 3545 /// |
3547 R visitUnresolvedStaticGetterCompound(Send node, Element element, | 3546 R visitUnresolvedStaticGetterCompound(Send node, Element element, |
3548 MethodElement setter, AssignmentOperator operator, Node rhs, A arg); | 3547 SetterElement setter, AssignmentOperator operator, Node rhs, A arg); |
3549 | 3548 |
3550 /// Compound assignment of [rhs] with [operator] reading from the | 3549 /// Compound assignment of [rhs] with [operator] reading from the |
3551 /// non-existing top level getter and writing to the top level [setter]. | 3550 /// non-existing top level getter and writing to the top level [setter]. |
3552 /// | 3551 /// |
3553 /// For instance: | 3552 /// For instance: |
3554 /// | 3553 /// |
3555 /// set foo(_) {} | 3554 /// set foo(_) {} |
3556 /// m1() => foo += 42; | 3555 /// m1() => foo += 42; |
3557 /// | 3556 /// |
3558 R visitUnresolvedTopLevelGetterCompound(Send node, Element element, | 3557 R visitUnresolvedTopLevelGetterCompound(Send node, Element element, |
3559 MethodElement setter, AssignmentOperator operator, Node rhs, A arg); | 3558 SetterElement setter, AssignmentOperator operator, Node rhs, A arg); |
3560 | 3559 |
3561 /// Compound assignment of [rhs] with [operator] reading from the static | 3560 /// Compound assignment of [rhs] with [operator] reading from the static |
3562 /// [getter] and writing to the non-existing static setter. | 3561 /// [getter] and writing to the non-existing static setter. |
3563 /// | 3562 /// |
3564 /// For instance: | 3563 /// For instance: |
3565 /// | 3564 /// |
3566 /// class C { | 3565 /// class C { |
3567 /// get foo => 42; | 3566 /// get foo => 42; |
3568 /// } | 3567 /// } |
3569 /// m1() => C.foo += 42; | 3568 /// m1() => C.foo += 42; |
3570 /// | 3569 /// |
3571 R visitUnresolvedStaticSetterCompound(Send node, MethodElement getter, | 3570 R visitUnresolvedStaticSetterCompound(Send node, GetterElement getter, |
3572 Element element, AssignmentOperator operator, Node rhs, A arg); | 3571 Element element, AssignmentOperator operator, Node rhs, A arg); |
3573 | 3572 |
3574 /// Compound assignment of [rhs] with [operator] reading from the top level | 3573 /// Compound assignment of [rhs] with [operator] reading from the top level |
3575 /// [getter] and writing to the non-existing top level setter. | 3574 /// [getter] and writing to the non-existing top level setter. |
3576 /// | 3575 /// |
3577 /// For instance: | 3576 /// For instance: |
3578 /// | 3577 /// |
3579 /// get foo => 42; | 3578 /// get foo => 42; |
3580 /// m1() => foo += 42; | 3579 /// m1() => foo += 42; |
3581 /// | 3580 /// |
3582 R visitUnresolvedTopLevelSetterCompound(Send node, MethodElement getter, | 3581 R visitUnresolvedTopLevelSetterCompound(Send node, GetterElement getter, |
3583 Element element, AssignmentOperator operator, Node rhs, A arg); | 3582 Element element, AssignmentOperator operator, Node rhs, A arg); |
3584 | 3583 |
3585 /// Compound assignment of [rhs] with [operator] reading the closurized static | 3584 /// Compound assignment of [rhs] with [operator] reading the closurized static |
3586 /// [method] and trying to invoke the non-existing setter. | 3585 /// [method] and trying to invoke the non-existing setter. |
3587 /// | 3586 /// |
3588 /// For instance: | 3587 /// For instance: |
3589 /// | 3588 /// |
3590 /// class C { | 3589 /// class C { |
3591 /// foo() {} | 3590 /// foo() {} |
3592 /// } | 3591 /// } |
(...skipping 13 matching lines...) Expand all Loading... |
3606 /// m4() => unresolved.foo += 42; | 3605 /// m4() => unresolved.foo += 42; |
3607 /// m5() => unresolved.Foo.bar += 42; | 3606 /// m5() => unresolved.Foo.bar += 42; |
3608 /// m6() => C.unresolved += 42; | 3607 /// m6() => C.unresolved += 42; |
3609 /// m7() => prefix.C.unresolved += 42; | 3608 /// m7() => prefix.C.unresolved += 42; |
3610 /// m8() => prefix?.unresolved += 42; | 3609 /// m8() => prefix?.unresolved += 42; |
3611 /// m9() => Unresolved?.foo += 42; | 3610 /// m9() => Unresolved?.foo += 42; |
3612 /// m10() => unresolved?.foo += 42; | 3611 /// m10() => unresolved?.foo += 42; |
3613 /// m11() => unresolved?.Foo?.bar += 42; | 3612 /// m11() => unresolved?.Foo?.bar += 42; |
3614 /// | 3613 /// |
3615 // TODO(johnniwinther): Split the cases in which a prefix is resolved. | 3614 // TODO(johnniwinther): Split the cases in which a prefix is resolved. |
3616 R visitUnresolvedCompound( | 3615 R visitUnresolvedCompound(Send node, ErroneousElement element, |
3617 Send node, Element element, AssignmentOperator operator, Node rhs, A arg); | 3616 AssignmentOperator operator, Node rhs, A arg); |
3618 | 3617 |
3619 /// Prefix operation of [operator] reading from the non-existing static getter | 3618 /// Prefix operation of [operator] reading from the non-existing static getter |
3620 /// and writing to the static [setter]. | 3619 /// and writing to the static [setter]. |
3621 /// | 3620 /// |
3622 /// For instance: | 3621 /// For instance: |
3623 /// | 3622 /// |
3624 /// class C { | 3623 /// class C { |
3625 /// set foo(_) {} | 3624 /// set foo(_) {} |
3626 /// } | 3625 /// } |
3627 /// m1() => ++C.foo; | 3626 /// m1() => ++C.foo; |
3628 /// | 3627 /// |
3629 R visitUnresolvedStaticGetterPrefix(Send node, Element element, | 3628 R visitUnresolvedStaticGetterPrefix(Send node, Element element, |
3630 MethodElement setter, IncDecOperator operator, A arg); | 3629 SetterElement setter, IncDecOperator operator, A arg); |
3631 | 3630 |
3632 /// Prefix operation of [operator] reading from the non-existing top level | 3631 /// Prefix operation of [operator] reading from the non-existing top level |
3633 /// getter and writing to the top level [setter]. | 3632 /// getter and writing to the top level [setter]. |
3634 /// | 3633 /// |
3635 /// For instance: | 3634 /// For instance: |
3636 /// | 3635 /// |
3637 /// set foo(_) {} | 3636 /// set foo(_) {} |
3638 /// m1() => ++foo; | 3637 /// m1() => ++foo; |
3639 /// | 3638 /// |
3640 R visitUnresolvedTopLevelGetterPrefix(Send node, Element element, | 3639 R visitUnresolvedTopLevelGetterPrefix(Send node, Element element, |
3641 MethodElement setter, IncDecOperator operator, A arg); | 3640 SetterElement setter, IncDecOperator operator, A arg); |
3642 | 3641 |
3643 /// Prefix operation of [operator] reading from the static [getter] and | 3642 /// Prefix operation of [operator] reading from the static [getter] and |
3644 /// writing to the non-existing static setter. | 3643 /// writing to the non-existing static setter. |
3645 /// | 3644 /// |
3646 /// For instance: | 3645 /// For instance: |
3647 /// | 3646 /// |
3648 /// class C { | 3647 /// class C { |
3649 /// get foo => 42; | 3648 /// get foo => 42; |
3650 /// } | 3649 /// } |
3651 /// m1() => ++C.foo; | 3650 /// m1() => ++C.foo; |
3652 /// | 3651 /// |
3653 R visitUnresolvedStaticSetterPrefix(Send node, MethodElement getter, | 3652 R visitUnresolvedStaticSetterPrefix(Send node, GetterElement getter, |
3654 Element element, IncDecOperator operator, A arg); | 3653 Element element, IncDecOperator operator, A arg); |
3655 | 3654 |
3656 /// Postfix operation of [operator] reading from the top level [getter] and | 3655 /// Postfix operation of [operator] reading from the top level [getter] and |
3657 /// writing to the non-existing top level setter. | 3656 /// writing to the non-existing top level setter. |
3658 /// | 3657 /// |
3659 /// For instance: | 3658 /// For instance: |
3660 /// | 3659 /// |
3661 /// get foo => 42; | 3660 /// get foo => 42; |
3662 /// m1() => ++foo; | 3661 /// m1() => ++foo; |
3663 /// | 3662 /// |
3664 R visitUnresolvedTopLevelSetterPrefix(Send node, MethodElement getter, | 3663 R visitUnresolvedTopLevelSetterPrefix(Send node, GetterElement getter, |
3665 Element element, IncDecOperator operator, A arg); | 3664 Element element, IncDecOperator operator, A arg); |
3666 | 3665 |
3667 /// Prefix operation of [operator] reading the closurized static [method] and | 3666 /// Prefix operation of [operator] reading the closurized static [method] and |
3668 /// trying to invoke the non-existing setter. | 3667 /// trying to invoke the non-existing setter. |
3669 /// | 3668 /// |
3670 /// For instance: | 3669 /// For instance: |
3671 /// | 3670 /// |
3672 /// class C { | 3671 /// class C { |
3673 /// foo() {} | 3672 /// foo() {} |
3674 /// } | 3673 /// } |
(...skipping 27 matching lines...) Expand all Loading... |
3702 /// m5() => ++unresolved.Foo.bar; | 3701 /// m5() => ++unresolved.Foo.bar; |
3703 /// m6() => ++C.unresolved; | 3702 /// m6() => ++C.unresolved; |
3704 /// m7() => ++prefix.C.unresolved; | 3703 /// m7() => ++prefix.C.unresolved; |
3705 /// m8() => ++prefix?.unresolved; | 3704 /// m8() => ++prefix?.unresolved; |
3706 /// m9() => ++Unresolved?.foo; | 3705 /// m9() => ++Unresolved?.foo; |
3707 /// m10() => ++unresolved?.foo; | 3706 /// m10() => ++unresolved?.foo; |
3708 /// m11() => ++unresolved?.Foo?.bar; | 3707 /// m11() => ++unresolved?.Foo?.bar; |
3709 /// | 3708 /// |
3710 // TODO(johnniwinther): Split the cases in which a prefix is resolved. | 3709 // TODO(johnniwinther): Split the cases in which a prefix is resolved. |
3711 R visitUnresolvedPrefix( | 3710 R visitUnresolvedPrefix( |
3712 Send node, Element element, IncDecOperator operator, A arg); | 3711 Send node, ErroneousElement element, IncDecOperator operator, A arg); |
3713 | 3712 |
3714 /// Postfix operation of [operator] reading from the non-existing static | 3713 /// Postfix operation of [operator] reading from the non-existing static |
3715 /// getter and writing to the static [setter]. | 3714 /// getter and writing to the static [setter]. |
3716 /// | 3715 /// |
3717 /// For instance: | 3716 /// For instance: |
3718 /// | 3717 /// |
3719 /// class C { | 3718 /// class C { |
3720 /// set foo(_) {} | 3719 /// set foo(_) {} |
3721 /// } | 3720 /// } |
3722 /// m1() => C.foo++; | 3721 /// m1() => C.foo++; |
3723 /// | 3722 /// |
3724 R visitUnresolvedStaticGetterPostfix(Send node, Element element, | 3723 R visitUnresolvedStaticGetterPostfix(Send node, Element element, |
3725 MethodElement setter, IncDecOperator operator, A arg); | 3724 SetterElement setter, IncDecOperator operator, A arg); |
3726 | 3725 |
3727 /// Postfix operation of [operator] reading from the non-existing top level | 3726 /// Postfix operation of [operator] reading from the non-existing top level |
3728 /// getter and writing to the top level [setter]. | 3727 /// getter and writing to the top level [setter]. |
3729 /// | 3728 /// |
3730 /// For instance: | 3729 /// For instance: |
3731 /// | 3730 /// |
3732 /// set foo(_) {} | 3731 /// set foo(_) {} |
3733 /// m1() => foo++; | 3732 /// m1() => foo++; |
3734 /// | 3733 /// |
3735 R visitUnresolvedTopLevelGetterPostfix(Send node, Element element, | 3734 R visitUnresolvedTopLevelGetterPostfix(Send node, Element element, |
3736 MethodElement setter, IncDecOperator operator, A arg); | 3735 SetterElement setter, IncDecOperator operator, A arg); |
3737 | 3736 |
3738 /// Postfix operation of [operator] reading from the static [getter] and | 3737 /// Postfix operation of [operator] reading from the static [getter] and |
3739 /// writing to the non-existing static setter. | 3738 /// writing to the non-existing static setter. |
3740 /// | 3739 /// |
3741 /// For instance: | 3740 /// For instance: |
3742 /// | 3741 /// |
3743 /// class C { | 3742 /// class C { |
3744 /// get foo => 42; | 3743 /// get foo => 42; |
3745 /// } | 3744 /// } |
3746 /// m1() => C.foo++; | 3745 /// m1() => C.foo++; |
3747 /// | 3746 /// |
3748 R visitUnresolvedStaticSetterPostfix(Send node, MethodElement getter, | 3747 R visitUnresolvedStaticSetterPostfix(Send node, GetterElement getter, |
3749 Element element, IncDecOperator operator, A arg); | 3748 Element element, IncDecOperator operator, A arg); |
3750 | 3749 |
3751 /// Postfix operation of [operator] reading from the top level [getter] and | 3750 /// Postfix operation of [operator] reading from the top level [getter] and |
3752 /// writing to the non-existing top level setter. | 3751 /// writing to the non-existing top level setter. |
3753 /// | 3752 /// |
3754 /// For instance: | 3753 /// For instance: |
3755 /// | 3754 /// |
3756 /// get foo => 42; | 3755 /// get foo => 42; |
3757 /// m1() => foo++; | 3756 /// m1() => foo++; |
3758 /// | 3757 /// |
3759 R visitUnresolvedTopLevelSetterPostfix(Send node, MethodElement getter, | 3758 R visitUnresolvedTopLevelSetterPostfix(Send node, GetterElement getter, |
3760 Element element, IncDecOperator operator, A arg); | 3759 Element element, IncDecOperator operator, A arg); |
3761 | 3760 |
3762 /// Postfix operation of [operator] reading the closurized static [method] and | 3761 /// Postfix operation of [operator] reading the closurized static [method] and |
3763 /// trying to invoke the non-existing setter. | 3762 /// trying to invoke the non-existing setter. |
3764 /// | 3763 /// |
3765 /// For instance: | 3764 /// For instance: |
3766 /// | 3765 /// |
3767 /// class C { | 3766 /// class C { |
3768 /// foo() {} | 3767 /// foo() {} |
3769 /// } | 3768 /// } |
(...skipping 27 matching lines...) Expand all Loading... |
3797 /// m5() => unresolved.Foo.bar++; | 3796 /// m5() => unresolved.Foo.bar++; |
3798 /// m6() => C.unresolved++; | 3797 /// m6() => C.unresolved++; |
3799 /// m7() => prefix.C.unresolved++; | 3798 /// m7() => prefix.C.unresolved++; |
3800 /// m8() => prefix?.unresolved++; | 3799 /// m8() => prefix?.unresolved++; |
3801 /// m9() => Unresolved?.foo++; | 3800 /// m9() => Unresolved?.foo++; |
3802 /// m10() => unresolved?.foo++; | 3801 /// m10() => unresolved?.foo++; |
3803 /// m11() => unresolved?.Foo?.bar++; | 3802 /// m11() => unresolved?.Foo?.bar++; |
3804 /// | 3803 /// |
3805 // TODO(johnniwinther): Split the cases in which a prefix is resolved. | 3804 // TODO(johnniwinther): Split the cases in which a prefix is resolved. |
3806 R visitUnresolvedPostfix( | 3805 R visitUnresolvedPostfix( |
3807 Send node, Element element, IncDecOperator operator, A arg); | 3806 Send node, ErroneousElement element, IncDecOperator operator, A arg); |
3808 | 3807 |
3809 /// Invocation of an undefined unary [operator] on [expression]. | 3808 /// Invocation of an undefined unary [operator] on [expression]. |
3810 R errorUndefinedUnaryExpression( | 3809 R errorUndefinedUnaryExpression( |
3811 Send node, Operator operator, Node expression, A arg); | 3810 Send node, Operator operator, Node expression, A arg); |
3812 | 3811 |
3813 /// Invocation of an undefined unary [operator] with operands | 3812 /// Invocation of an undefined unary [operator] with operands |
3814 /// [left] and [right]. | 3813 /// [left] and [right]. |
3815 R errorUndefinedBinaryExpression( | 3814 R errorUndefinedBinaryExpression( |
3816 Send node, Node left, Operator operator, Node right, A arg); | 3815 Send node, Node left, Operator operator, Node right, A arg); |
3817 | 3816 |
(...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4240 /// Apply this visitor to the initializers of [constructor]. | 4239 /// Apply this visitor to the initializers of [constructor]. |
4241 applyInitializers(FunctionExpression constructor, A arg); | 4240 applyInitializers(FunctionExpression constructor, A arg); |
4242 | 4241 |
4243 /// A declaration of a top level [getter]. | 4242 /// A declaration of a top level [getter]. |
4244 /// | 4243 /// |
4245 /// For instance: | 4244 /// For instance: |
4246 /// | 4245 /// |
4247 /// get m => 42; | 4246 /// get m => 42; |
4248 /// | 4247 /// |
4249 R visitTopLevelGetterDeclaration( | 4248 R visitTopLevelGetterDeclaration( |
4250 FunctionExpression node, MethodElement getter, Node body, A arg); | 4249 FunctionExpression node, GetterElement getter, Node body, A arg); |
4251 | 4250 |
4252 /// A declaration of a top level [setter]. | 4251 /// A declaration of a top level [setter]. |
4253 /// | 4252 /// |
4254 /// For instance: | 4253 /// For instance: |
4255 /// | 4254 /// |
4256 /// set m(a) {} | 4255 /// set m(a) {} |
4257 /// | 4256 /// |
4258 R visitTopLevelSetterDeclaration(FunctionExpression node, | 4257 R visitTopLevelSetterDeclaration(FunctionExpression node, |
4259 MethodElement setter, NodeList parameters, Node body, A arg); | 4258 SetterElement setter, NodeList parameters, Node body, A arg); |
4260 | 4259 |
4261 /// A declaration of a top level [function]. | 4260 /// A declaration of a top level [function]. |
4262 /// | 4261 /// |
4263 /// For instance: | 4262 /// For instance: |
4264 /// | 4263 /// |
4265 /// m(a) {} | 4264 /// m(a) {} |
4266 /// | 4265 /// |
4267 R visitTopLevelFunctionDeclaration(FunctionExpression node, | 4266 R visitTopLevelFunctionDeclaration(FunctionExpression node, |
4268 MethodElement function, NodeList parameters, Node body, A arg); | 4267 MethodElement function, NodeList parameters, Node body, A arg); |
4269 | 4268 |
4270 /// A declaration of a static [getter]. | 4269 /// A declaration of a static [getter]. |
4271 /// | 4270 /// |
4272 /// For instance: | 4271 /// For instance: |
4273 /// | 4272 /// |
4274 /// class C { | 4273 /// class C { |
4275 /// static get m => 42; | 4274 /// static get m => 42; |
4276 /// } | 4275 /// } |
4277 /// | 4276 /// |
4278 R visitStaticGetterDeclaration( | 4277 R visitStaticGetterDeclaration( |
4279 FunctionExpression node, MethodElement getter, Node body, A arg); | 4278 FunctionExpression node, GetterElement getter, Node body, A arg); |
4280 | 4279 |
4281 /// A declaration of a static [setter]. | 4280 /// A declaration of a static [setter]. |
4282 /// | 4281 /// |
4283 /// For instance: | 4282 /// For instance: |
4284 /// | 4283 /// |
4285 /// class C { | 4284 /// class C { |
4286 /// static set m(a) {} | 4285 /// static set m(a) {} |
4287 /// } | 4286 /// } |
4288 /// | 4287 /// |
4289 R visitStaticSetterDeclaration(FunctionExpression node, MethodElement setter, | 4288 R visitStaticSetterDeclaration(FunctionExpression node, SetterElement setter, |
4290 NodeList parameters, Node body, A arg); | 4289 NodeList parameters, Node body, A arg); |
4291 | 4290 |
4292 /// A declaration of a static [function]. | 4291 /// A declaration of a static [function]. |
4293 /// | 4292 /// |
4294 /// For instance: | 4293 /// For instance: |
4295 /// | 4294 /// |
4296 /// class C { | 4295 /// class C { |
4297 /// static m(a) {} | 4296 /// static m(a) {} |
4298 /// } | 4297 /// } |
4299 /// | 4298 /// |
4300 R visitStaticFunctionDeclaration(FunctionExpression node, | 4299 R visitStaticFunctionDeclaration(FunctionExpression node, |
4301 MethodElement function, NodeList parameters, Node body, A arg); | 4300 MethodElement function, NodeList parameters, Node body, A arg); |
4302 | 4301 |
4303 /// A declaration of an abstract instance [getter]. | 4302 /// A declaration of an abstract instance [getter]. |
4304 /// | 4303 /// |
4305 /// For instance: | 4304 /// For instance: |
4306 /// | 4305 /// |
4307 /// abstract class C { | 4306 /// abstract class C { |
4308 /// get m; | 4307 /// get m; |
4309 /// } | 4308 /// } |
4310 /// | 4309 /// |
4311 R visitAbstractGetterDeclaration( | 4310 R visitAbstractGetterDeclaration( |
4312 FunctionExpression node, MethodElement getter, A arg); | 4311 FunctionExpression node, GetterElement getter, A arg); |
4313 | 4312 |
4314 /// A declaration of an abstract instance [setter]. | 4313 /// A declaration of an abstract instance [setter]. |
4315 /// | 4314 /// |
4316 /// For instance: | 4315 /// For instance: |
4317 /// | 4316 /// |
4318 /// abstract class C { | 4317 /// abstract class C { |
4319 /// set m(a); | 4318 /// set m(a); |
4320 /// } | 4319 /// } |
4321 /// | 4320 /// |
4322 R visitAbstractSetterDeclaration(FunctionExpression node, | 4321 R visitAbstractSetterDeclaration(FunctionExpression node, |
4323 MethodElement setter, NodeList parameters, A arg); | 4322 SetterElement setter, NodeList parameters, A arg); |
4324 | 4323 |
4325 /// A declaration of an abstract instance [method]. | 4324 /// A declaration of an abstract instance [method]. |
4326 /// | 4325 /// |
4327 /// For instance: | 4326 /// For instance: |
4328 /// | 4327 /// |
4329 /// abstract class C { | 4328 /// abstract class C { |
4330 /// m(a); | 4329 /// m(a); |
4331 /// } | 4330 /// } |
4332 /// | 4331 /// |
4333 R visitAbstractMethodDeclaration(FunctionExpression node, | 4332 R visitAbstractMethodDeclaration(FunctionExpression node, |
4334 MethodElement method, NodeList parameters, A arg); | 4333 MethodElement method, NodeList parameters, A arg); |
4335 | 4334 |
4336 /// A declaration of an instance [getter]. | 4335 /// A declaration of an instance [getter]. |
4337 /// | 4336 /// |
4338 /// For instance: | 4337 /// For instance: |
4339 /// | 4338 /// |
4340 /// class C { | 4339 /// class C { |
4341 /// get m => 42; | 4340 /// get m => 42; |
4342 /// } | 4341 /// } |
4343 /// | 4342 /// |
4344 R visitInstanceGetterDeclaration( | 4343 R visitInstanceGetterDeclaration( |
4345 FunctionExpression node, MethodElement getter, Node body, A arg); | 4344 FunctionExpression node, GetterElement getter, Node body, A arg); |
4346 | 4345 |
4347 /// A declaration of an instance [setter]. | 4346 /// A declaration of an instance [setter]. |
4348 /// | 4347 /// |
4349 /// For instance: | 4348 /// For instance: |
4350 /// | 4349 /// |
4351 /// class C { | 4350 /// class C { |
4352 /// set m(a) {} | 4351 /// set m(a) {} |
4353 /// } | 4352 /// } |
4354 /// | 4353 /// |
4355 R visitInstanceSetterDeclaration(FunctionExpression node, | 4354 R visitInstanceSetterDeclaration(FunctionExpression node, |
4356 MethodElement setter, NodeList parameters, Node body, A arg); | 4355 SetterElement setter, NodeList parameters, Node body, A arg); |
4357 | 4356 |
4358 /// A declaration of an instance [method]. | 4357 /// A declaration of an instance [method]. |
4359 /// | 4358 /// |
4360 /// For instance: | 4359 /// For instance: |
4361 /// | 4360 /// |
4362 /// class C { | 4361 /// class C { |
4363 /// m(a) {} | 4362 /// m(a) {} |
4364 /// } | 4363 /// } |
4365 /// | 4364 /// |
4366 R visitInstanceMethodDeclaration(FunctionExpression node, | 4365 R visitInstanceMethodDeclaration(FunctionExpression node, |
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4717 /// | 4716 /// |
4718 /// For instance `this._(42)` in: | 4717 /// For instance `this._(42)` in: |
4719 /// | 4718 /// |
4720 /// class C { | 4719 /// class C { |
4721 /// C() : this._(42); | 4720 /// C() : this._(42); |
4722 /// } | 4721 /// } |
4723 /// | 4722 /// |
4724 R errorUnresolvedThisConstructorInvoke( | 4723 R errorUnresolvedThisConstructorInvoke( |
4725 Send node, Element element, NodeList arguments, Selector selector, A arg); | 4724 Send node, Element element, NodeList arguments, Selector selector, A arg); |
4726 } | 4725 } |
OLD | NEW |