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

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

Issue 929113002: Add SemanticVisitor to dart2js. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fix indents and long lines. Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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
3 // BSD-style license that can be found in the LICENSE file.
4
5 part of dart2js.semantics_visitor;
6
7 /// Mixin that implements all `errorX` methods of [SemanticSendVisitor] by
8 /// delegating to a bulk handler.
9 ///
10 /// Use this mixin to provide a trivial implementation for all `errorX` methods.
11 abstract class ErrorBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
12 R bulkHandleNode(Node node, String message);
13
14 R bulkHandleError(Send node) {
15 return bulkHandleNode(node, "Error expression `$node` unhandled.");
16 }
17
18 @override
19 R errorInvalidAssert(
20 Send node,
21 NodeList arguments,
22 A arg) {
23 bulkHandleError(node);
24 }
25
26 @override
27 R errorClassTypeLiteralSet(
28 SendSet node,
29 TypeConstantExpression constant,
30 Node rhs,
31 A arg) {
32 return bulkHandleError(node);
33 }
34
35 @override
36 R errorDynamicTypeLiteralSet(
37 SendSet node,
38 TypeConstantExpression constant,
39 Node rhs,
40 A arg) {
41 return bulkHandleError(node);
42 }
43
44 @override
45 R errorFinalLocalVariableCompound(
46 Send node,
47 LocalVariableElement
48 variable,
49 AssignmentOperator operator,
50 Node rhs,
51 A arg) {
52 return bulkHandleError(node);
53 }
54
55 @override
56 R errorFinalLocalVariableSet(
57 SendSet node,
58 LocalVariableElement variable,
59 Node rhs,
60 A arg) {
61 return bulkHandleError(node);
62 }
63
64 @override
65 R errorFinalParameterCompound(
66 Send node,
67 ParameterElement parameter,
68 AssignmentOperator operator,
69 Node rhs,
70 A arg) {
71 return bulkHandleError(node);
72 }
73
74 @override
75 R errorFinalParameterSet(
76 SendSet node,
77 ParameterElement parameter,
78 Node rhs,
79 A arg) {
80 return bulkHandleError(node);
81 }
82
83 @override
84 R errorFinalStaticFieldCompound(
85 Send node,
86 FieldElement field,
87 AssignmentOperator operator,
88 Node rhs,
89 A arg) {
90 return bulkHandleError(node);
91 }
92
93 @override
94 R errorFinalStaticFieldSet(
95 SendSet node,
96 FieldElement field,
97 Node rhs,
98 A arg) {
99 return bulkHandleError(node);
100 }
101
102 @override
103 R errorFinalSuperFieldCompound(
104 Send node,
105 FieldElement field,
106 AssignmentOperator operator,
107 Node rhs,
108 A arg) {
109 return bulkHandleError(node);
110 }
111
112 @override
113 R errorFinalSuperFieldSet(
114 SendSet node,
115 FieldElement field,
116 Node rhs,
117 A arg) {
118 return bulkHandleError(node);
119 }
120
121 @override
122 R errorFinalTopLevelFieldCompound(
123 Send node,
124 FieldElement field,
125 AssignmentOperator operator,
126 Node rhs,
127 A arg) {
128 return bulkHandleError(node);
129 }
130
131 @override
132 R errorFinalTopLevelFieldSet(
133 SendSet node,
134 FieldElement field,
135 Node rhs,
136 A arg) {
137 return bulkHandleError(node);
138 }
139
140 @override
141 R errorLocalFunctionCompound(
142 Send node,
143 LocalFunctionElement function,
144 AssignmentOperator operator,
145 Node rhs,
146 A arg) {
147 return bulkHandleError(node);
148 }
149
150 @override
151 R errorLocalFunctionPostfix(
152 Send node,
153 LocalFunctionElement function,
154 IncDecOperator operator,
155 A arg) {
156 return bulkHandleError(node);
157 }
158
159 @override
160 R errorLocalFunctionPrefix(
161 Send node,
162 LocalFunctionElement function,
163 IncDecOperator operator,
164 A arg) {
165 return bulkHandleError(node);
166 }
167
168 @override
169 R errorLocalFunctionSet(
170 SendSet node,
171 LocalFunctionElement function,
172 Node rhs,
173 A arg) {
174 return bulkHandleError(node);
175 }
176
177 @override
178 R errorStaticFunctionSet(
179 Send node,
180 MethodElement function,
181 Node rhs,
182 A arg) {
183 return bulkHandleError(node);
184 }
185
186 @override
187 R errorStaticGetterSet(
188 SendSet node,
189 FunctionElement getter,
190 Node rhs,
191 A arg) {
192 return bulkHandleError(node);
193 }
194
195 @override
196 R errorStaticSetterGet(
197 Send node,
198 FunctionElement setter,
199 A arg) {
200 return bulkHandleError(node);
201 }
202
203 @override
204 R errorStaticSetterInvoke(
205 Send node,
206 FunctionElement setter,
207 NodeList arguments,
208 Selector selector,
209 A arg) {
210 return bulkHandleError(node);
211 }
212
213 @override
214 R errorSuperGetterSet(
215 SendSet node,
216 FunctionElement getter,
217 Node rhs,
218 A arg) {
219 return bulkHandleError(node);
220 }
221
222 @override
223 R errorSuperMethodSet(
224 Send node,
225 MethodElement method,
226 Node rhs,
227 A arg) {
228 return bulkHandleError(node);
229 }
230
231 @override
232 R errorSuperSetterGet(
233 Send node,
234 FunctionElement setter,
235 A arg) {
236 return bulkHandleError(node);
237 }
238
239 @override
240 R errorSuperSetterInvoke(
241 Send node,
242 FunctionElement setter,
243 NodeList arguments,
244 Selector selector,
245 A arg) {
246 return bulkHandleError(node);
247 }
248
249 @override
250 R errorTopLevelFunctionSet(
251 Send node,
252 MethodElement function,
253 Node rhs,
254 A arg) {
255 return bulkHandleError(node);
256 }
257
258 @override
259 R errorTopLevelGetterSet(
260 SendSet node,
261 FunctionElement getter,
262 Node rhs,
263 A arg) {
264 return bulkHandleError(node);
265 }
266
267 @override
268 R errorTopLevelSetterGet(
269 Send node,
270 FunctionElement setter,
271 A arg) {
272 return bulkHandleError(node);
273 }
274
275 @override
276 R errorTopLevelSetterInvoke(
277 Send node,
278 FunctionElement setter,
279 NodeList arguments,
280 Selector selector,
281 A arg) {
282 return bulkHandleError(node);
283 }
284
285 @override
286 R errorTypeVariableTypeLiteralSet(
287 SendSet node,
288 TypeVariableElement element,
289 Node rhs,
290 A arg) {
291 return bulkHandleError(node);
292 }
293
294 @override
295 R errorTypedefTypeLiteralSet(
296 SendSet node,
297 TypeConstantExpression constant,
298 Node rhs,
299 A arg) {
300 return bulkHandleError(node);
301 }
302
303 @override
304 R errorUnresolvedCompound(
305 Send node,
306 Element element,
307 AssignmentOperator operator,
308 Node rhs,
309 A arg) {
310 return bulkHandleError(node);
311 }
312
313 @override
314 R errorUnresolvedGet(
315 Send node,
316 Element element,
317 A arg) {
318 return bulkHandleError(node);
319 }
320
321 @override
322 R errorUnresolvedInvoke(
323 Send node,
324 Element element,
325 NodeList arguments,
326 Selector selector,
327 A arg) {
328 return bulkHandleError(node);
329 }
330
331 @override
332 R errorUnresolvedPostfix(
333 Send node,
334 Element element,
335 IncDecOperator operator,
336 A arg) {
337 return bulkHandleError(node);
338 }
339
340 @override
341 R errorUnresolvedPrefix(
342 Send node,
343 Element element,
344 IncDecOperator operator,
345 A arg) {
346 return bulkHandleError(node);
347 }
348
349 @override
350 R errorUnresolvedSet(
351 Send node,
352 Element element,
353 Node rhs,
354 A arg) {
355 return bulkHandleError(node);
356 }
357
358 @override
359 R errorUnresolvedSuperCompoundIndexSet(
360 Send node,
361 Element element,
362 Node index,
363 AssignmentOperator operator,
364 Node rhs,
365 A arg) {
366 return bulkHandleError(node);
367 }
368
369 @override
370 R errorUnresolvedSuperIndexSet(
371 Send node,
372 Element element,
373 Node index,
374 Node rhs,
375 A arg) {
376 return bulkHandleError(node);
377 }
378
379 @override
380 R errorUnresolvedSuperBinary(
381 Send node,
382 Element element,
383 BinaryOperator operator,
384 Node argument,
385 A arg) {
386 return bulkHandleError(node);
387 }
388
389 @override
390 R errorUnresolvedSuperUnary(
391 Send node,
392 UnaryOperator operator,
393 Element element,
394 A arg) {
395 return bulkHandleError(node);
396 }
397
398 @override
399 R errorUndefinedBinaryExpression(
400 Send node,
401 Node left,
402 Operator operator,
403 Node right,
404 A arg) {
405 return bulkHandleError(node);
406 }
407
408 @override
409 R errorUndefinedUnaryExpression(
410 Send node,
411 Operator operator,
412 Node expression,
413 A arg) {
414 return bulkHandleError(node);
415 }
416 }
417
418 /// Mixin that implements all `visitXPrefix` methods of [SemanticSendVisitor] by
419 /// delegating to a bulk handler.
420 ///
421 /// Use this mixin to provide a trivial implementation for all `visitXPrefix`
422 /// methods.
423 abstract class PrefixBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
424 R bulkHandleNode(Node node, String message);
425
426 R bulkHandlePrefix(Send node) {
427 return bulkHandleNode(node, "Prefix expression `$node` unhandled.");
428 }
429
430 @override
431 R visitClassTypeLiteralPrefix(
432 Send node,
433 TypeConstantExpression constant,
434 IncDecOperator operator,
435 A arg) {
436 return bulkHandlePrefix(node);
437 }
438
439 @override
440 R visitDynamicPropertyPrefix(
441 Send node,
442 Node receiver,
443 IncDecOperator operator,
444 Selector getterSelector,
445 Selector setterSelector,
446 A arg) {
447 return bulkHandlePrefix(node);
448 }
449
450 @override
451 R visitDynamicTypeLiteralPrefix(
452 Send node,
453 TypeConstantExpression constant,
454 IncDecOperator operator,
455 A arg) {
456 return bulkHandlePrefix(node);
457 }
458
459 @override
460 R visitLocalVariablePrefix(
461 Send node,
462 LocalVariableElement variable,
463 IncDecOperator operator,
464 A arg) {
465 return bulkHandlePrefix(node);
466 }
467
468 @override
469 R visitParameterPrefix(
470 Send node,
471 ParameterElement parameter,
472 IncDecOperator operator,
473 A arg) {
474 return bulkHandlePrefix(node);
475 }
476
477 @override
478 R visitStaticFieldPrefix(
479 Send node,
480 FieldElement field,
481 IncDecOperator operator,
482 A arg) {
483 return bulkHandlePrefix(node);
484 }
485
486 @override
487 R visitStaticGetterSetterPrefix(
488 Send node,
489 FunctionElement getter,
490 FunctionElement setter,
491 IncDecOperator operator,
492 A arg) {
493 return bulkHandlePrefix(node);
494 }
495
496 @override
497 R visitStaticMethodSetterPrefix(
498 Send node,
499 FunctionElement getter,
500 FunctionElement setter,
501 IncDecOperator operator,
502 A arg) {
503 return bulkHandlePrefix(node);
504 }
505
506 @override
507 R visitSuperFieldFieldPrefix(
508 Send node,
509 FieldElement readField,
510 FieldElement writtenField,
511 IncDecOperator operator,
512 A arg) {
513 return bulkHandlePrefix(node);
514 }
515
516 @override
517 R visitSuperFieldPrefix(
518 Send node,
519 FieldElement field,
520 IncDecOperator operator,
521 A arg) {
522 return bulkHandlePrefix(node);
523 }
524
525 @override
526 R visitSuperFieldSetterPrefix(
527 Send node,
528 FieldElement field,
529 FunctionElement setter,
530 IncDecOperator operator,
531 A arg) {
532 return bulkHandlePrefix(node);
533 }
534
535 @override
536 R visitSuperGetterFieldPrefix(
537 Send node,
538 FunctionElement getter,
539 FieldElement field,
540 IncDecOperator operator,
541 A arg) {
542 return bulkHandlePrefix(node);
543 }
544
545 @override
546 R visitSuperGetterSetterPrefix(
547 Send node,
548 FunctionElement getter,
549 FunctionElement setter,
550 IncDecOperator operator,
551 A arg) {
552 return bulkHandlePrefix(node);
553 }
554
555 @override
556 R visitSuperMethodSetterPrefix(
557 Send node,
558 FunctionElement method,
559 FunctionElement setter,
560 IncDecOperator operator,
561 A arg) {
562 return bulkHandlePrefix(node);
563 }
564
565 @override
566 R visitThisPropertyPrefix(
567 Send node,
568 IncDecOperator operator,
569 Selector getterSelector,
570 Selector setterSelector,
571 A arg) {
572 return bulkHandlePrefix(node);
573 }
574
575 @override
576 R visitTopLevelFieldPrefix(
577 Send node,
578 FieldElement field,
579 IncDecOperator operator,
580 A arg) {
581 return bulkHandlePrefix(node);
582 }
583
584 @override
585 R visitTopLevelGetterSetterPrefix(
586 Send node,
587 FunctionElement getter,
588 FunctionElement setter,
589 IncDecOperator operator,
590 A arg) {
591 return bulkHandlePrefix(node);
592 }
593
594 @override
595 R visitTopLevelMethodSetterPrefix(
596 Send node,
597 FunctionElement method,
598 FunctionElement setter,
599 IncDecOperator operator,
600 A arg) {
601 return bulkHandlePrefix(node);
602 }
603
604 @override
605 R visitTypeVariableTypeLiteralPrefix(
606 Send node,
607 TypeVariableElement element,
608 IncDecOperator operator,
609 A arg) {
610 return bulkHandlePrefix(node);
611 }
612
613 @override
614 R visitTypedefTypeLiteralPrefix(
615 Send node,
616 TypeConstantExpression constant,
617 IncDecOperator operator,
618 A arg) {
619 return bulkHandlePrefix(node);
620 }
621 }
622
623 /// Mixin that implements all `visitXPostfix` methods of [SemanticSendVisitor]
624 /// by delegating to a bulk handler.
625 ///
626 /// Use this mixin to provide a trivial implementation for all `visitXPostfix`
627 /// methods.
628 abstract class PostfixBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
629 R bulkHandleNode(Node node, String message);
630
631 R bulkHandlePostfix(Send node) {
632 return bulkHandleNode(node, "Postfix expression `$node` unhandled.");
633 }
634
635 @override
636 R visitClassTypeLiteralPostfix(
637 Send node,
638 TypeConstantExpression constant,
639 IncDecOperator operator,
640 A arg) {
641 return bulkHandlePostfix(node);
642 }
643
644 @override
645 R visitDynamicPropertyPostfix(
646 Send node,
647 Node receiver,
648 IncDecOperator operator,
649 Selector getterSelector,
650 Selector setterSelector,
651 A arg) {
652 return bulkHandlePostfix(node);
653 }
654
655 @override
656 R visitDynamicTypeLiteralPostfix(
657 Send node,
658 TypeConstantExpression constant,
659 IncDecOperator operator,
660 A arg) {
661 return bulkHandlePostfix(node);
662 }
663
664 @override
665 R visitLocalVariablePostfix(
666 Send node,
667 LocalVariableElement variable,
668 IncDecOperator operator,
669 A arg) {
670 return bulkHandlePostfix(node);
671 }
672
673 @override
674 R visitParameterPostfix(
675 Send node,
676 ParameterElement parameter,
677 IncDecOperator operator,
678 A arg) {
679 return bulkHandlePostfix(node);
680 }
681
682 @override
683 R visitStaticFieldPostfix(
684 Send node,
685 FieldElement field,
686 IncDecOperator operator,
687 A arg) {
688 return bulkHandlePostfix(node);
689 }
690
691 @override
692 R visitStaticGetterSetterPostfix(
693 Send node,
694 FunctionElement getter,
695 FunctionElement setter,
696 IncDecOperator operator,
697 A arg) {
698 return bulkHandlePostfix(node);
699 }
700
701 @override
702 R visitStaticMethodSetterPostfix(
703 Send node,
704 FunctionElement getter,
705 FunctionElement setter,
706 IncDecOperator operator,
707 A arg) {
708 return bulkHandlePostfix(node);
709 }
710
711 @override
712 R visitSuperFieldFieldPostfix(
713 Send node,
714 FieldElement readField,
715 FieldElement writtenField,
716 IncDecOperator operator,
717 A arg) {
718 return bulkHandlePostfix(node);
719 }
720
721 @override
722 R visitSuperFieldPostfix(
723 Send node,
724 FieldElement field,
725 IncDecOperator operator,
726 A arg) {
727 return bulkHandlePostfix(node);
728 }
729
730 @override
731 R visitSuperFieldSetterPostfix(
732 Send node,
733 FieldElement field,
734 FunctionElement setter,
735 IncDecOperator operator,
736 A arg) {
737 return bulkHandlePostfix(node);
738 }
739
740 @override
741 R visitSuperGetterFieldPostfix(
742 Send node,
743 FunctionElement getter,
744 FieldElement field,
745 IncDecOperator operator,
746 A arg) {
747 return bulkHandlePostfix(node);
748 }
749
750 @override
751 R visitSuperGetterSetterPostfix(
752 Send node,
753 FunctionElement getter,
754 FunctionElement setter,
755 IncDecOperator operator,
756 A arg) {
757 return bulkHandlePostfix(node);
758 }
759
760 @override
761 R visitSuperMethodSetterPostfix(
762 Send node,
763 FunctionElement method,
764 FunctionElement setter,
765 IncDecOperator operator,
766 A arg) {
767 return bulkHandlePostfix(node);
768 }
769
770 @override
771 R visitThisPropertyPostfix(
772 Send node,
773 IncDecOperator operator,
774 Selector getterSelector,
775 Selector setterSelector,
776 A arg) {
777 return bulkHandlePostfix(node);
778 }
779
780 @override
781 R visitTopLevelFieldPostfix(
782 Send node,
783 FieldElement field,
784 IncDecOperator operator,
785 A arg) {
786 return bulkHandlePostfix(node);
787 }
788
789 @override
790 R visitTopLevelGetterSetterPostfix(
791 Send node,
792 FunctionElement getter,
793 FunctionElement setter,
794 IncDecOperator operator,
795 A arg) {
796 return bulkHandlePostfix(node);
797 }
798
799 @override
800 R visitTopLevelMethodSetterPostfix(
801 Send node,
802 FunctionElement method,
803 FunctionElement setter,
804 IncDecOperator operator,
805 A arg) {
806 return bulkHandlePostfix(node);
807 }
808
809 @override
810 R visitTypeVariableTypeLiteralPostfix(
811 Send node,
812 TypeVariableElement element,
813 IncDecOperator operator,
814 A arg) {
815 return bulkHandlePostfix(node);
816 }
817
818 @override
819 R visitTypedefTypeLiteralPostfix(
820 Send node,
821 TypeConstantExpression constant,
822 IncDecOperator operator,
823 A arg) {
824 return bulkHandlePostfix(node);
825 }
826 }
827
828 /// Mixin that implements all `visitXCompound` methods of [SemanticSendVisitor]
829 /// by delegating to a bulk handler.
830 ///
831 /// Use this mixin to provide a trivial implementation for all `xCompound`
832 /// methods.
833 abstract class CompoundBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
834 R bulkHandleNode(Node node, String message);
835
836 R bulkHandleCompound(Send node) {
837 return bulkHandleNode(node, "Compound assignment `$node` unhandled.");
838 }
839
840 @override
841 R visitClassTypeLiteralCompound(
842 Send node,
843 TypeConstantExpression constant,
844 AssignmentOperator operator,
845 Node rhs,
846 A arg) {
847 return bulkHandleCompound(node);
848 }
849
850 @override
851 R visitDynamicPropertyCompound(
852 Send node,
853 Node receiver,
854 AssignmentOperator operator,
855 Node rhs,
856 Selector getterSelector,
857 Selector setterSelector,
858 A arg) {
859 return bulkHandleCompound(node);
860 }
861
862 @override
863 R visitDynamicTypeLiteralCompound(
864 Send node,
865 TypeConstantExpression constant,
866 AssignmentOperator operator,
867 Node rhs,
868 A arg) {
869 return bulkHandleCompound(node);
870 }
871
872 @override
873 R visitLocalVariableCompound(
874 Send node,
875 LocalVariableElement variable,
876 AssignmentOperator operator,
877 Node rhs,
878 A arg) {
879 return bulkHandleCompound(node);
880 }
881
882 @override
883 R visitParameterCompound(
884 Send node,
885 ParameterElement parameter,
886 AssignmentOperator operator,
887 Node rhs,
888 A arg) {
889 return bulkHandleCompound(node);
890 }
891
892 @override
893 R visitStaticFieldCompound(
894 Send node,
895 FieldElement field,
896 AssignmentOperator operator,
897 Node rhs,
898 A arg) {
899 return bulkHandleCompound(node);
900 }
901
902 @override
903 R visitStaticGetterSetterCompound(
904 Send node,
905 FunctionElement getter,
906 FunctionElement setter,
907 AssignmentOperator operator,
908 Node rhs,
909 A arg) {
910 return bulkHandleCompound(node);
911 }
912
913 @override
914 R visitStaticMethodSetterCompound(
915 Send node,
916 FunctionElement method,
917 FunctionElement setter,
918 AssignmentOperator operator,
919 Node rhs,
920 A arg) {
921 return bulkHandleCompound(node);
922 }
923
924 @override
925 R visitSuperFieldCompound(
926 Send node,
927 FieldElement field,
928 AssignmentOperator operator,
929 Node rhs,
930 A arg) {
931 return bulkHandleCompound(node);
932 }
933
934 @override
935 R visitSuperFieldSetterCompound(
936 Send node,
937 FieldElement field,
938 FunctionElement setter,
939 AssignmentOperator operator,
940 Node rhs,
941 A arg) {
942 return bulkHandleCompound(node);
943 }
944
945 @override
946 R visitSuperGetterFieldCompound(
947 Send node,
948 FunctionElement getter,
949 FieldElement field,
950 AssignmentOperator operator,
951 Node rhs,
952 A arg) {
953 return bulkHandleCompound(node);
954 }
955
956 @override
957 R visitSuperGetterSetterCompound(
958 Send node,
959 FunctionElement getter,
960 FunctionElement setter,
961 AssignmentOperator operator,
962 Node rhs,
963 A arg) {
964 return bulkHandleCompound(node);
965 }
966
967 @override
968 R visitSuperMethodSetterCompound(
969 Send node,
970 FunctionElement method,
971 FunctionElement setter,
972 AssignmentOperator operator,
973 Node rhs,
974 A arg) {
975 return bulkHandleCompound(node);
976 }
977
978 @override
979 R visitThisPropertyCompound(
980 Send node,
981 AssignmentOperator operator,
982 Node rhs,
983 Selector getterSelector,
984 Selector setterSelector,
985 A arg) {
986 return bulkHandleCompound(node);
987 }
988
989 @override
990 R visitTopLevelFieldCompound(
991 Send node,
992 FieldElement field,
993 AssignmentOperator operator,
994 Node rhs,
995 A arg) {
996 return bulkHandleCompound(node);
997 }
998
999 @override
1000 R visitTopLevelGetterSetterCompound(
1001 Send node,
1002 FunctionElement getter,
1003 FunctionElement setter,
1004 AssignmentOperator operator,
1005 Node rhs,
1006 A arg) {
1007 return bulkHandleCompound(node);
1008 }
1009
1010 @override
1011 R visitTopLevelMethodSetterCompound(
1012 Send node,
1013 FunctionElement method,
1014 FunctionElement setter,
1015 AssignmentOperator operator,
1016 Node rhs,
1017 A arg) {
1018 return bulkHandleCompound(node);
1019 }
1020
1021 @override
1022 R visitTypeVariableTypeLiteralCompound(
1023 Send node,
1024 TypeVariableElement element,
1025 AssignmentOperator operator,
1026 Node rhs,
1027 A arg) {
1028 return bulkHandleCompound(node);
1029 }
1030
1031 @override
1032 R visitTypedefTypeLiteralCompound(
1033 Send node,
1034 TypeConstantExpression constant,
1035 AssignmentOperator operator,
1036 Node rhs,
1037 A arg) {
1038 return bulkHandleCompound(node);
1039 }
1040 }
1041
1042 /// Mixin that implements all `visitXInvoke` methods of [SemanticSendVisitor] by
1043 /// delegating to a bulk handler.
1044 ///
1045 /// Use this mixin to provide a trivial implementation for all `visitXInvoke`
1046 /// methods.
1047 abstract class InvokeBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
1048 R bulkHandleNode(Node node, String message);
1049
1050 R bulkHandleInvoke(Send node) {
1051 return bulkHandleNode(node, "Invocation `$node` unhandled.");
1052 }
1053
1054 @override
1055 R visitClassTypeLiteralInvoke(
1056 Send node,
1057 TypeConstantExpression constant,
1058 NodeList arguments,
1059 Selector selector,
1060 A arg) {
1061 return bulkHandleInvoke(node);
1062 }
1063
1064 @override
1065 R visitDynamicPropertyInvoke(
1066 Send node,
1067 Node receiver,
1068 NodeList arguments,
1069 Selector selector,
1070 A arg) {
1071 return bulkHandleInvoke(node);
1072 }
1073
1074 @override
1075 R visitDynamicTypeLiteralInvoke(
1076 Send node,
1077 TypeConstantExpression constant,
1078 NodeList arguments,
1079 Selector selector,
1080 A arg) {
1081 return bulkHandleInvoke(node);
1082 }
1083
1084 @override
1085 R visitExpressionInvoke(
1086 Send node,
1087 Node expression,
1088 NodeList arguments,
1089 Selector selector,
1090 A arg) {
1091 return bulkHandleInvoke(node);
1092 }
1093
1094 @override
1095 R visitLocalFunctionInvoke(
1096 Send node,
1097 LocalFunctionElement function,
1098 NodeList arguments,
1099 Selector selector,
1100 A arg) {
1101 return bulkHandleInvoke(node);
1102 }
1103
1104 @override
1105 R visitLocalVariableInvoke(
1106 Send node,
1107 LocalVariableElement variable,
1108 NodeList arguments,
1109 Selector selector,
1110 A arg) {
1111 return bulkHandleInvoke(node);
1112 }
1113
1114 @override
1115 R visitParameterInvoke(
1116 Send node,
1117 ParameterElement parameter,
1118 NodeList arguments,
1119 Selector selector,
1120 A arg) {
1121 return bulkHandleInvoke(node);
1122 }
1123
1124 @override
1125 R visitStaticFieldInvoke(
1126 Send node,
1127 FieldElement field,
1128 NodeList arguments,
1129 Selector selector,
1130 A arg) {
1131 return bulkHandleInvoke(node);
1132 }
1133
1134 @override
1135 R visitStaticFunctionInvoke(
1136 Send node,
1137 MethodElement function,
1138 NodeList arguments,
1139 Selector selector,
1140 A arg) {
1141 return bulkHandleInvoke(node);
1142 }
1143
1144 @override
1145 R visitStaticGetterInvoke(
1146 Send node,
1147 FunctionElement getter,
1148 NodeList arguments,
1149 Selector selector,
1150 A arg) {
1151 return bulkHandleInvoke(node);
1152 }
1153
1154 @override
1155 R visitSuperFieldInvoke(
1156 Send node,
1157 FieldElement field,
1158 NodeList arguments,
1159 Selector selector,
1160 A arg) {
1161 return bulkHandleInvoke(node);
1162 }
1163
1164 @override
1165 R visitSuperGetterInvoke(
1166 Send node,
1167 FunctionElement getter,
1168 NodeList arguments,
1169 Selector selector,
1170 A arg) {
1171 return bulkHandleInvoke(node);
1172 }
1173
1174 @override
1175 R visitSuperMethodInvoke(
1176 Send node,
1177 MethodElement method,
1178 NodeList arguments,
1179 Selector selector,
1180 A arg) {
1181 return bulkHandleInvoke(node);
1182 }
1183
1184 @override
1185 R visitThisInvoke(
1186 Send node,
1187 NodeList arguments,
1188 Selector selector,
1189 A arg) {
1190 return bulkHandleInvoke(node);
1191 }
1192
1193 @override
1194 R visitThisPropertyInvoke(
1195 Send node,
1196 NodeList arguments,
1197 Selector selector,
1198 A arg) {
1199 return bulkHandleInvoke(node);
1200 }
1201
1202 @override
1203 R visitTopLevelFieldInvoke(
1204 Send node,
1205 FieldElement field,
1206 NodeList arguments,
1207 Selector selector,
1208 A arg) {
1209 return bulkHandleInvoke(node);
1210 }
1211
1212 @override
1213 R visitTopLevelFunctionInvoke(
1214 Send node,
1215 MethodElement function,
1216 NodeList arguments,
1217 Selector selector,
1218 A arg) {
1219 return bulkHandleInvoke(node);
1220 }
1221
1222 @override
1223 R visitTopLevelGetterInvoke(
1224 Send node,
1225 FunctionElement getter,
1226 NodeList arguments,
1227 Selector selector,
1228 A arg) {
1229 return bulkHandleInvoke(node);
1230 }
1231
1232 @override
1233 R visitTypeVariableTypeLiteralInvoke(
1234 Send node,
1235 TypeVariableElement element,
1236 NodeList arguments,
1237 Selector selector,
1238 A arg) {
1239 return bulkHandleInvoke(node);
1240 }
1241
1242 @override
1243 R visitTypedefTypeLiteralInvoke(
1244 Send node,
1245 TypeConstantExpression constant,
1246 NodeList arguments,
1247 Selector selector,
1248 A arg) {
1249 return bulkHandleInvoke(node);
1250 }
1251
1252 @override
1253 R visitConstantInvoke(
1254 Send node,
1255 ConstantExpression constant,
1256 NodeList arguments,
1257 Selector selector,
1258 A arg) {
1259 return bulkHandleInvoke(node);
1260 }
1261 }
1262
1263 /// Mixin that implements all `visitXGet` methods of [SemanticSendVisitor] by
1264 /// delegating to a bulk handler.
1265 ///
1266 /// Use this mixin to provide a trivial implementation for all `visitXGet`
1267 /// methods.
1268 abstract class GetBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
1269 R bulkHandleNode(Node node, String message);
1270
1271 R bulkHandleGet(Node node) {
1272 return bulkHandleNode(node, "Read `$node` unhandled.");
1273 }
1274
1275 @override
1276 R visitClassTypeLiteralGet(
1277 Send node,
1278 TypeConstantExpression constant,
1279 A arg) {
1280 return bulkHandleGet(node);
1281 }
1282
1283 @override
1284 R visitDynamicPropertyGet(
1285 Send node,
1286 Node receiver,
1287 Selector selector,
1288 A arg) {
1289 return bulkHandleGet(node);
1290 }
1291
1292 @override
1293 R visitDynamicTypeLiteralGet(
1294 Send node,
1295 TypeConstantExpression constant,
1296 A arg) {
1297 return bulkHandleGet(node);
1298 }
1299
1300 @override
1301 R visitLocalFunctionGet(
1302 Send node,
1303 LocalFunctionElement function,
1304 A arg) {
1305 return bulkHandleGet(node);
1306 }
1307
1308 @override
1309 R visitLocalVariableGet(
1310 Send node,
1311 LocalVariableElement variable,
1312 A arg) {
1313 return bulkHandleGet(node);
1314 }
1315
1316 @override
1317 R visitParameterGet(
1318 Send node,
1319 ParameterElement parameter,
1320 A arg) {
1321 return bulkHandleGet(node);
1322 }
1323
1324 @override
1325 R visitStaticFieldGet(
1326 Send node,
1327 FieldElement field,
1328 A arg) {
1329 return bulkHandleGet(node);
1330 }
1331
1332 @override
1333 R visitStaticFunctionGet(
1334 Send node,
1335 MethodElement function,
1336 A arg) {
1337 return bulkHandleGet(node);
1338 }
1339
1340 @override
1341 R visitStaticGetterGet(
1342 Send node,
1343 FunctionElement getter,
1344 A arg) {
1345 return bulkHandleGet(node);
1346 }
1347
1348 @override
1349 R visitSuperFieldGet(
1350 Send node,
1351 FieldElement field,
1352 A arg) {
1353 return bulkHandleGet(node);
1354 }
1355
1356 @override
1357 R visitSuperGetterGet(
1358 Send node,
1359 FunctionElement getter,
1360 A arg) {
1361 return bulkHandleGet(node);
1362 }
1363
1364 @override
1365 R visitSuperMethodGet(
1366 Send node,
1367 MethodElement method,
1368 A arg) {
1369 return bulkHandleGet(node);
1370 }
1371
1372 @override
1373 R visitThisGet(Identifier node, A arg) {
1374 return bulkHandleGet(node);
1375 }
1376
1377 @override
1378 R visitThisPropertyGet(
1379 Send node,
1380 Selector selector,
1381 A arg) {
1382 return bulkHandleGet(node);
1383 }
1384
1385 @override
1386 R visitTopLevelFieldGet(
1387 Send node,
1388 FieldElement field,
1389 A arg) {
1390 return bulkHandleGet(node);
1391 }
1392
1393 @override
1394 R visitTopLevelFunctionGet(
1395 Send node,
1396 MethodElement function,
1397 A arg) {
1398 return bulkHandleGet(node);
1399 }
1400
1401 @override
1402 R visitTopLevelGetterGet(
1403 Send node,
1404 FunctionElement getter,
1405 A arg) {
1406 return bulkHandleGet(node);
1407 }
1408
1409 @override
1410 R visitTypeVariableTypeLiteralGet(
1411 Send node,
1412 TypeVariableElement element,
1413 A arg) {
1414 return bulkHandleGet(node);
1415 }
1416
1417 @override
1418 R visitTypedefTypeLiteralGet(
1419 Send node,
1420 TypeConstantExpression constant,
1421 A arg) {
1422 return bulkHandleGet(node);
1423 }
1424
1425 @override
1426 R visitConstantGet(
1427 Send node,
1428 TypeConstantExpression constant,
1429 A arg) {
1430 return bulkHandleGet(node);
1431 }
1432 }
1433
1434 /// Mixin that implements all `visitXSet` methods of [SemanticSendVisitor] by
1435 /// delegating to a bulk handler.
1436 ///
1437 /// Use this mixin to provide a trivial implementation for all `visitXSet`
1438 /// methods.
1439 abstract class SetBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
1440 R bulkHandleNode(Node node, String message);
1441
1442 R bulkHandleSet(Send node) {
1443 return bulkHandleNode(node, "Assignment `$node` unhandled.");
1444 }
1445
1446 @override
1447 R visitDynamicPropertySet(
1448 SendSet node,
1449 Node receiver,
1450 Selector selector,
1451 Node rhs,
1452 A arg) {
1453 return bulkHandleSet(node);
1454 }
1455
1456 @override
1457 R visitLocalVariableSet(
1458 SendSet node,
1459 LocalVariableElement variable,
1460 Node rhs,
1461 A arg) {
1462 return bulkHandleSet(node);
1463 }
1464
1465 @override
1466 R visitParameterSet(
1467 SendSet node,
1468 ParameterElement parameter,
1469 Node rhs,
1470 A arg) {
1471 return bulkHandleSet(node);
1472 }
1473
1474 @override
1475 R visitStaticFieldSet(
1476 SendSet node,
1477 FieldElement field,
1478 Node rhs,
1479 A arg) {
1480 return bulkHandleSet(node);
1481 }
1482
1483 @override
1484 R visitStaticSetterSet(
1485 SendSet node,
1486 FunctionElement setter,
1487 Node rhs,
1488 A arg) {
1489 return bulkHandleSet(node);
1490 }
1491
1492 @override
1493 R visitSuperFieldSet(
1494 SendSet node,
1495 FieldElement field,
1496 Node rhs,
1497 A arg) {
1498 return bulkHandleSet(node);
1499 }
1500
1501 @override
1502 R visitSuperSetterSet(
1503 SendSet node,
1504 FunctionElement setter,
1505 Node rhs,
1506 A arg) {
1507 return bulkHandleSet(node);
1508 }
1509
1510 @override
1511 R visitThisPropertySet(
1512 SendSet node,
1513 Selector selector,
1514 Node rhs,
1515 A arg) {
1516 return bulkHandleSet(node);
1517 }
1518
1519 @override
1520 R visitTopLevelFieldSet(
1521 SendSet node,
1522 FieldElement field,
1523 Node rhs,
1524 A arg) {
1525 return bulkHandleSet(node);
1526 }
1527
1528 @override
1529 R visitTopLevelSetterSet(
1530 SendSet node,
1531 FunctionElement setter,
1532 Node rhs,
1533 A arg) {
1534 return bulkHandleSet(node);
1535 }
1536 }
1537
1538 /// Mixin that implements all `visitXIndexSet` methods of [SemanticSendVisitor] by
1539 /// delegating to a bulk handler.
1540 ///
1541 /// Use this mixin to provide a trivial implementation for all `visitXIndexSet`
1542 /// methods.
1543 abstract class IndexSetBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
1544 R bulkHandleNode(Node node, String message);
1545
1546 R bulkHandleIndexSet(Send node) {
1547 return bulkHandleNode(node, "Index set expression `$node` unhandled.");
1548 }
1549
1550 @override
1551 R visitCompoundIndexSet(
1552 Send node,
1553 Node receiver,
1554 Node index,
1555 AssignmentOperator operator,
1556 Node rhs,
1557 A arg) {
1558 return bulkHandleIndexSet(node);
1559 }
1560
1561 @override
1562 R visitIndexSet(
1563 Send node,
1564 Node receiver,
1565 Node index,
1566 Node rhs,
1567 A arg) {
1568 return bulkHandleIndexSet(node);
1569 }
1570
1571 @override
1572 R visitSuperCompoundIndexSet(
1573 Send node,
1574 FunctionElement getter,
1575 FunctionElement setter,
1576 Node index,
1577 AssignmentOperator operator,
1578 Node rhs,
1579 A arg) {
1580 return bulkHandleIndexSet(node);
1581 }
1582
1583 @override
1584 R visitSuperIndexSet(
1585 Send node,
1586 FunctionElement function,
1587 Node index,
1588 Node rhs,
1589 A arg) {
1590 return bulkHandleIndexSet(node);
1591 }
1592 }
1593
1594 /// Mixin that implements all binary visitor methods in [SemanticSendVisitor] by
1595 /// delegating to a bulk handler.
1596 ///
1597 /// Use this mixin to provide a trivial implementation for all binary visitor
1598 /// methods.
1599 abstract class BinaryBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
1600 R bulkHandleNode(Node node, String message);
1601
1602 R bulkHandleBinary(Send node) {
1603 return bulkHandleNode(node, "Binary expression `$node` unhandled.");
1604 }
1605
1606 @override
1607 R visitBinary(
1608 Send node,
1609 Node left,
1610 BinaryOperator operator,
1611 Node right,
1612 A arg) {
1613 return bulkHandleBinary(node);
1614 }
1615
1616 @override
1617 R visitEquals(
1618 Send node,
1619 Node left,
1620 Node right,
1621 A arg) {
1622 return bulkHandleBinary(node);
1623 }
1624
1625 @override
1626 R visitNotEquals(
1627 Send node,
1628 Node left,
1629 Node right,
1630 A arg) {
1631 return bulkHandleBinary(node);
1632 }
1633
1634 @override
1635 R visitSuperBinary(
1636 Send node,
1637 FunctionElement function,
1638 BinaryOperator operator,
1639 Node argument,
1640 A arg) {
1641 return bulkHandleBinary(node);
1642 }
1643
1644 @override
1645 R visitSuperEquals(
1646 Send node,
1647 FunctionElement function,
1648 Node argument,
1649 A arg) {
1650 return bulkHandleBinary(node);
1651 }
1652
1653 @override
1654 R visitSuperNotEquals(
1655 Send node,
1656 FunctionElement function,
1657 Node argument,
1658 A arg) {
1659 return bulkHandleBinary(node);
1660 }
1661 }
1662
1663 /// Mixin that implements all unary visitor methods in [SemanticSendVisitor] by
1664 /// delegating to a bulk handler.
1665 ///
1666 /// Use this mixin to provide a trivial implementation for all unary visitor
1667 /// methods.
1668 abstract class UnaryBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
1669 R bulkHandleNode(Node node, String message);
1670
1671 R bulkHandleUnary(Send node) {
1672 return bulkHandleNode(node, "Unary expression `$node` unhandled.");
1673 }
1674
1675 @override
1676 R visitNot(
1677 Send node,
1678 Node expression,
1679 A arg) {
1680 return bulkHandleUnary(node);
1681 }
1682
1683 @override
1684 R visitSuperUnary(Send node, UnaryOperator operator,
1685 FunctionElement function, A arg) {
1686 return bulkHandleUnary(node);
1687 }
1688
1689 @override
1690 R visitUnary(
1691 Send node,
1692 UnaryOperator operator,
1693 Node expression,
1694 A arg) {
1695 return bulkHandleUnary(node);
1696 }
1697 }
1698
1699 /// Mixin that implements all purely structural visitor methods in
1700 /// [SemanticSendVisitor] by delegating to a bulk handler.
1701 ///
1702 /// Use this mixin to provide a trivial implementation for all purely structural
1703 /// visitor methods.
1704 abstract class BaseBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
1705 R bulkHandleNode(Node node, String message);
1706
1707 @override
1708 R visitAs(
1709 Send node,
1710 Node expression,
1711 DartType type,
1712 A arg) {
1713 return bulkHandleNode(node, 'As cast `$node` unhandled.');
1714 }
1715
1716 @override
1717 R visitAssert(
1718 Send node,
1719 Node expression,
1720 A arg) {
1721 return bulkHandleNode(node, 'Assert `$node` unhandled.');
1722 }
1723
1724 @override
1725 R visitIs(
1726 Send node,
1727 Node expression,
1728 DartType type,
1729 A arg) {
1730 return bulkHandleNode(node, 'Is test `$node` unhandled.');
1731 }
1732
1733 @override
1734 R visitIsNot(
1735 Send node,
1736 Node expression,
1737 DartType type,
1738 A arg) {
1739 return bulkHandleNode(node, 'Is not test `$node` unhandled.');
1740 }
1741
1742 @override
1743 R visitLogicalAnd(
1744 Send node,
1745 Node left,
1746 Node right,
1747 A arg) {
1748 return bulkHandleNode(node, 'Lazy and `$node` unhandled.');
1749 }
1750
1751 @override
1752 R visitLogicalOr(
1753 Send node,
1754 Node left,
1755 Node right,
1756 A arg) {
1757 return bulkHandleNode(node, 'Lazy or `$node` unhandled.');
1758 }
1759 }
1760
1761 /// Mixin that implements all visitor methods for `super` calls in
1762 /// [SemanticSendVisitor] by delegating to a bulk handler.
1763 ///
1764 /// Use this mixin to provide a trivial implementation for `super` calls
1765 /// visitor methods.
1766 abstract class SuperBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
1767 R bulkHandleNode(Node node, String message);
1768
1769 R bulkHandleSuper(Send node) {
1770 return bulkHandleNode(node, "Super call `$node` unhandled.");
1771 }
1772
1773 @override
1774 R visitSuperBinary(
1775 Send node,
1776 FunctionElement function,
1777 BinaryOperator operator,
1778 Node argument,
1779 A arg) {
1780 return bulkHandleSuper(node);
1781 }
1782
1783 @override
1784 R visitSuperCompoundIndexSet(
1785 Send node,
1786 FunctionElement getter,
1787 FunctionElement setter,
1788 Node index,
1789 AssignmentOperator operator,
1790 Node rhs,
1791 A arg) {
1792 return bulkHandleSuper(node);
1793 }
1794
1795 @override
1796 R visitSuperEquals(
1797 Send node,
1798 FunctionElement function,
1799 Node argument,
1800 A arg) {
1801 return bulkHandleSuper(node);
1802 }
1803
1804 @override
1805 R visitSuperFieldCompound(
1806 Send node,
1807 FieldElement field,
1808 AssignmentOperator operator,
1809 Node rhs,
1810 A arg) {
1811 return bulkHandleSuper(node);
1812 }
1813
1814 @override
1815 R visitSuperFieldFieldPostfix(
1816 Send node,
1817 FieldElement readField,
1818 FieldElement writtenField,
1819 IncDecOperator operator,
1820 A arg) {
1821 return bulkHandleSuper(node);
1822 }
1823
1824 @override
1825 R visitSuperFieldFieldPrefix(
1826 Send node,
1827 FieldElement readField,
1828 FieldElement writtenField,
1829 IncDecOperator operator,
1830 A arg) {
1831 return bulkHandleSuper(node);
1832 }
1833
1834 @override
1835 R visitSuperFieldGet(
1836 Send node,
1837 FieldElement field,
1838 A arg) {
1839 return bulkHandleSuper(node);
1840 }
1841
1842 @override
1843 R visitSuperFieldInvoke(
1844 Send node,
1845 FieldElement field,
1846 NodeList arguments,
1847 Selector selector,
1848 A arg) {
1849 return bulkHandleSuper(node);
1850 }
1851
1852 @override
1853 R visitSuperFieldPostfix(
1854 Send node,
1855 FieldElement field,
1856 IncDecOperator operator,
1857 A arg) {
1858 return bulkHandleSuper(node);
1859 }
1860
1861 @override
1862 R visitSuperFieldPrefix(
1863 Send node,
1864 FieldElement field,
1865 IncDecOperator operator,
1866 A arg) {
1867 return bulkHandleSuper(node);
1868 }
1869
1870 @override
1871 R visitSuperFieldSet(
1872 SendSet node,
1873 FieldElement field,
1874 Node rhs,
1875 A arg) {
1876 return bulkHandleSuper(node);
1877 }
1878
1879 @override
1880 R visitSuperFieldSetterCompound(
1881 Send node,
1882 FieldElement field,
1883 FunctionElement setter,
1884 AssignmentOperator operator,
1885 Node rhs,
1886 A arg) {
1887 return bulkHandleSuper(node);
1888 }
1889
1890 @override
1891 R visitSuperFieldSetterPostfix(
1892 Send node,
1893 FieldElement field,
1894 FunctionElement setter,
1895 IncDecOperator operator,
1896 A arg) {
1897 return bulkHandleSuper(node);
1898 }
1899
1900 @override
1901 R visitSuperFieldSetterPrefix(
1902 Send node,
1903 FieldElement field,
1904 FunctionElement setter,
1905 IncDecOperator operator,
1906 A arg) {
1907 return bulkHandleSuper(node);
1908 }
1909
1910 @override
1911 R visitSuperGetterFieldCompound(
1912 Send node,
1913 FunctionElement getter,
1914 FieldElement field,
1915 AssignmentOperator operator,
1916 Node rhs,
1917 A arg) {
1918 return bulkHandleSuper(node);
1919 }
1920
1921 @override
1922 R visitSuperGetterFieldPostfix(
1923 Send node,
1924 FunctionElement getter,
1925 FieldElement field,
1926 IncDecOperator operator,
1927 A arg) {
1928 return bulkHandleSuper(node);
1929 }
1930
1931 @override
1932 R visitSuperGetterFieldPrefix(
1933 Send node,
1934 FunctionElement getter,
1935 FieldElement field,
1936 IncDecOperator operator,
1937 A arg) {
1938 return bulkHandleSuper(node);
1939 }
1940
1941 @override
1942 R visitSuperGetterGet(
1943 Send node,
1944 FunctionElement getter,
1945 A arg) {
1946 return bulkHandleSuper(node);
1947 }
1948
1949 @override
1950 R visitSuperGetterInvoke(
1951 Send node,
1952 FunctionElement getter,
1953 NodeList arguments,
1954 Selector selector,
1955 A arg) {
1956 return bulkHandleSuper(node);
1957 }
1958
1959 @override
1960 R visitSuperGetterSetterCompound(
1961 Send node,
1962 FunctionElement getter,
1963 FunctionElement setter,
1964 AssignmentOperator operator,
1965 Node rhs,
1966 A arg) {
1967 return bulkHandleSuper(node);
1968 }
1969
1970 @override
1971 R visitSuperGetterSetterPostfix(
1972 Send node,
1973 FunctionElement getter,
1974 FunctionElement setter,
1975 IncDecOperator operator,
1976 A arg) {
1977 return bulkHandleSuper(node);
1978 }
1979
1980 @override
1981 R visitSuperGetterSetterPrefix(
1982 Send node,
1983 FunctionElement getter,
1984 FunctionElement setter,
1985 IncDecOperator operator,
1986 A arg) {
1987 return bulkHandleSuper(node);
1988 }
1989
1990 @override
1991 R visitSuperIndexSet(
1992 Send node,
1993 FunctionElement function,
1994 Node index,
1995 Node rhs,
1996 A arg) {
1997 return bulkHandleSuper(node);
1998 }
1999
2000 @override
2001 R visitSuperMethodGet(
2002 Send node,
2003 MethodElement method,
2004 A arg) {
2005 return bulkHandleSuper(node);
2006 }
2007
2008 @override
2009 R visitSuperMethodInvoke(
2010 Send node,
2011 MethodElement method,
2012 NodeList arguments,
2013 Selector selector,
2014 A arg) {
2015 return bulkHandleSuper(node);
2016 }
2017
2018 @override
2019 R visitSuperMethodSetterCompound(
2020 Send node,
2021 FunctionElement method,
2022 FunctionElement setter,
2023 AssignmentOperator operator,
2024 Node rhs,
2025 A arg) {
2026 return bulkHandleSuper(node);
2027 }
2028
2029 @override
2030 R visitSuperMethodSetterPostfix(
2031 Send node,
2032 FunctionElement method,
2033 FunctionElement setter,
2034 IncDecOperator operator,
2035 A arg) {
2036 return bulkHandleSuper(node);
2037 }
2038
2039 @override
2040 R visitSuperMethodSetterPrefix(
2041 Send node,
2042 FunctionElement method,
2043 FunctionElement setter,
2044 IncDecOperator operator,
2045 A arg) {
2046 return bulkHandleSuper(node);
2047 }
2048
2049 @override
2050 R visitSuperNotEquals(
2051 Send node,
2052 FunctionElement function,
2053 Node argument,
2054 A arg) {
2055 return bulkHandleSuper(node);
2056 }
2057
2058 @override
2059 R visitSuperSetterSet(
2060 SendSet node,
2061 FunctionElement setter,
2062 Node rhs,
2063 A arg) {
2064 return bulkHandleSuper(node);
2065 }
2066
2067 @override
2068 R visitSuperUnary(
2069 Send node,
2070 UnaryOperator operator,
2071 FunctionElement function,
2072 A arg) {
2073 return bulkHandleSuper(node);
2074 }
2075 }
2076
2077 /// Visitor that implements [SemanticSendVisitor] by the use of `BulkX` mixins.
2078 ///
2079 /// This class is useful in itself, but shows how to use the `BulkX` mixins and
2080 /// tests that the union of the `BulkX` mixins implement all `visit` and `error`
2081 /// methods of [SemanticSendVisitor].
2082 class BulkVisitor<R, A> extends SemanticSendVisitor<R, A>
2083 with GetBulkMixin<R, A>,
2084 SetBulkMixin<R, A>,
2085 ErrorBulkMixin<R, A>,
2086 InvokeBulkMixin<R, A>,
2087 IndexSetBulkMixin<R, A>,
2088 CompoundBulkMixin<R, A>,
2089 UnaryBulkMixin<R, A>,
2090 BaseBulkMixin<R, A>,
2091 BinaryBulkMixin<R, A>,
2092 PrefixBulkMixin<R, A>,
2093 PostfixBulkMixin<R, A> {
2094
2095 @override
2096 R apply(Node node, A arg) {
2097 throw new UnimplementedError("BulkVisitor.apply unimplemented");
2098 }
2099
2100 @override
2101 R bulkHandleNode(Node node, String message) {
2102 throw new UnimplementedError("BulkVisitor.bulkHandleNode unimplemented");
2103 }
2104 }
2105
2106 /// [SemanticSendVisitor] that visits subnodes.
2107 class TraversalMixin<R, A> implements SemanticSendVisitor<R, A> {
2108 @override
2109 R apply(Node node, A arg) {
2110 throw new UnimplementedError("TraversalMixin.apply unimplemented");
2111 }
2112
2113 @override
2114 R errorInvalidAssert(
2115 Send node,
2116 NodeList arguments,
2117 A arg) {
2118 apply(arguments, arg);
2119 return null;
2120 }
2121
2122 @override
2123 R errorClassTypeLiteralSet(
2124 SendSet node,
2125 TypeConstantExpression constant,
2126 Node rhs,
2127 A arg) {
2128 apply(rhs, arg);
2129 return null;
2130 }
2131
2132 @override
2133 R errorDynamicTypeLiteralSet(
2134 SendSet node,
2135 TypeConstantExpression constant,
2136 Node rhs,
2137 A arg) {
2138 apply(rhs, arg);
2139 return null;
2140 }
2141
2142 @override
2143 R errorFinalLocalVariableCompound(
2144 Send node,
2145 LocalVariableElement variable,
2146 AssignmentOperator operator,
2147 Node rhs,
2148 A arg) {
2149 apply(rhs, arg);
2150 return null;
2151 }
2152
2153 @override
2154 R errorFinalLocalVariableSet(
2155 SendSet node,
2156 LocalVariableElement variable,
2157 Node rhs,
2158 A arg) {
2159 apply(rhs, arg);
2160 return null;
2161 }
2162
2163 @override
2164 R errorFinalParameterCompound(
2165 Send node,
2166 ParameterElement parameter,
2167 AssignmentOperator operator,
2168 Node rhs,
2169 A arg) {
2170 apply(rhs, arg);
2171 return null;
2172 }
2173
2174 @override
2175 R errorFinalParameterSet(
2176 SendSet node,
2177 ParameterElement parameter,
2178 Node rhs,
2179 A arg) {
2180 apply(rhs, arg);
2181 return null;
2182 }
2183
2184 @override
2185 R errorFinalStaticFieldCompound(
2186 Send node,
2187 FieldElement field,
2188 AssignmentOperator operator,
2189 Node rhs,
2190 A arg) {
2191 apply(rhs, arg);
2192 return null;
2193 }
2194
2195 @override
2196 R errorFinalStaticFieldSet(
2197 SendSet node,
2198 FieldElement field,
2199 Node rhs,
2200 A arg) {
2201 apply(rhs, arg);
2202 return null;
2203 }
2204
2205 @override
2206 R errorFinalSuperFieldCompound(
2207 Send node,
2208 FieldElement field,
2209 AssignmentOperator operator,
2210 Node rhs,
2211 A arg) {
2212 apply(rhs, arg);
2213 return null;
2214 }
2215
2216 @override
2217 R errorFinalSuperFieldSet(
2218 SendSet node,
2219 FieldElement field,
2220 Node rhs,
2221 A arg) {
2222 apply(rhs, arg);
2223 return null;
2224 }
2225
2226 @override
2227 R errorFinalTopLevelFieldCompound(
2228 Send node,
2229 FieldElement field,
2230 AssignmentOperator operator,
2231 Node rhs,
2232 A arg) {
2233 apply(rhs, arg);
2234 return null;
2235 }
2236
2237 @override
2238 R errorFinalTopLevelFieldSet(
2239 SendSet node,
2240 FieldElement field,
2241 Node rhs,
2242 A arg) {
2243 apply(rhs, arg);
2244 return null;
2245 }
2246
2247 @override
2248 R errorLocalFunctionCompound(
2249 Send node,
2250 LocalFunctionElement function,
2251 AssignmentOperator operator,
2252 Node rhs,
2253 A arg) {
2254 apply(rhs, arg);
2255 return null;
2256 }
2257
2258 @override
2259 R errorLocalFunctionPostfix(
2260 Send node,
2261 LocalFunctionElement function,
2262 IncDecOperator operator,
2263 A arg) {
2264 return null;
2265 }
2266
2267 @override
2268 R errorLocalFunctionPrefix(
2269 Send node,
2270 LocalFunctionElement function,
2271 IncDecOperator operator,
2272 A arg) {
2273 return null;
2274 }
2275
2276 @override
2277 R errorLocalFunctionSet(
2278 SendSet node,
2279 LocalFunctionElement function,
2280 Node rhs,
2281 A arg) {
2282 apply(rhs, arg);
2283 return null;
2284 }
2285
2286 @override
2287 R errorStaticFunctionSet(
2288 Send node,
2289 MethodElement function,
2290 Node rhs,
2291 A arg) {
2292 apply(rhs, arg);
2293 return null;
2294 }
2295
2296 @override
2297 R errorStaticGetterSet(
2298 SendSet node,
2299 FunctionElement getter,
2300 Node rhs,
2301 A arg) {
2302 apply(rhs, arg);
2303 return null;
2304 }
2305
2306 @override
2307 R errorStaticSetterGet(
2308 Send node,
2309 FunctionElement setter,
2310 A arg) {
2311 return null;
2312 }
2313
2314 @override
2315 R errorStaticSetterInvoke(
2316 Send node,
2317 FunctionElement setter,
2318 NodeList arguments,
2319 Selector selector,
2320 A arg) {
2321 apply(arguments, arg);
2322 return null;
2323 }
2324
2325 @override
2326 R errorSuperGetterSet(
2327 SendSet node,
2328 FunctionElement getter,
2329 Node rhs,
2330 A arg) {
2331 apply(rhs, arg);
2332 return null;
2333 }
2334
2335 @override
2336 R errorSuperMethodSet(
2337 Send node,
2338 MethodElement method,
2339 Node rhs,
2340 A arg) {
2341 apply(rhs, arg);
2342 return null;
2343 }
2344
2345 @override
2346 R errorSuperSetterGet(
2347 Send node,
2348 FunctionElement setter,
2349 A arg) {
2350 return null;
2351 }
2352
2353 @override
2354 R errorSuperSetterInvoke(
2355 Send node,
2356 FunctionElement setter,
2357 NodeList arguments,
2358 Selector selector,
2359 A arg) {
2360 apply(arguments, arg);
2361 return null;
2362 }
2363
2364 @override
2365 R errorTopLevelFunctionSet(
2366 Send node,
2367 MethodElement function,
2368 Node rhs,
2369 A arg) {
2370 apply(rhs, arg);
2371 return null;
2372 }
2373
2374 @override
2375 R errorTopLevelGetterSet(
2376 SendSet node,
2377 FunctionElement getter,
2378 Node rhs,
2379 A arg) {
2380 apply(rhs, arg);
2381 return null;
2382 }
2383
2384 @override
2385 R errorTopLevelSetterGet(
2386 Send node,
2387 FunctionElement setter,
2388 A arg) {
2389 return null;
2390 }
2391
2392 @override
2393 R errorTopLevelSetterInvoke(
2394 Send node,
2395 FunctionElement setter,
2396 NodeList arguments,
2397 Selector selector,
2398 A arg) {
2399 apply(arguments, arg);
2400 return null;
2401 }
2402
2403 @override
2404 R errorTypeVariableTypeLiteralSet(
2405 SendSet node,
2406 TypeVariableElement element,
2407 Node rhs,
2408 A arg) {
2409 apply(rhs, arg);
2410 return null;
2411 }
2412
2413 @override
2414 R errorTypedefTypeLiteralSet(
2415 SendSet node,
2416 TypeConstantExpression constant,
2417 Node rhs,
2418 A arg) {
2419 apply(rhs, arg);
2420 return null;
2421 }
2422
2423 @override
2424 R visitAs(
2425 Send node,
2426 Node expression,
2427 DartType type,
2428 A arg) {
2429 apply(expression, arg);
2430 return null;
2431 }
2432
2433 @override
2434 R visitAssert(
2435 Send node,
2436 Node expression,
2437 A arg) {
2438 apply(expression, arg);
2439 return null;
2440 }
2441
2442 @override
2443 R visitBinary(
2444 Send node,
2445 Node left,
2446 BinaryOperator operator,
2447 Node right,
2448 A arg) {
2449 apply(left, arg);
2450 apply(right, arg);
2451 return null;
2452 }
2453
2454 @override
2455 R visitClassTypeLiteralCompound(
2456 Send node,
2457 TypeConstantExpression constant,
2458 AssignmentOperator operator,
2459 Node rhs,
2460 A arg) {
2461 apply(rhs, arg);
2462 return null;
2463 }
2464
2465 @override
2466 R visitClassTypeLiteralGet(
2467 Send node,
2468 TypeConstantExpression constant,
2469 A arg) {
2470 return null;
2471 }
2472
2473 @override
2474 R visitClassTypeLiteralInvoke(
2475 Send node,
2476 TypeConstantExpression constant,
2477 NodeList arguments,
2478 Selector selector,
2479 A arg) {
2480 apply(arguments, arg);
2481 return null;
2482 }
2483
2484 @override
2485 R visitClassTypeLiteralPostfix(
2486 Send node,
2487 TypeConstantExpression constant,
2488 IncDecOperator operator,
2489 A arg) {
2490 return null;
2491 }
2492
2493 @override
2494 R visitClassTypeLiteralPrefix(
2495 Send node,
2496 TypeConstantExpression constant,
2497 IncDecOperator operator,
2498 A arg) {
2499 return null;
2500 }
2501
2502 @override
2503 R visitCompoundIndexSet(
2504 Send node,
2505 Node receiver,
2506 Node index,
2507 AssignmentOperator operator,
2508 Node rhs,
2509 A arg) {
2510 apply(receiver, arg);
2511 apply(index, arg);
2512 apply(rhs, arg);
2513 return null;
2514 }
2515
2516 @override
2517 R visitConstantGet(
2518 Send node,
2519 ConstantExpression constant,
2520 A arg) {
2521 return null;
2522 }
2523
2524 @override
2525 R visitConstantInvoke(
2526 Send node,
2527 ConstantExpression constant,
2528 NodeList arguments,
2529 Selector selector,
2530 A arg) {
2531 apply(arguments, arg);
2532 return null;
2533 }
2534
2535 @override
2536 R visitDynamicPropertyCompound(
2537 Send node,
2538 Node receiver,
2539 AssignmentOperator operator,
2540 Node rhs,
2541 Selector getterSelector,
2542 Selector setterSelector,
2543 A arg) {
2544 apply(receiver, arg);
2545 apply(rhs, arg);
2546 return null;
2547 }
2548
2549 @override
2550 R visitDynamicPropertyGet(
2551 Send node,
2552 Node receiver,
2553 Selector selector,
2554 A arg) {
2555 apply(receiver, arg);
2556 return null;
2557 }
2558
2559 @override
2560 R visitDynamicPropertyInvoke(
2561 Send node,
2562 Node receiver,
2563 NodeList arguments,
2564 Selector selector,
2565 A arg) {
2566 apply(receiver, arg);
2567 apply(arguments, arg);
2568 return null;
2569 }
2570
2571 @override
2572 R visitDynamicPropertyPostfix(
2573 Send node,
2574 Node receiver,
2575 IncDecOperator operator,
2576 Selector getterSelector,
2577 Selector setterSelector,
2578 A arg) {
2579 apply(receiver, arg);
2580 return null;
2581 }
2582
2583 @override
2584 R visitDynamicPropertyPrefix(
2585 Send node,
2586 Node receiver,
2587 IncDecOperator operator,
2588 Selector getterSelector,
2589 Selector setterSelector,
2590 A arg) {
2591 apply(receiver, arg);
2592 return null;
2593 }
2594
2595 @override
2596 R visitDynamicPropertySet(
2597 SendSet node,
2598 Node receiver,
2599 Selector selector,
2600 Node rhs,
2601 A arg) {
2602 apply(rhs, arg);
2603 return null;
2604 }
2605
2606 @override
2607 R visitDynamicTypeLiteralCompound(
2608 Send node,
2609 TypeConstantExpression constant,
2610 AssignmentOperator operator,
2611 Node rhs,
2612 A arg) {
2613 apply(rhs, arg);
2614 return null;
2615 }
2616
2617 @override
2618 R visitDynamicTypeLiteralGet(
2619 Send node,
2620 TypeConstantExpression constant,
2621 A arg) {
2622 return null;
2623 }
2624
2625 @override
2626 R visitDynamicTypeLiteralInvoke(
2627 Send node,
2628 TypeConstantExpression constant,
2629 NodeList arguments,
2630 Selector selector,
2631 A arg) {
2632 apply(arguments, arg);
2633 return null;
2634 }
2635
2636 @override
2637 R visitDynamicTypeLiteralPostfix(
2638 Send node,
2639 TypeConstantExpression constant,
2640 IncDecOperator operator,
2641 A arg) {
2642 return null;
2643 }
2644
2645 @override
2646 R visitDynamicTypeLiteralPrefix(
2647 Send node,
2648 TypeConstantExpression constant,
2649 IncDecOperator operator,
2650 A arg) {
2651 return null;
2652 }
2653
2654 @override
2655 R visitEquals(
2656 Send node,
2657 Node left,
2658 Node right,
2659 A arg) {
2660 apply(left, arg);
2661 apply(right, arg);
2662 return null;
2663 }
2664
2665 @override
2666 R visitExpressionInvoke(
2667 Send node,
2668 Node expression,
2669 NodeList arguments,
2670 Selector selector,
2671 A arg) {
2672 apply(expression, arg);
2673 apply(arguments, arg);
2674 return null;
2675 }
2676
2677 @override
2678 R visitIndexSet(
2679 Send node,
2680 Node receiver,
2681 Node index,
2682 Node rhs,
2683 A arg) {
2684 apply(receiver, arg);
2685 apply(index, arg);
2686 apply(rhs, arg);
2687 return null;
2688 }
2689
2690 @override
2691 R visitIs(
2692 Send node,
2693 Node expression,
2694 DartType type,
2695 A arg) {
2696 apply(expression, arg);
2697 return null;
2698 }
2699
2700 @override
2701 R visitIsNot(
2702 Send node,
2703 Node expression,
2704 DartType type,
2705 A arg) {
2706 apply(expression, arg);
2707 return null;
2708 }
2709
2710 @override
2711 R visitLocalFunctionGet(
2712 Send node,
2713 LocalFunctionElement function,
2714 A arg) {
2715 return null;
2716 }
2717
2718 @override
2719 R visitLocalFunctionInvoke(
2720 Send node,
2721 LocalFunctionElement function,
2722 NodeList arguments,
2723 Selector selector,
2724 A arg) {
2725 apply(arguments, arg);
2726 return null;
2727 }
2728
2729 @override
2730 R visitLocalVariableCompound(
2731 Send node,
2732 LocalVariableElement variable,
2733 AssignmentOperator operator,
2734 Node rhs,
2735 A arg) {
2736 apply(rhs, arg);
2737 return null;
2738 }
2739
2740 @override
2741 R visitLocalVariableGet(
2742 Send node,
2743 LocalVariableElement variable,
2744 A arg) {
2745 return null;
2746 }
2747
2748 @override
2749 R visitLocalVariableInvoke(
2750 Send node,
2751 LocalVariableElement variable,
2752 NodeList arguments,
2753 Selector selector,
2754 A arg) {
2755 apply(arguments, arg);
2756 return null;
2757 }
2758
2759 @override
2760 R visitLocalVariablePostfix(
2761 Send node,
2762 LocalVariableElement variable,
2763 IncDecOperator operator,
2764 A arg) {
2765 return null;
2766 }
2767
2768 @override
2769 R visitLocalVariablePrefix(
2770 Send node,
2771 LocalVariableElement variable,
2772 IncDecOperator operator,
2773 A arg) {
2774 return null;
2775 }
2776
2777 @override
2778 R visitLocalVariableSet(
2779 SendSet node,
2780 LocalVariableElement variable,
2781 Node rhs,
2782 A arg) {
2783 apply(rhs, arg);
2784 return null;
2785 }
2786
2787 @override
2788 R visitLogicalAnd(
2789 Send node,
2790 Node left,
2791 Node right,
2792 A arg) {
2793 apply(left, arg);
2794 apply(right, arg);
2795 return null;
2796 }
2797
2798 @override
2799 R visitLogicalOr(
2800 Send node,
2801 Node left,
2802 Node right,
2803 A arg) {
2804 apply(left, arg);
2805 apply(right, arg);
2806 return null;
2807 }
2808
2809 @override
2810 R visitNot(
2811 Send node,
2812 Node expression,
2813 A arg) {
2814 apply(expression, arg);
2815 return null;
2816 }
2817
2818 @override
2819 R visitNotEquals(
2820 Send node,
2821 Node left,
2822 Node right,
2823 A arg) {
2824 apply(left, arg);
2825 apply(right, arg);
2826 return null;
2827 }
2828
2829 @override
2830 R visitParameterCompound(
2831 Send node,
2832 ParameterElement parameter,
2833 AssignmentOperator operator,
2834 Node rhs,
2835 A arg) {
2836 apply(rhs, arg);
2837 return null;
2838 }
2839
2840 @override
2841 R visitParameterGet(
2842 Send node,
2843 ParameterElement parameter,
2844 A arg) {
2845 return null;
2846 }
2847
2848 @override
2849 R visitParameterInvoke(
2850 Send node,
2851 ParameterElement parameter,
2852 NodeList arguments,
2853 Selector selector,
2854 A arg) {
2855 apply(arguments, arg);
2856 return null;
2857 }
2858
2859 @override
2860 R visitParameterPostfix(
2861 Send node,
2862 ParameterElement parameter,
2863 IncDecOperator operator,
2864 A arg) {
2865 return null;
2866 }
2867
2868 @override
2869 R visitParameterPrefix(
2870 Send node,
2871 ParameterElement parameter,
2872 IncDecOperator operator,
2873 A arg) {
2874 return null;
2875 }
2876
2877 @override
2878 R visitParameterSet(
2879 SendSet node,
2880 ParameterElement parameter,
2881 Node rhs,
2882 A arg) {
2883 apply(rhs, arg);
2884 return null;
2885 }
2886
2887 @override
2888 R visitStaticFieldCompound(
2889 Send node,
2890 FieldElement field,
2891 AssignmentOperator operator,
2892 Node rhs,
2893 A arg) {
2894 apply(rhs, arg);
2895 return null;
2896 }
2897
2898 @override
2899 R visitStaticFieldGet(
2900 Send node,
2901 FieldElement field,
2902 A arg) {
2903 return null;
2904 }
2905
2906 @override
2907 R visitStaticFieldInvoke(
2908 Send node,
2909 FieldElement field,
2910 NodeList arguments,
2911 Selector selector,
2912 A arg) {
2913 apply(arguments, arg);
2914 return null;
2915 }
2916
2917 @override
2918 R visitStaticFieldPostfix(
2919 Send node,
2920 FieldElement field,
2921 IncDecOperator operator,
2922 A arg) {
2923 return null;
2924 }
2925
2926 @override
2927 R visitStaticFieldPrefix(
2928 Send node,
2929 FieldElement field,
2930 IncDecOperator operator,
2931 A arg) {
2932 return null;
2933 }
2934
2935 @override
2936 R visitStaticFieldSet(
2937 SendSet node,
2938 FieldElement field,
2939 Node rhs,
2940 A arg) {
2941 apply(rhs, arg);
2942 return null;
2943 }
2944
2945 @override
2946 R visitStaticFunctionGet(
2947 Send node,
2948 MethodElement function,
2949 A arg) {
2950 return null;
2951 }
2952
2953 @override
2954 R visitStaticFunctionInvoke(
2955 Send node,
2956 MethodElement function,
2957 NodeList arguments,
2958 Selector selector,
2959 A arg) {
2960 apply(arguments, arg);
2961 return null;
2962 }
2963
2964 @override
2965 R visitStaticGetterGet(
2966 Send node,
2967 FunctionElement getter,
2968 A arg) {
2969 return null;
2970 }
2971
2972 @override
2973 R visitStaticGetterInvoke(
2974 Send node,
2975 FunctionElement getter,
2976 NodeList arguments,
2977 Selector selector,
2978 A arg) {
2979 apply(arguments, arg);
2980 return null;
2981 }
2982
2983 @override
2984 R visitStaticGetterSetterCompound(
2985 Send node,
2986 FunctionElement getter,
2987 FunctionElement setter,
2988 AssignmentOperator operator,
2989 Node rhs,
2990 A arg) {
2991 apply(rhs, arg);
2992 return null;
2993 }
2994
2995 @override
2996 R visitStaticGetterSetterPostfix(
2997 Send node,
2998 FunctionElement getter,
2999 FunctionElement setter,
3000 IncDecOperator operator,
3001 A arg) {
3002 return null;
3003 }
3004
3005 @override
3006 R visitStaticGetterSetterPrefix(
3007 Send node,
3008 FunctionElement getter,
3009 FunctionElement setter,
3010 IncDecOperator operator,
3011 A arg) {
3012 return null;
3013 }
3014
3015 @override
3016 R visitStaticMethodSetterCompound(
3017 Send node,
3018 FunctionElement method,
3019 FunctionElement setter,
3020 AssignmentOperator operator,
3021 Node rhs,
3022 A arg) {
3023 apply(rhs, arg);
3024 return null;
3025 }
3026
3027 @override
3028 R visitStaticMethodSetterPostfix(
3029 Send node,
3030 FunctionElement getter,
3031 FunctionElement setter,
3032 IncDecOperator operator,
3033 A arg) {
3034 return null;
3035 }
3036
3037 @override
3038 R visitStaticMethodSetterPrefix(
3039 Send node,
3040 FunctionElement getter,
3041 FunctionElement setter,
3042 IncDecOperator operator,
3043 A arg) {
3044 return null;
3045 }
3046
3047 @override
3048 R visitStaticSetterSet(
3049 SendSet node,
3050 FunctionElement setter,
3051 Node rhs,
3052 A arg) {
3053 apply(rhs, arg);
3054 return null;
3055 }
3056
3057 @override
3058 R visitSuperBinary(
3059 Send node,
3060 FunctionElement function,
3061 BinaryOperator operator,
3062 Node argument,
3063 A arg) {
3064 apply(argument, arg);
3065 return null;
3066 }
3067
3068 @override
3069 R visitSuperCompoundIndexSet(
3070 Send node,
3071 FunctionElement getter,
3072 FunctionElement setter,
3073 Node index,
3074 AssignmentOperator operator,
3075 Node rhs,
3076 A arg) {
3077 apply(rhs, arg);
3078 return null;
3079 }
3080
3081 @override
3082 R visitSuperEquals(
3083 Send node,
3084 FunctionElement function,
3085 Node argument,
3086 A arg) {
3087 apply(argument, arg);
3088 return null;
3089 }
3090
3091 @override
3092 R visitSuperFieldCompound(
3093 Send node,
3094 FieldElement field,
3095 AssignmentOperator operator,
3096 Node rhs,
3097 A arg) {
3098 apply(rhs, arg);
3099 return null;
3100 }
3101
3102 @override
3103 R visitSuperFieldFieldPostfix(
3104 Send node,
3105 FieldElement readField,
3106 FieldElement writtenField,
3107 IncDecOperator operator,
3108 A arg) {
3109 return null;
3110 }
3111
3112 @override
3113 R visitSuperFieldFieldPrefix(
3114 Send node,
3115 FieldElement readField,
3116 FieldElement writtenField,
3117 IncDecOperator operator,
3118 A arg) {
3119 return null;
3120 }
3121
3122 @override
3123 R visitSuperFieldGet(
3124 Send node,
3125 FieldElement field,
3126 A arg) {
3127 return null;
3128 }
3129
3130 @override
3131 R visitSuperFieldInvoke(
3132 Send node,
3133 FieldElement field,
3134 NodeList arguments,
3135 Selector selector,
3136 A arg) {
3137 apply(arguments, arg);
3138 return null;
3139 }
3140
3141 @override
3142 R visitSuperFieldPostfix(
3143 Send node,
3144 FieldElement field,
3145 IncDecOperator operator,
3146 A arg) {
3147 return null;
3148 }
3149
3150 @override
3151 R visitSuperFieldPrefix(
3152 Send node,
3153 FieldElement field,
3154 IncDecOperator operator,
3155 A arg) {
3156 return null;
3157 }
3158
3159 @override
3160 R visitSuperFieldSet(
3161 SendSet node,
3162 FieldElement field,
3163 Node rhs,
3164 A arg) {
3165 apply(rhs, arg);
3166 return null;
3167 }
3168
3169 @override
3170 R visitSuperFieldSetterCompound(
3171 Send node,
3172 FieldElement field,
3173 FunctionElement setter,
3174 AssignmentOperator operator,
3175 Node rhs,
3176 A arg) {
3177 apply(rhs, arg);
3178 return null;
3179 }
3180
3181 @override
3182 R visitSuperFieldSetterPostfix(
3183 Send node,
3184 FieldElement field,
3185 FunctionElement setter,
3186 IncDecOperator operator,
3187 A arg) {
3188 return null;
3189 }
3190
3191 @override
3192 R visitSuperFieldSetterPrefix(
3193 Send node,
3194 FieldElement field,
3195 FunctionElement setter,
3196 IncDecOperator operator,
3197 A arg) {
3198 return null;
3199 }
3200
3201 @override
3202 R visitSuperGetterFieldCompound(
3203 Send node,
3204 FunctionElement getter,
3205 FieldElement field,
3206 AssignmentOperator operator,
3207 Node rhs,
3208 A arg) {
3209 apply(rhs, arg);
3210 return null;
3211 }
3212
3213 @override
3214 R visitSuperGetterFieldPostfix(
3215 Send node,
3216 FunctionElement getter,
3217 FieldElement field,
3218 IncDecOperator operator,
3219 A arg) {
3220 return null;
3221 }
3222
3223 @override
3224 R visitSuperGetterFieldPrefix(
3225 Send node,
3226 FunctionElement getter,
3227 FieldElement field,
3228 IncDecOperator operator,
3229 A arg) {
3230 return null;
3231 }
3232
3233 @override
3234 R visitSuperGetterGet(
3235 Send node,
3236 FunctionElement getter,
3237 A arg) {
3238 return null;
3239 }
3240
3241 @override
3242 R visitSuperGetterInvoke(
3243 Send node,
3244 FunctionElement getter,
3245 NodeList arguments,
3246 Selector selector,
3247 A arg) {
3248 apply(arguments, arg);
3249 return null;
3250 }
3251
3252 @override
3253 R visitSuperGetterSetterCompound(
3254 Send node,
3255 FunctionElement getter,
3256 FunctionElement setter,
3257 AssignmentOperator operator,
3258 Node rhs,
3259 A arg) {
3260 apply(rhs, arg);
3261 return null;
3262 }
3263
3264 @override
3265 R visitSuperGetterSetterPostfix(
3266 Send node,
3267 FunctionElement getter,
3268 FunctionElement setter,
3269 IncDecOperator operator,
3270 A arg) {
3271 return null;
3272 }
3273
3274 @override
3275 R visitSuperGetterSetterPrefix(
3276 Send node,
3277 FunctionElement getter,
3278 FunctionElement setter,
3279 IncDecOperator operator,
3280 A arg) {
3281 return null;
3282 }
3283
3284 @override
3285 R visitSuperIndexSet(
3286 Send node,
3287 FunctionElement function,
3288 Node index,
3289 Node rhs,
3290 A arg) {
3291 apply(index, arg);
3292 apply(rhs, arg);
3293 return null;
3294 }
3295
3296 @override
3297 R visitSuperMethodGet(
3298 Send node,
3299 MethodElement method,
3300 A arg) {
3301 return null;
3302 }
3303
3304 @override
3305 R visitSuperMethodInvoke(
3306 Send node,
3307 MethodElement method,
3308 NodeList arguments,
3309 Selector selector,
3310 A arg) {
3311 apply(arguments, arg);
3312 return null;
3313 }
3314
3315 @override
3316 R visitSuperMethodSetterCompound(
3317 Send node,
3318 FunctionElement method,
3319 FunctionElement setter,
3320 AssignmentOperator operator,
3321 Node rhs,
3322 A arg) {
3323 apply(rhs, arg);
3324 return null;
3325 }
3326
3327 @override
3328 R visitSuperMethodSetterPostfix(
3329 Send node,
3330 FunctionElement method,
3331 FunctionElement setter,
3332 IncDecOperator operator,
3333 A arg) {
3334 return null;
3335 }
3336
3337 @override
3338 R visitSuperMethodSetterPrefix(
3339 Send node,
3340 FunctionElement method,
3341 FunctionElement setter,
3342 IncDecOperator operator,
3343 A arg) {
3344 return null;
3345 }
3346
3347 @override
3348 R visitSuperNotEquals(
3349 Send node,
3350 FunctionElement function,
3351 Node argument,
3352 A arg) {
3353 apply(argument, arg);
3354 return null;
3355 }
3356
3357 @override
3358 R visitSuperSetterSet(
3359 SendSet node,
3360 FunctionElement setter,
3361 Node rhs,
3362 A arg) {
3363 apply(rhs, arg);
3364 return null;
3365 }
3366
3367 @override
3368 R visitSuperUnary(
3369 Send node,
3370 UnaryOperator operator,
3371 FunctionElement function,
3372 A arg) {
3373 return null;
3374 }
3375
3376 @override
3377 R visitThisGet(Identifier node, A arg) {
3378 return null;
3379 }
3380
3381 @override
3382 R visitThisInvoke(
3383 Send node,
3384 NodeList arguments,
3385 Selector selector,
3386 A arg) {
3387 apply(arguments, arg);
3388 return null;
3389 }
3390
3391 @override
3392 R visitThisPropertyCompound(
3393 Send node,
3394 AssignmentOperator operator,
3395 Node rhs,
3396 Selector getterSelector,
3397 Selector setterSelector,
3398 A arg) {
3399 apply(rhs, arg);
3400 return null;
3401 }
3402
3403 @override
3404 R visitThisPropertyGet(
3405 Send node,
3406 Selector selector,
3407 A arg) {
3408 return null;
3409 }
3410
3411 @override
3412 R visitThisPropertyInvoke(
3413 Send node,
3414 NodeList arguments,
3415 Selector selector,
3416 A arg) {
3417 apply(arguments, arg);
3418 return null;
3419 }
3420
3421 @override
3422 R visitThisPropertyPostfix(
3423 Send node,
3424 IncDecOperator operator,
3425 Selector getterSelector,
3426 Selector setterSelector,
3427 A arg) {
3428 return null;
3429 }
3430
3431 @override
3432 R visitThisPropertyPrefix(
3433 Send node,
3434 IncDecOperator operator,
3435 Selector getterSelector,
3436 Selector setterSelector,
3437 A arg) {
3438 return null;
3439 }
3440
3441 @override
3442 R visitThisPropertySet(
3443 SendSet node,
3444 Selector selector,
3445 Node rhs,
3446 A arg) {
3447 apply(rhs, arg);
3448 return null;
3449 }
3450
3451 @override
3452 R visitTopLevelFieldCompound(
3453 Send node,
3454 FieldElement field,
3455 AssignmentOperator operator,
3456 Node rhs,
3457 A arg) {
3458 apply(rhs, arg);
3459 return null;
3460 }
3461
3462 @override
3463 R visitTopLevelFieldGet(
3464 Send node,
3465 FieldElement field,
3466 A arg) {
3467 return null;
3468 }
3469
3470 @override
3471 R visitTopLevelFieldInvoke(
3472 Send node,
3473 FieldElement field,
3474 NodeList arguments,
3475 Selector selector,
3476 A arg) {
3477 apply(arguments, arg);
3478 return null;
3479 }
3480
3481 @override
3482 R visitTopLevelFieldPostfix(
3483 Send node,
3484 FieldElement field,
3485 IncDecOperator operator,
3486 A arg) {
3487 return null;
3488 }
3489
3490 @override
3491 R visitTopLevelFieldPrefix(
3492 Send node,
3493 FieldElement field,
3494 IncDecOperator operator,
3495 A arg) {
3496 return null;
3497 }
3498
3499 @override
3500 R visitTopLevelFieldSet(
3501 SendSet node,
3502 FieldElement field,
3503 Node rhs,
3504 A arg) {
3505 apply(rhs, arg);
3506 return null;
3507 }
3508
3509 @override
3510 R visitTopLevelFunctionGet(
3511 Send node,
3512 MethodElement function,
3513 A arg) {
3514 return null;
3515 }
3516
3517 @override
3518 R visitTopLevelFunctionInvoke(
3519 Send node,
3520 MethodElement function,
3521 NodeList arguments,
3522 Selector selector,
3523 A arg) {
3524 apply(arguments, arg);
3525 return null;
3526 }
3527
3528 @override
3529 R visitTopLevelGetterGet(
3530 Send node,
3531 FunctionElement getter,
3532 A arg) {
3533 return null;
3534 }
3535
3536 @override
3537 R visitTopLevelGetterInvoke(
3538 Send node,
3539 FunctionElement getter,
3540 NodeList arguments,
3541 Selector selector,
3542 A arg) {
3543 apply(arguments, arg);
3544 return null;
3545 }
3546
3547 @override
3548 R visitTopLevelGetterSetterCompound(
3549 Send node,
3550 FunctionElement getter,
3551 FunctionElement setter,
3552 AssignmentOperator operator,
3553 Node rhs,
3554 A arg) {
3555 apply(rhs, arg);
3556 return null;
3557 }
3558
3559 @override
3560 R visitTopLevelGetterSetterPostfix(
3561 Send node,
3562 FunctionElement getter,
3563 FunctionElement setter,
3564 IncDecOperator operator,
3565 A arg) {
3566 return null;
3567 }
3568
3569 @override
3570 R visitTopLevelGetterSetterPrefix(
3571 Send node,
3572 FunctionElement getter,
3573 FunctionElement setter,
3574 IncDecOperator operator,
3575 A arg) {
3576 return null;
3577 }
3578
3579 @override
3580 R visitTopLevelMethodSetterCompound(
3581 Send node,
3582 FunctionElement method,
3583 FunctionElement setter,
3584 AssignmentOperator operator,
3585 Node rhs,
3586 A arg) {
3587 apply(rhs, arg);
3588 return null;
3589 }
3590
3591 @override
3592 R visitTopLevelMethodSetterPostfix(
3593 Send node,
3594 FunctionElement method,
3595 FunctionElement setter,
3596 IncDecOperator operator,
3597 A arg) {
3598 return null;
3599 }
3600
3601 @override
3602 R visitTopLevelMethodSetterPrefix(
3603 Send node,
3604 FunctionElement method,
3605 FunctionElement setter,
3606 IncDecOperator operator,
3607 A arg) {
3608 return null;
3609 }
3610
3611 @override
3612 R visitTopLevelSetterSet(
3613 SendSet node,
3614 FunctionElement setter,
3615 Node rhs,
3616 A arg) {
3617 apply(rhs, arg);
3618 return null;
3619 }
3620
3621 @override
3622 R visitTypeVariableTypeLiteralCompound(
3623 Send node,
3624 TypeVariableElement element,
3625 AssignmentOperator operator,
3626 Node rhs,
3627 A arg) {
3628 apply(rhs, arg);
3629 return null;
3630 }
3631
3632 @override
3633 R visitTypeVariableTypeLiteralGet(
3634 Send node,
3635 TypeVariableElement element,
3636 A arg) {
3637 return null;
3638 }
3639
3640 @override
3641 R visitTypeVariableTypeLiteralInvoke(
3642 Send node,
3643 TypeVariableElement element,
3644 NodeList arguments,
3645 Selector selector,
3646 A arg) {
3647 apply(arguments, arg);
3648 return null;
3649 }
3650
3651 @override
3652 R visitTypeVariableTypeLiteralPostfix(
3653 Send node,
3654 TypeVariableElement element,
3655 IncDecOperator operator,
3656 A arg) {
3657 return null;
3658 }
3659
3660 @override
3661 R visitTypeVariableTypeLiteralPrefix(
3662 Send node,
3663 TypeVariableElement element,
3664 IncDecOperator operator,
3665 A arg) {
3666 return null;
3667 }
3668
3669 @override
3670 R visitTypedefTypeLiteralCompound(
3671 Send node,
3672 TypeConstantExpression constant,
3673 AssignmentOperator operator,
3674 Node rhs,
3675 A arg) {
3676 apply(rhs, arg);
3677 return null;
3678 }
3679
3680 @override
3681 R visitTypedefTypeLiteralGet(
3682 Send node,
3683 TypeConstantExpression constant,
3684 A arg) {
3685 return null;
3686 }
3687
3688 @override
3689 R visitTypedefTypeLiteralInvoke(
3690 Send node,
3691 TypeConstantExpression constant,
3692 NodeList arguments,
3693 Selector selector,
3694 A arg) {
3695 apply(arguments, arg);
3696 return null;
3697 }
3698
3699 @override
3700 R visitTypedefTypeLiteralPostfix(
3701 Send node,
3702 TypeConstantExpression constant,
3703 IncDecOperator operator,
3704 A arg) {
3705 return null;
3706 }
3707
3708 @override
3709 R visitTypedefTypeLiteralPrefix(
3710 Send node,
3711 TypeConstantExpression constant,
3712 IncDecOperator operator,
3713 A arg) {
3714 return null;
3715 }
3716
3717 @override
3718 R visitUnary(
3719 Send node,
3720 UnaryOperator operator,
3721 Node expression,
3722 A arg) {
3723 apply(expression, arg);
3724 return null;
3725 }
3726
3727 @override
3728 R errorUnresolvedCompound(
3729 Send node,
3730 Element element,
3731 AssignmentOperator operator,
3732 Node rhs,
3733 A arg) {
3734 apply(rhs, arg);
3735 return null;
3736 }
3737
3738 @override
3739 R errorUnresolvedGet(
3740 Send node,
3741 Element element,
3742 A arg) {
3743 return null;
3744 }
3745
3746 @override
3747 R errorUnresolvedInvoke(
3748 Send node,
3749 Element element,
3750 NodeList arguments,
3751 Selector selector,
3752 A arg) {
3753 apply(arguments, arg);
3754 return null;
3755 }
3756
3757 @override
3758 R errorUnresolvedPostfix(
3759 Send node,
3760 Element element,
3761 IncDecOperator operator,
3762 A arg) {
3763 return null;
3764 }
3765
3766 @override
3767 R errorUnresolvedPrefix(
3768 Send node,
3769 Element element,
3770 IncDecOperator operator,
3771 A arg) {
3772 return null;
3773 }
3774
3775 @override
3776 R errorUnresolvedSet(
3777 Send node,
3778 Element element,
3779 Node rhs,
3780 A arg) {
3781 apply(rhs, arg);
3782 return null;
3783 }
3784
3785 @override
3786 R errorUndefinedBinaryExpression(
3787 Send node,
3788 Node left,
3789 Operator operator,
3790 Node right,
3791 A arg) {
3792 apply(left, arg);
3793 apply(right, arg);
3794 return null;
3795 }
3796
3797 @override
3798 R errorUndefinedUnaryExpression(
3799 Send node,
3800 Operator operator,
3801 Node expression,
3802 A arg) {
3803 apply(expression, arg);
3804 return null;
3805 }
3806
3807 @override
3808 R errorUnresolvedSuperIndexSet(
3809 Send node,
3810 Element element,
3811 Node index,
3812 Node rhs,
3813 A arg) {
3814 apply(index, arg);
3815 apply(rhs, arg);
3816 return null;
3817 }
3818
3819 @override
3820 R errorUnresolvedSuperCompoundIndexSet(
3821 Send node,
3822 Element element,
3823 Node index,
3824 AssignmentOperator operator,
3825 Node rhs,
3826 A arg) {
3827 apply(index, arg);
3828 apply(rhs, arg);
3829 return null;
3830 }
3831
3832 @override
3833 R errorUnresolvedSuperBinary(
3834 Send node,
3835 Element element,
3836 BinaryOperator operator,
3837 Node argument,
3838 A arg) {
3839 apply(argument, arg);
3840 return null;
3841 }
3842
3843 @override
3844 R errorUnresolvedSuperUnary(
3845 Send node,
3846 UnaryOperator operator,
3847 Element element,
3848 A arg) {
3849 return null;
3850 }
3851 }
3852
3853 /// AST visitor that visits all normal [Send] and [SendSet] nodes using the
3854 /// [SemanticVisitor].
3855 class TraversalVisitor<R, A> extends SemanticVisitor<R, A>
3856 with TraversalMixin<R, A> {
3857 TraversalVisitor(TreeElements elements) : super(elements);
3858
3859 SemanticSendVisitor<R, A> get sendVisitor => this;
3860
3861 R apply(Node node, A arg) {
3862 node.accept(this);
3863 return null;
3864 }
3865
3866 @override
3867 internalError(Spannable spannable, String message) {
3868 throw new SpannableAssertionFailure(spannable, message);
3869 }
3870
3871 @override
3872 R visitNode(Node node) {
3873 node.visitChildren(this);
3874 return null;
3875 }
3876
3877 @override
3878 R visitNewExpression(NewExpression node) {
3879 // Bypass the [Send] holding the class/constructor name.
3880 return apply(node.send.argumentsNode, null);
3881 }
3882
3883 void visitParameters(NodeList parameters) {
3884
3885 }
3886
3887 void visitInitializers(NodeList initializers) {
3888 // TODO(johnniwinther): Visit subnodes of initializers.
3889 }
3890
3891 @override
3892 R visitFunctionExpression(FunctionExpression node) {
3893 if (node.parameters != null) {
3894 visitParameters(node.parameters);
3895 }
3896 if (node.initializers != null) {
3897 visitInitializers(node.initializers);
3898 }
3899 if (node.body != null) {
3900 apply(node.body, null);
3901 }
3902 return null;
3903 }
3904 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/resolution/semantic_visitor.dart ('k') | pkg/compiler/lib/src/resolution/send_resolver.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698