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

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

Issue 2944843002: All strong mode cleaning of dart2js. (Closed)
Patch Set: More issues discovered during testing. Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/resolution/scope.dart ('k') | pkg/compiler/lib/src/resolution/semantic_visitor_mixins.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698