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

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: Updated and extended 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(Send node, NodeList arguments, A arg) {
20 bulkHandleError(node);
21 }
22
23 @override
24 R errorClassTypeLiteralSet(
25 SendSet node,
26 TypeConstantExpression constant,
27 Node rhs,
28 A arg) {
29 return bulkHandleError(node);
30 }
31
32 @override
33 R errorDynamicTypeLiteralSet(
34 SendSet node, TypeConstantExpression constant, Node rhs, A arg) {
35 return bulkHandleError(node);
36 }
37
38 @override
39 R errorFinalLocalVariableCompound(
40 Send node, LocalVariableElement variable, AssignmentOperator operator, Nod e rhs, A arg) {
Johnni Winther 2015/03/04 11:59:39 Will cleanup long lines while you review.
Johnni Winther 2015/03/11 09:14:47 Done.
41 return bulkHandleError(node);
42 }
43
44 @override
45 R errorFinalLocalVariableSet(
46 SendSet node, LocalVariableElement variable, Node rhs, A arg) {
47 return bulkHandleError(node);
48 }
49
50 @override
51 R errorFinalParameterCompound(
52 Send node, ParameterElement parameter, AssignmentOperator operator, Node r hs, A arg) {
53 return bulkHandleError(node);
54 }
55
56 @override
57 R errorFinalParameterSet(
58 SendSet node, ParameterElement parameter, Node rhs, A arg) {
59 return bulkHandleError(node);
60 }
61
62 @override
63 R errorFinalStaticFieldCompound(
64 Send node, FieldElement field, AssignmentOperator operator, Node rhs, A ar g) {
65 return bulkHandleError(node);
66 }
67
68 @override
69 R errorFinalStaticFieldSet(
70 SendSet node, FieldElement field, Node rhs, A arg) {
71 return bulkHandleError(node);
72 }
73
74 @override
75 R errorFinalSuperFieldCompound(
76 Send node, FieldElement field, AssignmentOperator operator, Node rhs, A ar g) {
77 return bulkHandleError(node);
78 }
79
80 @override
81 R errorFinalSuperFieldSet(
82 SendSet node, FieldElement field, Node rhs, A arg) {
83 return bulkHandleError(node);
84 }
85
86 @override
87 R errorFinalTopLevelFieldCompound(
88 Send node, FieldElement field, AssignmentOperator operator, Node rhs, A ar g) {
89 return bulkHandleError(node);
90 }
91
92 @override
93 R errorFinalTopLevelFieldSet(
94 SendSet node, FieldElement field, Node rhs, A arg) {
95 return bulkHandleError(node);
96 }
97
98 @override
99 R errorLocalFunctionCompound(Send node, LocalFunctionElement function, Assignm entOperator operator, Node rhs, A arg) {
100 return bulkHandleError(node);
101 }
102
103 @override
104 R errorLocalFunctionPostfix(Send node, LocalFunctionElement function, IncDecOp erator operator, A arg) {
105 return bulkHandleError(node);
106 }
107
108 @override
109 R errorLocalFunctionPrefix(Send node, LocalFunctionElement function, IncDecOpe rator operator, A arg) {
110 return bulkHandleError(node);
111 }
112
113 @override
114 R errorLocalFunctionSet(SendSet node, LocalFunctionElement function, Node rhs, A arg) {
115 return bulkHandleError(node);
116 }
117
118 @override
119 R errorStaticFunctionSet(Send node, MethodElement function, Node rhs, A arg) {
120 return bulkHandleError(node);
121 }
122
123 @override
124 R errorStaticGetterSet(SendSet node, FunctionElement getter, Node rhs, A arg) {
125 return bulkHandleError(node);
126 }
127
128 @override
129 R errorStaticSetterGet(Send node, FunctionElement setter, A arg) {
130 return bulkHandleError(node);
131 }
132
133 @override
134 R errorStaticSetterInvoke(Send node, FunctionElement setter, NodeList argument s, Selector selector, A arg) {
135 return bulkHandleError(node);
136 }
137
138 @override
139 R errorSuperGetterSet(SendSet node, FunctionElement getter, Node rhs, A arg) {
140 return bulkHandleError(node);
141 }
142
143 @override
144 R errorSuperMethodSet(Send node, MethodElement method, Node rhs, A arg) {
145 return bulkHandleError(node);
146 }
147
148 @override
149 R errorSuperSetterGet(Send node, FunctionElement setter, A arg) {
150 return bulkHandleError(node);
151 }
152
153 @override
154 R errorSuperSetterInvoke(Send node, FunctionElement setter, NodeList arguments , Selector selector, A arg) {
155 return bulkHandleError(node);
156 }
157
158 @override
159 R errorTopLevelFunctionSet(Send node, MethodElement function, Node rhs, A arg) {
160 return bulkHandleError(node);
161 }
162
163 @override
164 R errorTopLevelGetterSet(SendSet node, FunctionElement getter, Node rhs, A arg ) {
165 return bulkHandleError(node);
166 }
167
168 @override
169 R errorTopLevelSetterGet(Send node, FunctionElement setter, A arg) {
170 return bulkHandleError(node);
171 }
172
173 @override
174 R errorTopLevelSetterInvoke(Send node, FunctionElement setter, NodeList argume nts, Selector selector, A arg) {
175 return bulkHandleError(node);
176 }
177
178 @override
179 R errorTypeVariableTypeLiteralSet(SendSet node, TypeVariableElement element, N ode rhs, A arg) {
180 return bulkHandleError(node);
181 }
182
183 @override
184 R errorTypedefTypeLiteralSet(SendSet node, TypeConstantExpression constant, No de rhs, A arg) {
185 return bulkHandleError(node);
186 }
187
188 @override
189 R errorUnresolvedCompound(Send node, Element element, AssignmentOperator opera tor, Node rhs, A arg) {
190 return bulkHandleError(node);
191 }
192
193 @override
194 R errorUnresolvedGet(Send node, Element element, A arg) {
195 return bulkHandleError(node);
196 }
197
198 @override
199 R errorUnresolvedInvoke(Send node, Element element, NodeList arguments, Select or selector, A arg) {
200 return bulkHandleError(node);
201 }
202
203 @override
204 R errorUnresolvedPostfix(Send node, Element element, IncDecOperator operator, A arg) {
205 return bulkHandleError(node);
206 }
207
208 @override
209 R errorUnresolvedPrefix(Send node, Element element, IncDecOperator operator, A arg) {
210 return bulkHandleError(node);
211 }
212
213 @override
214 R errorUnresolvedSet(Send node, Element element, Node rhs, A arg) {
215 return bulkHandleError(node);
216 }
217
218 @override
219 R errorUnresolvedSuperCompoundIndexSet(Send node, Element element, Node index, AssignmentOperator operator, Node rhs, A arg) {
220 return bulkHandleError(node);
221 }
222
223 @override
224 R errorUnresolvedSuperIndexSet(Send node, Element element, Node index, Node rh s, A arg) {
225 return bulkHandleError(node);
226 }
227
228 @override
229 R errorUnresolvedSuperBinary(Send node, Element element, BinaryOperator operat or, Node argument, A arg) {
230 return bulkHandleError(node);
231 }
232
233 @override
234 R errorUnresolvedSuperUnary(Send node, UnaryOperator operator, Element element , A arg) {
235 return bulkHandleError(node);
236 }
237
238 @override
239 R errorUndefinedBinaryExpression(Send node, Node left, Operator operator, Node right, A arg) {
240 return bulkHandleError(node);
241 }
242
243 @override
244 R errorUndefinedUnaryExpression(Send node, Operator operator, Node expression, A arg) {
245 return bulkHandleError(node);
246 }
247 }
248
249 /// Mixin that implements all `visitXPrefix` methods of [SemanticSendVisitor] by
250 /// delegating to a bulk handler.
251 ///
252 /// Use this mixin to provide a trivial implementation for all `visitXPrefix`
253 /// methods.
254 abstract class PrefixBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
255 R bulkHandleNode(Node node, String message);
256
257 R bulkHandlePrefix(Send node) {
258 return bulkHandleNode(node, "Prefix expression `$node` unhandled.");
259 }
260
261 @override
262 R visitClassTypeLiteralPrefix(Send node, TypeConstantExpression constant, IncD ecOperator operator, A arg) {
263 return bulkHandlePrefix(node);
264 }
265
266 @override
267 R visitDynamicPropertyPrefix(Send node, Node receiver, IncDecOperator operator , Selector getterSelector, Selector setterSelector, A arg) {
268 return bulkHandlePrefix(node);
269 }
270
271 @override
272 R visitDynamicTypeLiteralPrefix(Send node, TypeConstantExpression constant, In cDecOperator operator, A arg) {
273 return bulkHandlePrefix(node);
274 }
275
276 @override
277 R visitLocalVariablePrefix(Send node, LocalVariableElement variable, IncDecOpe rator operator, A arg) {
278 return bulkHandlePrefix(node);
279 }
280
281 @override
282 R visitParameterPrefix(Send node, ParameterElement parameter, IncDecOperator o perator, A arg) {
283 return bulkHandlePrefix(node);
284 }
285
286 @override
287 R visitStaticFieldPrefix(Send node, FieldElement field, IncDecOperator operato r, A arg) {
288 return bulkHandlePrefix(node);
289 }
290
291 @override
292 R visitStaticGetterSetterPrefix(Send node, FunctionElement getter, FunctionEle ment setter, IncDecOperator operator, A arg) {
293 return bulkHandlePrefix(node);
294 }
295
296 @override
297 R visitStaticMethodSetterPrefix(Send node, FunctionElement getter, FunctionEle ment setter, IncDecOperator operator, A arg) {
298 return bulkHandlePrefix(node);
299 }
300
301 @override
302 R visitSuperFieldFieldPrefix(Send node, FieldElement readField, FieldElement w rittenField, IncDecOperator operator, A arg) {
303 return bulkHandlePrefix(node);
304 }
305
306 @override
307 R visitSuperFieldPrefix(Send node, FieldElement field, IncDecOperator operator , A arg) {
308 return bulkHandlePrefix(node);
309 }
310
311 @override
312 R visitSuperFieldSetterPrefix(Send node, FieldElement field, FunctionElement s etter, IncDecOperator operator, A arg) {
313 return bulkHandlePrefix(node);
314 }
315
316 @override
317 R visitSuperGetterFieldPrefix(Send node, FunctionElement getter, FieldElement field, IncDecOperator operator, A arg) {
318 return bulkHandlePrefix(node);
319 }
320
321 @override
322 R visitSuperGetterSetterPrefix(Send node, FunctionElement getter, FunctionElem ent setter, IncDecOperator operator, A arg) {
323 return bulkHandlePrefix(node);
324 }
325
326 @override
327 R visitSuperMethodSetterPrefix(Send node, FunctionElement method, FunctionElem ent setter, IncDecOperator operator, A arg) {
328 return bulkHandlePrefix(node);
329 }
330
331 @override
332 R visitThisPropertyPrefix(Send node, IncDecOperator operator, Selector getterS elector, Selector setterSelector, A arg) {
333 return bulkHandlePrefix(node);
334 }
335
336 @override
337 R visitTopLevelFieldPrefix(Send node, FieldElement field, IncDecOperator opera tor, A arg) {
338 return bulkHandlePrefix(node);
339 }
340
341 @override
342 R visitTopLevelGetterSetterPrefix(Send node, FunctionElement getter, FunctionE lement setter, IncDecOperator operator, A arg) {
343 return bulkHandlePrefix(node);
344 }
345
346 @override
347 R visitTopLevelMethodSetterPrefix(Send node, FunctionElement method, FunctionE lement setter, IncDecOperator operator, A arg) {
348 return bulkHandlePrefix(node);
349 }
350
351 @override
352 R visitTypeVariableTypeLiteralPrefix(Send node, TypeVariableElement element, I ncDecOperator operator, A arg) {
353 return bulkHandlePrefix(node);
354 }
355
356 @override
357 R visitTypedefTypeLiteralPrefix(Send node, TypeConstantExpression constant, In cDecOperator operator, A arg) {
358 return bulkHandlePrefix(node);
359 }
360 }
361
362 /// Mixin that implements all `visitXPostfix` methods of [SemanticSendVisitor]
363 /// by delegating to a bulk handler.
364 ///
365 /// Use this mixin to provide a trivial implementation for all `visitXPostfix`
366 /// methods.
367 abstract class PostfixBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
368 R bulkHandleNode(Node node, String message);
369
370 R bulkHandlePostfix(Send node) {
371 return bulkHandleNode(node, "Postfix expression `$node` unhandled.");
372 }
373
374 @override
375 R visitClassTypeLiteralPostfix(Send node, TypeConstantExpression constant,
376 IncDecOperator operator, A arg) {
377 return bulkHandlePostfix(node);
378 }
379
380 @override
381 R visitDynamicPropertyPostfix(Send node, Node receiver,
382 IncDecOperator operator,
383 Selector getterSelector,
384 Selector setterSelector, A arg) {
385 return bulkHandlePostfix(node);
386 }
387
388 @override
389 R visitDynamicTypeLiteralPostfix(Send node,
390 TypeConstantExpression constant,
391 IncDecOperator operator, A arg) {
392 return bulkHandlePostfix(node);
393 }
394
395 @override
396 R visitLocalVariablePostfix(Send node, LocalVariableElement variable, IncDecOp erator operator, A arg) {
397 return bulkHandlePostfix(node);
398 }
399
400 @override
401 R visitParameterPostfix(Send node, ParameterElement parameter, IncDecOperator operator, A arg) {
402 return bulkHandlePostfix(node);
403 }
404
405 @override
406 R visitStaticFieldPostfix(Send node, FieldElement field, IncDecOperator operat or, A arg) {
407 return bulkHandlePostfix(node);
408 }
409
410 @override
411 R visitStaticGetterSetterPostfix(Send node, FunctionElement getter, FunctionEl ement setter, IncDecOperator operator, A arg) {
412 return bulkHandlePostfix(node);
413 }
414
415 @override
416 R visitStaticMethodSetterPostfix(Send node, FunctionElement getter, FunctionEl ement setter, IncDecOperator operator, A arg) {
417 return bulkHandlePostfix(node);
418 }
419
420 @override
421 R visitSuperFieldFieldPostfix(Send node, FieldElement readField, FieldElement writtenField, IncDecOperator operator, A arg) {
422 return bulkHandlePostfix(node);
423 }
424
425 @override
426 R visitSuperFieldPostfix(Send node, FieldElement field, IncDecOperator operato r, A arg) {
427 return bulkHandlePostfix(node);
428 }
429
430 @override
431 R visitSuperFieldSetterPostfix(Send node, FieldElement field, FunctionElement setter, IncDecOperator operator, A arg) {
432 return bulkHandlePostfix(node);
433 }
434
435 @override
436 R visitSuperGetterFieldPostfix(Send node, FunctionElement getter, FieldElement field, IncDecOperator operator, A arg) {
437 return bulkHandlePostfix(node);
438 }
439
440 @override
441 R visitSuperGetterSetterPostfix(Send node, FunctionElement getter, FunctionEle ment setter, IncDecOperator operator, A arg) {
442 return bulkHandlePostfix(node);
443 }
444
445 @override
446 R visitSuperMethodSetterPostfix(Send node, FunctionElement method, FunctionEle ment setter, IncDecOperator operator, A arg) {
447 return bulkHandlePostfix(node);
448 }
449
450 @override
451 R visitThisPropertyPostfix(Send node, IncDecOperator operator, Selector getter Selector, Selector setterSelector, A arg) {
452 return bulkHandlePostfix(node);
453 }
454
455 @override
456 R visitTopLevelFieldPostfix(Send node, FieldElement field, IncDecOperator oper ator, A arg) {
457 return bulkHandlePostfix(node);
458 }
459
460 @override
461 R visitTopLevelGetterSetterPostfix(Send node, FunctionElement getter, Function Element setter, IncDecOperator operator, A arg) {
462 return bulkHandlePostfix(node);
463 }
464
465 @override
466 R visitTopLevelMethodSetterPostfix(Send node, FunctionElement method, Function Element setter, IncDecOperator operator, A arg) {
467 return bulkHandlePostfix(node);
468 }
469
470 @override
471 R visitTypeVariableTypeLiteralPostfix(Send node, TypeVariableElement element, IncDecOperator operator, A arg) {
472 return bulkHandlePostfix(node);
473 }
474
475 @override
476 R visitTypedefTypeLiteralPostfix(Send node, TypeConstantExpression constant, I ncDecOperator operator, A arg) {
477 return bulkHandlePostfix(node);
478 }
479 }
480
481 /// Mixin that implements all `visitXCompound` methods of [SemanticSendVisitor]
482 /// by delegating to a bulk handler.
483 ///
484 /// Use this mixin to provide a trivial implementation for all `xCompound`
485 /// methods.
486 abstract class CompoundBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
487 R bulkHandleNode(Node node, String message);
488
489 R bulkHandleCompound(Send node) {
490 return bulkHandleNode(node, "Compound assignment `$node` unhandled.");
491 }
492
493 @override
494 R visitClassTypeLiteralCompound(Send node, TypeConstantExpression constant, As signmentOperator operator, Node rhs, A arg) {
495 return bulkHandleCompound(node);
496 }
497
498 @override
499 R visitDynamicPropertyCompound(Send node, Node receiver, AssignmentOperator op erator, Node rhs, Selector getterSelector, Selector setterSelector, A arg) {
500 return bulkHandleCompound(node);
501 }
502
503 @override
504 R visitDynamicTypeLiteralCompound(Send node, TypeConstantExpression constant, AssignmentOperator operator, Node rhs, A arg) {
505 return bulkHandleCompound(node);
506 }
507
508 @override
509 R visitLocalVariableCompound(Send node, LocalVariableElement variable, Assignm entOperator operator, Node rhs, A arg) {
510 return bulkHandleCompound(node);
511 }
512
513 @override
514 R visitParameterCompound(Send node, ParameterElement parameter, AssignmentOper ator operator, Node rhs, A arg) {
515 return bulkHandleCompound(node);
516 }
517
518 @override
519 R visitStaticFieldCompound(Send node, FieldElement field, AssignmentOperator o perator, Node rhs, A arg) {
520 return bulkHandleCompound(node);
521 }
522
523 @override
524 R visitStaticGetterSetterCompound(Send node, FunctionElement getter, FunctionE lement setter, AssignmentOperator operator, Node rhs, A arg) {
525 return bulkHandleCompound(node);
526 }
527
528 @override
529 R visitStaticMethodSetterCompound(Send node, FunctionElement method, FunctionE lement setter, AssignmentOperator operator, Node rhs, A arg) {
530 return bulkHandleCompound(node);
531 }
532
533 @override
534 R visitSuperFieldCompound(Send node, FieldElement field, AssignmentOperator op erator, Node rhs, A arg) {
535 return bulkHandleCompound(node);
536 }
537
538 @override
539 R visitSuperFieldSetterCompound(Send node, FieldElement field, FunctionElement setter, AssignmentOperator operator, Node rhs, A arg) {
540 return bulkHandleCompound(node);
541 }
542
543 @override
544 R visitSuperGetterFieldCompound(Send node, FunctionElement getter, FieldElemen t field, AssignmentOperator operator, Node rhs, A arg) {
545 return bulkHandleCompound(node);
546 }
547
548 @override
549 R visitSuperGetterSetterCompound(Send node, FunctionElement getter, FunctionEl ement setter, AssignmentOperator operator, Node rhs, A arg) {
550 return bulkHandleCompound(node);
551 }
552
553 @override
554 R visitSuperMethodSetterCompound(Send node, FunctionElement method, FunctionEl ement setter, AssignmentOperator operator, Node rhs, A arg) {
555 return bulkHandleCompound(node);
556 }
557
558 @override
559 R visitThisPropertyCompound(Send node, AssignmentOperator operator, Node rhs, Selector getterSelector, Selector setterSelector, A arg) {
560 return bulkHandleCompound(node);
561 }
562
563 @override
564 R visitTopLevelFieldCompound(Send node, FieldElement field, AssignmentOperator operator, Node rhs, A arg) {
565 return bulkHandleCompound(node);
566 }
567
568 @override
569 R visitTopLevelGetterSetterCompound(Send node, FunctionElement getter, Functio nElement setter, AssignmentOperator operator, Node rhs, A arg) {
570 return bulkHandleCompound(node);
571 }
572
573 @override
574 R visitTopLevelMethodSetterCompound(Send node, FunctionElement method, Functio nElement setter, AssignmentOperator operator, Node rhs, A arg) {
575 return bulkHandleCompound(node);
576 }
577
578 @override
579 R visitTypeVariableTypeLiteralCompound(Send node, TypeVariableElement element, AssignmentOperator operator, Node rhs, A arg) {
580 return bulkHandleCompound(node);
581 }
582
583 @override
584 R visitTypedefTypeLiteralCompound(Send node, TypeConstantExpression constant, AssignmentOperator operator, Node rhs, A arg) {
585 return bulkHandleCompound(node);
586 }
587 }
588
589 /// Mixin that implements all `visitXInvoke` methods of [SemanticSendVisitor] by
590 /// delegating to a bulk handler.
591 ///
592 /// Use this mixin to provide a trivial implementation for all `visitXInvoke`
593 /// methods.
594 abstract class InvokeBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
595 R bulkHandleNode(Node node, String message);
596
597 R bulkHandleInvoke(Send node) {
598 return bulkHandleNode(node, "Invocation `$node` unhandled.");
599 }
600
601 @override
602 R visitClassTypeLiteralInvoke(Send node, TypeConstantExpression constant, Node List arguments, Selector selector, A arg) {
603 return bulkHandleInvoke(node);
604 }
605
606 @override
607 R visitDynamicPropertyInvoke(Send node, Node receiver, NodeList arguments, Sel ector selector, A arg) {
608 return bulkHandleInvoke(node);
609 }
610
611 @override
612 R visitDynamicTypeLiteralInvoke(Send node, TypeConstantExpression constant, No deList arguments, Selector selector, A arg) {
613 return bulkHandleInvoke(node);
614 }
615
616 @override
617 R visitExpressionInvoke(Send node, Node expression, NodeList arguments, Select or selector, A arg) {
618 return bulkHandleInvoke(node);
619 }
620
621 @override
622 R visitLocalFunctionInvoke(Send node, LocalFunctionElement function, NodeList arguments, Selector selector, A arg) {
623 return bulkHandleInvoke(node);
624 }
625
626 @override
627 R visitLocalVariableInvoke(Send node, LocalVariableElement variable, NodeList arguments, Selector selector, A arg) {
628 return bulkHandleInvoke(node);
629 }
630
631 @override
632 R visitParameterInvoke(Send node, ParameterElement parameter, NodeList argumen ts, Selector selector, A arg) {
633 return bulkHandleInvoke(node);
634 }
635
636 @override
637 R visitStaticFieldInvoke(Send node, FieldElement field, NodeList arguments, Se lector selector, A arg) {
638 return bulkHandleInvoke(node);
639 }
640
641 @override
642 R visitStaticFunctionInvoke(Send node, MethodElement function, NodeList argume nts, Selector selector, A arg) {
643 return bulkHandleInvoke(node);
644 }
645
646 @override
647 R visitStaticGetterInvoke(Send node, FunctionElement getter, NodeList argument s, Selector selector, A arg) {
648 return bulkHandleInvoke(node);
649 }
650
651 @override
652 R visitSuperFieldInvoke(Send node, FieldElement field, NodeList arguments, Sel ector selector, A arg) {
653 return bulkHandleInvoke(node);
654 }
655
656 @override
657 R visitSuperGetterInvoke(Send node, FunctionElement getter, NodeList arguments , Selector selector, A arg) {
658 return bulkHandleInvoke(node);
659 }
660
661 @override
662 R visitSuperMethodInvoke(Send node, MethodElement method, NodeList arguments, Selector selector, A arg) {
663 return bulkHandleInvoke(node);
664 }
665
666 @override
667 R visitThisInvoke(Send node, NodeList arguments, Selector selector, A arg) {
668 return bulkHandleInvoke(node);
669 }
670
671 @override
672 R visitThisPropertyInvoke(Send node, NodeList arguments, Selector selector, A arg) {
673 return bulkHandleInvoke(node);
674 }
675
676 @override
677 R visitTopLevelFieldInvoke(Send node, FieldElement field, NodeList arguments, Selector selector, A arg) {
678 return bulkHandleInvoke(node);
679 }
680
681 @override
682 R visitTopLevelFunctionInvoke(Send node, MethodElement function, NodeList argu ments, Selector selector, A arg) {
683 return bulkHandleInvoke(node);
684 }
685
686 @override
687 R visitTopLevelGetterInvoke(Send node, FunctionElement getter, NodeList argume nts, Selector selector, A arg) {
688 return bulkHandleInvoke(node);
689 }
690
691 @override
692 R visitTypeVariableTypeLiteralInvoke(Send node, TypeVariableElement element, N odeList arguments, Selector selector, A arg) {
693 return bulkHandleInvoke(node);
694 }
695
696 @override
697 R visitTypedefTypeLiteralInvoke(Send node, TypeConstantExpression constant, No deList arguments, Selector selector, A arg) {
698 return bulkHandleInvoke(node);
699 }
700
701 @override
702 R visitConstantInvoke(
703 Send node,
704 ConstantExpression constant,
705 NodeList arguments,
706 Selector selector,
707 A arg) {
708 return bulkHandleInvoke(node);
709 }
710 }
711
712 /// Mixin that implements all `visitXGet` methods of [SemanticSendVisitor] by
713 /// delegating to a bulk handler.
714 ///
715 /// Use this mixin to provide a trivial implementation for all `visitXGet`
716 /// methods.
717 abstract class GetBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
718 R bulkHandleNode(Node node, String message);
719
720 R bulkHandleGet(Node node) {
721 return bulkHandleNode(node, "Read `$node` unhandled.");
722 }
723
724 @override
725 R visitClassTypeLiteralGet(Send node, TypeConstantExpression constant, A arg) {
726 return bulkHandleGet(node);
727 }
728
729 @override
730 R visitDynamicPropertyGet(Send node, Node receiver, Selector selector, A arg) {
731 return bulkHandleGet(node);
732 }
733
734 @override
735 R visitDynamicTypeLiteralGet(Send node, TypeConstantExpression constant, A arg ) {
736 return bulkHandleGet(node);
737 }
738
739 @override
740 R visitLocalFunctionGet(Send node, LocalFunctionElement function, A arg) {
741 return bulkHandleGet(node);
742 }
743
744 @override
745 R visitLocalVariableGet(Send node, LocalVariableElement variable, A arg) {
746 return bulkHandleGet(node);
747 }
748
749 @override
750 R visitParameterGet(Send node, ParameterElement parameter, A arg) {
751 return bulkHandleGet(node);
752 }
753
754 @override
755 R visitStaticFieldGet(Send node, FieldElement field, A arg) {
756 return bulkHandleGet(node);
757 }
758
759 @override
760 R visitStaticFunctionGet(Send node, MethodElement function, A arg) {
761 return bulkHandleGet(node);
762 }
763
764 @override
765 R visitStaticGetterGet(Send node, FunctionElement getter, A arg) {
766 return bulkHandleGet(node);
767 }
768
769 @override
770 R visitSuperFieldGet(Send node, FieldElement field, A arg) {
771 return bulkHandleGet(node);
772 }
773
774 @override
775 R visitSuperGetterGet(Send node, FunctionElement getter, A arg) {
776 return bulkHandleGet(node);
777 }
778
779 @override
780 R visitSuperMethodGet(Send node, MethodElement method, A arg) {
781 return bulkHandleGet(node);
782 }
783
784 @override
785 R visitThisGet(Identifier node, A arg) {
786 return bulkHandleGet(node);
787 }
788
789 @override
790 R visitThisPropertyGet(Send node, Selector selector, A arg) {
791 return bulkHandleGet(node);
792 }
793
794 @override
795 R visitTopLevelFieldGet(Send node, FieldElement field, A arg) {
796 return bulkHandleGet(node);
797 }
798
799 @override
800 R visitTopLevelFunctionGet(Send node, MethodElement function, A arg) {
801 return bulkHandleGet(node);
802 }
803
804 @override
805 R visitTopLevelGetterGet(Send node, FunctionElement getter, A arg) {
806 return bulkHandleGet(node);
807 }
808
809 @override
810 R visitTypeVariableTypeLiteralGet(Send node, TypeVariableElement element, A ar g) {
811 return bulkHandleGet(node);
812 }
813
814 @override
815 R visitTypedefTypeLiteralGet(Send node, TypeConstantExpression constant, A arg ) {
816 return bulkHandleGet(node);
817 }
818
819 @override
820 R visitConstantGet(
821 Send node,
822 TypeConstantExpression constant,
823 A arg) {
824 return bulkHandleGet(node);
825 }
826 }
827
828 /// Mixin that implements all `visitXSet` methods of [SemanticSendVisitor] by
829 /// delegating to a bulk handler.
830 ///
831 /// Use this mixin to provide a trivial implementation for all `visitXSet`
832 /// methods.
833 abstract class SetBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
834 R bulkHandleNode(Node node, String message);
835
836 R bulkHandleSet(Send node) {
837 return bulkHandleNode(node, "Assignment `$node` unhandled.");
838 }
839
840 @override
841 R visitDynamicPropertySet(SendSet node, Node receiver, Selector selector, Node rhs, A arg) {
842 return bulkHandleSet(node);
843 }
844
845 @override
846 R visitLocalVariableSet(SendSet node, LocalVariableElement variable, Node rhs, A arg) {
847 return bulkHandleSet(node);
848 }
849
850 @override
851 R visitParameterSet(SendSet node, ParameterElement parameter, Node rhs, A arg) {
852 return bulkHandleSet(node);
853 }
854
855 @override
856 R visitStaticFieldSet(SendSet node, FieldElement field, Node rhs, A arg) {
857 return bulkHandleSet(node);
858 }
859
860 @override
861 R visitStaticSetterSet(SendSet node, FunctionElement setter, Node rhs, A arg) {
862 return bulkHandleSet(node);
863 }
864
865 @override
866 R visitSuperFieldSet(SendSet node, FieldElement field, Node rhs, A arg) {
867 return bulkHandleSet(node);
868 }
869
870 @override
871 R visitSuperSetterSet(SendSet node, FunctionElement setter, Node rhs, A arg) {
872 return bulkHandleSet(node);
873 }
874
875 @override
876 R visitThisPropertySet(SendSet node, Selector selector, Node rhs, A arg) {
877 return bulkHandleSet(node);
878 }
879
880 @override
881 R visitTopLevelFieldSet(SendSet node, FieldElement field, Node rhs, A arg) {
882 return bulkHandleSet(node);
883 }
884
885 @override
886 R visitTopLevelSetterSet(SendSet node, FunctionElement setter, Node rhs, A arg ) {
887 return bulkHandleSet(node);
888 }
889 }
890
891 /// Mixin that implements all `visitXIndexSet` methods of [SemanticSendVisitor] by
892 /// delegating to a bulk handler.
893 ///
894 /// Use this mixin to provide a trivial implementation for all `visitXIndexSet`
895 /// methods.
896 abstract class IndexSetBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
897 R bulkHandleNode(Node node, String message);
898
899 R bulkHandleIndexSet(Send node) {
900 return bulkHandleNode(node, "Index set expression `$node` unhandled.");
901 }
902
903 @override
904 R visitCompoundIndexSet(Send node, Node receiver, Node index, AssignmentOperat or operator, Node rhs, A arg) {
905 return bulkHandleIndexSet(node);
906 }
907
908 @override
909 R visitIndexSet(Send node, Node receiver, Node index, Node rhs, A arg) {
910 return bulkHandleIndexSet(node);
911 }
912
913 @override
914 R visitSuperCompoundIndexSet(Send node, FunctionElement getter, FunctionElemen t setter, Node index, AssignmentOperator operator, Node rhs, A arg) {
915 return bulkHandleIndexSet(node);
916 }
917
918 @override
919 R visitSuperIndexSet(Send node, FunctionElement function, Node index, Node rhs , A arg) {
920 return bulkHandleIndexSet(node);
921 }
922 }
923
924 /// Mixin that implements all binary visitor methods in [SemanticSendVisitor] by
925 /// delegating to a bulk handler.
926 ///
927 /// Use this mixin to provide a trivial implementation for all binary visitor
928 /// methods.
929 abstract class BinaryBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
930 R bulkHandleNode(Node node, String message);
931
932 R bulkHandleBinary(Send node) {
933 return bulkHandleNode(node, "Binary expression `$node` unhandled.");
934 }
935
936 @override
937 R visitBinary(Send node, Node left, BinaryOperator operator, Node right, A arg ) {
938 return bulkHandleBinary(node);
939 }
940
941 @override
942 R visitEquals(Send node, Node left, Node right, A arg) {
943 return bulkHandleBinary(node);
944 }
945
946 @override
947 R visitNotEquals(Send node, Node left, Node right, A arg) {
948 return bulkHandleBinary(node);
949 }
950
951 @override
952 R visitSuperBinary(Send node, FunctionElement function, BinaryOperator operato r, Node argument, A arg) {
953 return bulkHandleBinary(node);
954 }
955
956 @override
957 R visitSuperEquals(Send node, FunctionElement function, Node argument, A arg) {
958 return bulkHandleBinary(node);
959 }
960
961 @override
962 R visitSuperNotEquals(Send node, FunctionElement function, Node argument, A ar g) {
963 return bulkHandleBinary(node);
964 }
965 }
966
967 /// Mixin that implements all unary visitor methods in [SemanticSendVisitor] by
968 /// delegating to a bulk handler.
969 ///
970 /// Use this mixin to provide a trivial implementation for all unary visitor
971 /// methods.
972 abstract class UnaryBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
973 R bulkHandleNode(Node node, String message);
974
975 R bulkHandleUnary(Send node) {
976 return bulkHandleNode(node, "Unary expression `$node` unhandled.");
977 }
978
979 @override
980 R visitNot(Send node, Node expression, A arg) {
981 return bulkHandleUnary(node);
982 }
983
984 @override
985 R visitSuperUnary(Send node, UnaryOperator operator,
986 FunctionElement function, A arg) {
987 return bulkHandleUnary(node);
988 }
989
990 @override
991 R visitUnary(Send node, UnaryOperator operator, Node expression, A arg) {
992 return bulkHandleUnary(node);
993 }
994 }
995
996 /// Mixin that implements all purely structural visitor methods in
997 /// [SemanticSendVisitor] by delegating to a bulk handler.
998 ///
999 /// Use this mixin to provide a trivial implementation for all purely structural
1000 /// visitor methods.
1001 abstract class BaseBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
1002 R bulkHandleNode(Node node, String message);
1003
1004 @override
1005 R visitAs(Send node, Node expression, DartType type, A arg) {
1006 return bulkHandleNode(node, 'As cast `$node` unhandled.');
1007 }
1008
1009 @override
1010 R visitAssert(Send node, Node expression, A arg) {
1011 return bulkHandleNode(node, 'Assert `$node` unhandled.');
1012 }
1013
1014 @override
1015 R visitIs(Send node, Node expression, DartType type, A arg) {
1016 return bulkHandleNode(node, 'Is test `$node` unhandled.');
1017 }
1018
1019 @override
1020 R visitIsNot(Send node, Node expression, DartType type, A arg) {
1021 return bulkHandleNode(node, 'Is not test `$node` unhandled.');
1022 }
1023
1024 @override
1025 R visitLogicalAnd(Send node, Node left, Node right, A arg) {
1026 return bulkHandleNode(node, 'Lazy and `$node` unhandled.');
1027 }
1028
1029 @override
1030 R visitLogicalOr(Send node, Node left, Node right, A arg) {
1031 return bulkHandleNode(node, 'Lazy or `$node` unhandled.');
1032 }
1033 }
1034
1035 /// Mixin that implements all visitor methods for `super` calls in
1036 /// [SemanticSendVisitor] by delegating to a bulk handler.
1037 ///
1038 /// Use this mixin to provide a trivial implementation for `super` calls
1039 /// visitor methods.
1040 abstract class SuperBulkMixin<R, A> implements SemanticSendVisitor<R, A> {
1041 R bulkHandleNode(Node node, String message);
1042
1043 R bulkHandleSuper(Send node) {
1044 return bulkHandleNode(node, "Super call `$node` unhandled.");
1045 }
1046
1047 @override
1048 R visitSuperBinary(Send node, FunctionElement function, BinaryOperator operato r, Node argument, A arg) {
1049 return bulkHandleSuper(node);
1050 }
1051
1052 @override
1053 R visitSuperCompoundIndexSet(Send node, FunctionElement getter, FunctionElemen t setter, Node index, AssignmentOperator operator, Node rhs, A arg) {
1054 return bulkHandleSuper(node);
1055 }
1056
1057 @override
1058 R visitSuperEquals(Send node, FunctionElement function, Node argument, A arg) {
1059 return bulkHandleSuper(node);
1060 }
1061
1062 @override
1063 R visitSuperFieldCompound(Send node, FieldElement field, AssignmentOperator op erator, Node rhs, A arg) {
1064 return bulkHandleSuper(node);
1065 }
1066
1067 @override
1068 R visitSuperFieldFieldPostfix(Send node, FieldElement readField, FieldElement writtenField, IncDecOperator operator, A arg) {
1069 return bulkHandleSuper(node);
1070 }
1071
1072 @override
1073 R visitSuperFieldFieldPrefix(Send node, FieldElement readField, FieldElement w rittenField, IncDecOperator operator, A arg) {
1074 return bulkHandleSuper(node);
1075 }
1076
1077 @override
1078 R visitSuperFieldGet(Send node, FieldElement field, A arg) {
1079 return bulkHandleSuper(node);
1080 }
1081
1082 @override
1083 R visitSuperFieldInvoke(Send node, FieldElement field, NodeList arguments, Sel ector selector, A arg) {
1084 return bulkHandleSuper(node);
1085 }
1086
1087 @override
1088 R visitSuperFieldPostfix(Send node, FieldElement field, IncDecOperator operato r, A arg) {
1089 return bulkHandleSuper(node);
1090 }
1091
1092 @override
1093 R visitSuperFieldPrefix(Send node, FieldElement field, IncDecOperator operator , A arg) {
1094 return bulkHandleSuper(node);
1095 }
1096
1097 @override
1098 R visitSuperFieldSet(SendSet node, FieldElement field, Node rhs, A arg) {
1099 return bulkHandleSuper(node);
1100 }
1101
1102 @override
1103 R visitSuperFieldSetterCompound(Send node, FieldElement field, FunctionElement setter, AssignmentOperator operator, Node rhs, A arg) {
1104 return bulkHandleSuper(node);
1105 }
1106
1107 @override
1108 R visitSuperFieldSetterPostfix(Send node, FieldElement field, FunctionElement setter, IncDecOperator operator, A arg) {
1109 return bulkHandleSuper(node);
1110 }
1111
1112 @override
1113 R visitSuperFieldSetterPrefix(Send node, FieldElement field, FunctionElement s etter, IncDecOperator operator, A arg) {
1114 return bulkHandleSuper(node);
1115 }
1116
1117 @override
1118 R visitSuperGetterFieldCompound(Send node, FunctionElement getter, FieldElemen t field, AssignmentOperator operator, Node rhs, A arg) {
1119 return bulkHandleSuper(node);
1120 }
1121
1122 @override
1123 R visitSuperGetterFieldPostfix(Send node, FunctionElement getter, FieldElement field, IncDecOperator operator, A arg) {
1124 return bulkHandleSuper(node);
1125 }
1126
1127 @override
1128 R visitSuperGetterFieldPrefix(Send node, FunctionElement getter, FieldElement field, IncDecOperator operator, A arg) {
1129 return bulkHandleSuper(node);
1130 }
1131
1132 @override
1133 R visitSuperGetterGet(Send node, FunctionElement getter, A arg) {
1134 return bulkHandleSuper(node);
1135 }
1136
1137 @override
1138 R visitSuperGetterInvoke(Send node, FunctionElement getter, NodeList arguments , Selector selector, A arg) {
1139 return bulkHandleSuper(node);
1140 }
1141
1142 @override
1143 R visitSuperGetterSetterCompound(Send node, FunctionElement getter, FunctionEl ement setter, AssignmentOperator operator, Node rhs, A arg) {
1144 return bulkHandleSuper(node);
1145 }
1146
1147 @override
1148 R visitSuperGetterSetterPostfix(Send node, FunctionElement getter, FunctionEle ment setter, IncDecOperator operator, A arg) {
1149 return bulkHandleSuper(node);
1150 }
1151
1152 @override
1153 R visitSuperGetterSetterPrefix(Send node, FunctionElement getter, FunctionElem ent setter, IncDecOperator operator, A arg) {
1154 return bulkHandleSuper(node);
1155 }
1156
1157 @override
1158 R visitSuperIndexSet(Send node, FunctionElement function, Node index, Node rhs , A arg) {
1159 return bulkHandleSuper(node);
1160 }
1161
1162 @override
1163 R visitSuperMethodGet(Send node, MethodElement method, A arg) {
1164 return bulkHandleSuper(node);
1165 }
1166
1167 @override
1168 R visitSuperMethodInvoke(Send node, MethodElement method, NodeList arguments, Selector selector, A arg) {
1169 return bulkHandleSuper(node);
1170 }
1171
1172 @override
1173 R visitSuperMethodSetterCompound(Send node, FunctionElement method, FunctionEl ement setter, AssignmentOperator operator, Node rhs, A arg) {
1174 return bulkHandleSuper(node);
1175 }
1176
1177 @override
1178 R visitSuperMethodSetterPostfix(Send node, FunctionElement method, FunctionEle ment setter, IncDecOperator operator, A arg) {
1179 return bulkHandleSuper(node);
1180 }
1181
1182 @override
1183 R visitSuperMethodSetterPrefix(Send node, FunctionElement method, FunctionElem ent setter, IncDecOperator operator, A arg) {
1184 return bulkHandleSuper(node);
1185 }
1186
1187 @override
1188 R visitSuperNotEquals(Send node, FunctionElement function, Node argument, A ar g) {
1189 return bulkHandleSuper(node);
1190 }
1191
1192 @override
1193 R visitSuperSetterSet(SendSet node, FunctionElement setter, Node rhs, A arg) {
1194 return bulkHandleSuper(node);
1195 }
1196
1197 @override
1198 R visitSuperUnary(Send node, UnaryOperator operator, FunctionElement function, A arg) {
1199 return bulkHandleSuper(node);
1200 }
1201 }
1202
1203 /// Visitor that implements [SemanticSendVisitor] by the use of `BulkX` mixins.
1204 ///
1205 /// This class is useful in itself, but shows how to use the `BulkX` mixins and
1206 /// tests that the union of the `BulkX` mixins implement all `visit` and `error`
1207 /// methods of [SemanticSendVisitor].
1208 class BulkVisitor<R, A> extends SemanticSendVisitor<R, A>
1209 with GetBulkMixin<R, A>,
1210 SetBulkMixin<R, A>,
1211 ErrorBulkMixin<R, A>,
1212 InvokeBulkMixin<R, A>,
1213 IndexSetBulkMixin<R, A>,
1214 CompoundBulkMixin<R, A>,
1215 UnaryBulkMixin<R, A>,
1216 BaseBulkMixin<R, A>,
1217 BinaryBulkMixin<R, A>,
1218 PrefixBulkMixin<R, A>,
1219 PostfixBulkMixin<R, A> {
1220
1221 @override
1222 R apply(Node node, A arg) {
1223 throw new UnimplementedError("BulkVisitor.apply unimplemented");
1224 }
1225
1226 @override
1227 R bulkHandleNode(Node node, String message) {
1228 throw new UnimplementedError("BulkVisitor.bulkHandleNode unimplemented");
1229 }
1230 }
1231
1232 /// [SemanticSendVisitor] that visits subnodes.
1233 class TraversalMixin<R, A> implements SemanticSendVisitor<R, A> {
1234 @override
1235 R apply(Node node, A arg) {
1236 throw new UnimplementedError("TraversalMixin.apply unimplemented");
1237 }
1238
1239 @override
1240 R errorInvalidAssert(Send node, NodeList arguments, A arg) {
1241 apply(arguments, arg);
1242 return null;
1243 }
1244
1245 @override
1246 R errorClassTypeLiteralSet(SendSet node, TypeConstantExpression constant, Node rhs, A arg) {
1247 apply(rhs, arg);
1248 return null;
1249 }
1250
1251 @override
1252 R errorDynamicTypeLiteralSet(SendSet node, TypeConstantExpression constant, No de rhs, A arg) {
1253 apply(rhs, arg);
1254 return null;
1255 }
1256
1257 @override
1258 R errorFinalLocalVariableCompound(Send node, LocalVariableElement variable, As signmentOperator operator, Node rhs, A arg) {
1259 apply(rhs, arg);
1260 return null;
1261 }
1262
1263 @override
1264 R errorFinalLocalVariableSet(SendSet node, LocalVariableElement variable, Node rhs, A arg) {
1265 apply(rhs, arg);
1266 return null;
1267 }
1268
1269 @override
1270 R errorFinalParameterCompound(Send node, ParameterElement parameter, Assignmen tOperator operator, Node rhs, A arg) {
1271 apply(rhs, arg);
1272 return null;
1273 }
1274
1275 @override
1276 R errorFinalParameterSet(SendSet node, ParameterElement parameter, Node rhs, A arg) {
1277 apply(rhs, arg);
1278 return null;
1279 }
1280
1281 @override
1282 R errorFinalStaticFieldCompound(Send node, FieldElement field, AssignmentOpera tor operator, Node rhs, A arg) {
1283 apply(rhs, arg);
1284 return null;
1285 }
1286
1287 @override
1288 R errorFinalStaticFieldSet(SendSet node, FieldElement field, Node rhs, A arg) {
1289 apply(rhs, arg);
1290 return null;
1291 }
1292
1293 @override
1294 R errorFinalSuperFieldCompound(Send node, FieldElement field, AssignmentOperat or operator, Node rhs, A arg) {
1295 apply(rhs, arg);
1296 return null;
1297 }
1298
1299 @override
1300 R errorFinalSuperFieldSet(SendSet node, FieldElement field, Node rhs, A arg) {
1301 apply(rhs, arg);
1302 return null;
1303 }
1304
1305 @override
1306 R errorFinalTopLevelFieldCompound(Send node, FieldElement field, AssignmentOpe rator operator, Node rhs, A arg) {
1307 apply(rhs, arg);
1308 return null;
1309 }
1310
1311 @override
1312 R errorFinalTopLevelFieldSet(SendSet node, FieldElement field, Node rhs, A arg ) {
1313 apply(rhs, arg);
1314 return null;
1315 }
1316
1317 @override
1318 R errorLocalFunctionCompound(Send node, LocalFunctionElement function, Assignm entOperator operator, Node rhs, A arg) {
1319 apply(rhs, arg);
1320 return null;
1321 }
1322
1323 @override
1324 R errorLocalFunctionPostfix(Send node, LocalFunctionElement function, IncDecOp erator operator, A arg) {
1325 return null;
1326 }
1327
1328 @override
1329 R errorLocalFunctionPrefix(Send node, LocalFunctionElement function, IncDecOpe rator operator, A arg) {
1330 return null;
1331 }
1332
1333 @override
1334 R errorLocalFunctionSet(SendSet node, LocalFunctionElement function, Node rhs, A arg) {
1335 apply(rhs, arg);
1336 return null;
1337 }
1338
1339 @override
1340 R errorStaticFunctionSet(Send node, MethodElement function, Node rhs, A arg) {
1341 apply(rhs, arg);
1342 return null;
1343 }
1344
1345 @override
1346 R errorStaticGetterSet(SendSet node, FunctionElement getter, Node rhs, A arg) {
1347 apply(rhs, arg);
1348 return null;
1349 }
1350
1351 @override
1352 R errorStaticSetterGet(Send node, FunctionElement setter, A arg) {
1353 return null;
1354 }
1355
1356 @override
1357 R errorStaticSetterInvoke(Send node, FunctionElement setter, NodeList argument s, Selector selector, A arg) {
1358 apply(arguments, arg);
1359 return null;
1360 }
1361
1362 @override
1363 R errorSuperGetterSet(SendSet node, FunctionElement getter, Node rhs, A arg) {
1364 apply(rhs, arg);
1365 return null;
1366 }
1367
1368 @override
1369 R errorSuperMethodSet(Send node, MethodElement method, Node rhs, A arg) {
1370 apply(rhs, arg);
1371 return null;
1372 }
1373
1374 @override
1375 R errorSuperSetterGet(Send node, FunctionElement setter, A arg) {
1376 return null;
1377 }
1378
1379 @override
1380 R errorSuperSetterInvoke(Send node, FunctionElement setter, NodeList arguments , Selector selector, A arg) {
1381 apply(arguments, arg);
1382 return null;
1383 }
1384
1385 @override
1386 R errorTopLevelFunctionSet(Send node, MethodElement function, Node rhs, A arg) {
1387 apply(rhs, arg);
1388 return null;
1389 }
1390
1391 @override
1392 R errorTopLevelGetterSet(SendSet node, FunctionElement getter, Node rhs, A arg ) {
1393 apply(rhs, arg);
1394 return null;
1395 }
1396
1397 @override
1398 R errorTopLevelSetterGet(Send node, FunctionElement setter, A arg) {
1399 return null;
1400 }
1401
1402 @override
1403 R errorTopLevelSetterInvoke(Send node, FunctionElement setter, NodeList argume nts, Selector selector, A arg) {
1404 apply(arguments, arg);
1405 return null;
1406 }
1407
1408 @override
1409 R errorTypeVariableTypeLiteralSet(SendSet node, TypeVariableElement element, N ode rhs, A arg) {
1410 apply(rhs, arg);
1411 return null;
1412 }
1413
1414 @override
1415 R errorTypedefTypeLiteralSet(SendSet node, TypeConstantExpression constant, No de rhs, A arg) {
1416 apply(rhs, arg);
1417 return null;
1418 }
1419
1420 @override
1421 R visitAs(Send node, Node expression, DartType type, A arg) {
1422 apply(expression, arg);
1423 return null;
1424 }
1425
1426 @override
1427 R visitAssert(Send node, Node expression, A arg) {
1428 apply(expression, arg);
1429 return null;
1430 }
1431
1432 @override
1433 R visitBinary(Send node, Node left, BinaryOperator operator, Node right, A arg ) {
1434 apply(left, arg);
1435 apply(right, arg);
1436 return null;
1437 }
1438
1439 @override
1440 R visitClassTypeLiteralCompound(Send node, TypeConstantExpression constant, As signmentOperator operator, Node rhs, A arg) {
1441 apply(rhs, arg);
1442 return null;
1443 }
1444
1445 @override
1446 R visitClassTypeLiteralGet(Send node, TypeConstantExpression constant, A arg) {
1447 return null;
1448 }
1449
1450 @override
1451 R visitClassTypeLiteralInvoke(Send node, TypeConstantExpression constant, Node List arguments, Selector selector, A arg) {
1452 apply(arguments, arg);
1453 return null;
1454 }
1455
1456 @override
1457 R visitClassTypeLiteralPostfix(Send node, TypeConstantExpression constant, Inc DecOperator operator, A arg) {
1458 return null;
1459 }
1460
1461 @override
1462 R visitClassTypeLiteralPrefix(Send node, TypeConstantExpression constant, IncD ecOperator operator, A arg) {
1463 return null;
1464 }
1465
1466 @override
1467 R visitCompoundIndexSet(Send node, Node receiver, Node index, AssignmentOperat or operator, Node rhs, A arg) {
1468 apply(receiver, arg);
1469 apply(index, arg);
1470 apply(rhs, arg);
1471 return null;
1472 }
1473
1474 @override
1475 R visitConstantGet(Send node, ConstantExpression constant, A arg) {
1476 return null;
1477 }
1478
1479 @override
1480 R visitConstantInvoke(Send node, ConstantExpression constant, NodeList argumen ts, Selector selector, A arg) {
1481 apply(arguments, arg);
1482 return null;
1483 }
1484
1485 @override
1486 R visitDynamicPropertyCompound(Send node, Node receiver, AssignmentOperator op erator, Node rhs, Selector getterSelector, Selector setterSelector, A arg) {
1487 apply(receiver, arg);
1488 apply(rhs, arg);
1489 return null;
1490 }
1491
1492 @override
1493 R visitDynamicPropertyGet(Send node, Node receiver, Selector selector, A arg) {
1494 apply(receiver, arg);
1495 return null;
1496 }
1497
1498 @override
1499 R visitDynamicPropertyInvoke(Send node, Node receiver, NodeList arguments, Sel ector selector, A arg) {
1500 apply(receiver, arg);
1501 apply(arguments, arg);
1502 return null;
1503 }
1504
1505 @override
1506 R visitDynamicPropertyPostfix(Send node, Node receiver, IncDecOperator operato r, Selector getterSelector, Selector setterSelector, A arg) {
1507 apply(receiver, arg);
1508 return null;
1509 }
1510
1511 @override
1512 R visitDynamicPropertyPrefix(Send node, Node receiver, IncDecOperator operator , Selector getterSelector, Selector setterSelector, A arg) {
1513 apply(receiver, arg);
1514 return null;
1515 }
1516
1517 @override
1518 R visitDynamicPropertySet(SendSet node, Node receiver, Selector selector, Node rhs, A arg) {
1519 apply(rhs, arg);
1520 return null;
1521 }
1522
1523 @override
1524 R visitDynamicTypeLiteralCompound(Send node, TypeConstantExpression constant, AssignmentOperator operator, Node rhs, A arg) {
1525 apply(rhs, arg);
1526 return null;
1527 }
1528
1529 @override
1530 R visitDynamicTypeLiteralGet(Send node, TypeConstantExpression constant, A arg ) {
1531 return null;
1532 }
1533
1534 @override
1535 R visitDynamicTypeLiteralInvoke(Send node, TypeConstantExpression constant, No deList arguments, Selector selector, A arg) {
1536 apply(arguments, arg);
1537 return null;
1538 }
1539
1540 @override
1541 R visitDynamicTypeLiteralPostfix(Send node, TypeConstantExpression constant, I ncDecOperator operator, A arg) {
1542 return null;
1543 }
1544
1545 @override
1546 R visitDynamicTypeLiteralPrefix(Send node, TypeConstantExpression constant, In cDecOperator operator, A arg) {
1547 return null;
1548 }
1549
1550 @override
1551 R visitEquals(Send node, Node left, Node right, A arg) {
1552 apply(left, arg);
1553 apply(right, arg);
1554 return null;
1555 }
1556
1557 @override
1558 R visitExpressionInvoke(Send node, Node expression, NodeList arguments, Select or selector, A arg) {
1559 apply(expression, arg);
1560 apply(arguments, arg);
1561 return null;
1562 }
1563
1564 @override
1565 R visitIndexSet(Send node, Node receiver, Node index, Node rhs, A arg) {
1566 apply(receiver, arg);
1567 apply(index, arg);
1568 apply(rhs, arg);
1569 return null;
1570 }
1571
1572 @override
1573 R visitIs(Send node, Node expression, DartType type, A arg) {
1574 apply(expression, arg);
1575 return null;
1576 }
1577
1578 @override
1579 R visitIsNot(Send node, Node expression, DartType type, A arg) {
1580 apply(expression, arg);
1581 return null;
1582 }
1583
1584 @override
1585 R visitLocalFunctionGet(Send node, LocalFunctionElement function, A arg) {
1586 return null;
1587 }
1588
1589 @override
1590 R visitLocalFunctionInvoke(Send node, LocalFunctionElement function, NodeList arguments, Selector selector, A arg) {
1591 apply(arguments, arg);
1592 return null;
1593 }
1594
1595 @override
1596 R visitLocalVariableCompound(Send node, LocalVariableElement variable, Assignm entOperator operator, Node rhs, A arg) {
1597 apply(rhs, arg);
1598 return null;
1599 }
1600
1601 @override
1602 R visitLocalVariableGet(Send node, LocalVariableElement variable, A arg) {
1603 return null;
1604 }
1605
1606 @override
1607 R visitLocalVariableInvoke(Send node, LocalVariableElement variable, NodeList arguments, Selector selector, A arg) {
1608 apply(arguments, arg);
1609 return null;
1610 }
1611
1612 @override
1613 R visitLocalVariablePostfix(Send node, LocalVariableElement variable, IncDecOp erator operator, A arg) {
1614 return null;
1615 }
1616
1617 @override
1618 R visitLocalVariablePrefix(Send node, LocalVariableElement variable, IncDecOpe rator operator, A arg) {
1619 return null;
1620 }
1621
1622 @override
1623 R visitLocalVariableSet(SendSet node, LocalVariableElement variable, Node rhs, A arg) {
1624 apply(rhs, arg);
1625 return null;
1626 }
1627
1628 @override
1629 R visitLogicalAnd(Send node, Node left, Node right, A arg) {
1630 apply(left, arg);
1631 apply(right, arg);
1632 return null;
1633 }
1634
1635 @override
1636 R visitLogicalOr(Send node, Node left, Node right, A arg) {
1637 apply(left, arg);
1638 apply(right, arg);
1639 return null;
1640 }
1641
1642 @override
1643 R visitNot(Send node, Node expression, A arg) {
1644 apply(expression, arg);
1645 return null;
1646 }
1647
1648 @override
1649 R visitNotEquals(Send node, Node left, Node right, A arg) {
1650 apply(left, arg);
1651 apply(right, arg);
1652 return null;
1653 }
1654
1655 @override
1656 R visitParameterCompound(Send node, ParameterElement parameter, AssignmentOper ator operator, Node rhs, A arg) {
1657 apply(rhs, arg);
1658 return null;
1659 }
1660
1661 @override
1662 R visitParameterGet(Send node, ParameterElement parameter, A arg) {
1663 return null;
1664 }
1665
1666 @override
1667 R visitParameterInvoke(Send node, ParameterElement parameter, NodeList argumen ts, Selector selector, A arg) {
1668 apply(arguments, arg);
1669 return null;
1670 }
1671
1672 @override
1673 R visitParameterPostfix(Send node, ParameterElement parameter, IncDecOperator operator, A arg) {
1674 return null;
1675 }
1676
1677 @override
1678 R visitParameterPrefix(Send node, ParameterElement parameter, IncDecOperator o perator, A arg) {
1679 return null;
1680 }
1681
1682 @override
1683 R visitParameterSet(SendSet node, ParameterElement parameter, Node rhs, A arg) {
1684 apply(rhs, arg);
1685 return null;
1686 }
1687
1688 @override
1689 R visitStaticFieldCompound(Send node, FieldElement field, AssignmentOperator o perator, Node rhs, A arg) {
1690 apply(rhs, arg);
1691 return null;
1692 }
1693
1694 @override
1695 R visitStaticFieldGet(Send node, FieldElement field, A arg) {
1696 return null;
1697 }
1698
1699 @override
1700 R visitStaticFieldInvoke(Send node, FieldElement field, NodeList arguments, Se lector selector, A arg) {
1701 apply(arguments, arg);
1702 return null;
1703 }
1704
1705 @override
1706 R visitStaticFieldPostfix(Send node, FieldElement field, IncDecOperator operat or, A arg) {
1707 return null;
1708 }
1709
1710 @override
1711 R visitStaticFieldPrefix(Send node, FieldElement field, IncDecOperator operato r, A arg) {
1712 return null;
1713 }
1714
1715 @override
1716 R visitStaticFieldSet(SendSet node, FieldElement field, Node rhs, A arg) {
1717 apply(rhs, arg);
1718 return null;
1719 }
1720
1721 @override
1722 R visitStaticFunctionGet(Send node, MethodElement function, A arg) {
1723 return null;
1724 }
1725
1726 @override
1727 R visitStaticFunctionInvoke(Send node, MethodElement function, NodeList argume nts, Selector selector, A arg) {
1728 apply(arguments, arg);
1729 return null;
1730 }
1731
1732 @override
1733 R visitStaticGetterGet(Send node, FunctionElement getter, A arg) {
1734 return null;
1735 }
1736
1737 @override
1738 R visitStaticGetterInvoke(Send node, FunctionElement getter, NodeList argument s, Selector selector, A arg) {
1739 apply(arguments, arg);
1740 return null;
1741 }
1742
1743 @override
1744 R visitStaticGetterSetterCompound(Send node, FunctionElement getter, FunctionE lement setter, AssignmentOperator operator, Node rhs, A arg) {
1745 apply(rhs, arg);
1746 return null;
1747 }
1748
1749 @override
1750 R visitStaticGetterSetterPostfix(Send node, FunctionElement getter, FunctionEl ement setter, IncDecOperator operator, A arg) {
1751 return null;
1752 }
1753
1754 @override
1755 R visitStaticGetterSetterPrefix(Send node, FunctionElement getter, FunctionEle ment setter, IncDecOperator operator, A arg) {
1756 return null;
1757 }
1758
1759 @override
1760 R visitStaticMethodSetterCompound(Send node, FunctionElement method, FunctionE lement setter, AssignmentOperator operator, Node rhs, A arg) {
1761 apply(rhs, arg);
1762 return null;
1763 }
1764
1765 @override
1766 R visitStaticMethodSetterPostfix(Send node, FunctionElement getter, FunctionEl ement setter, IncDecOperator operator, A arg) {
1767 return null;
1768 }
1769
1770 @override
1771 R visitStaticMethodSetterPrefix(Send node, FunctionElement getter, FunctionEle ment setter, IncDecOperator operator, A arg) {
1772 return null;
1773 }
1774
1775 @override
1776 R visitStaticSetterSet(SendSet node, FunctionElement setter, Node rhs, A arg) {
1777 apply(rhs, arg);
1778 return null;
1779 }
1780
1781 @override
1782 R visitSuperBinary(Send node, FunctionElement function, BinaryOperator operato r, Node argument, A arg) {
1783 apply(argument, arg);
1784 return null;
1785 }
1786
1787 @override
1788 R visitSuperCompoundIndexSet(Send node, FunctionElement getter, FunctionElemen t setter, Node index, AssignmentOperator operator, Node rhs, A arg) {
1789 apply(rhs, arg);
1790 return null;
1791 }
1792
1793 @override
1794 R visitSuperEquals(Send node, FunctionElement function, Node argument, A arg) {
1795 apply(argument, arg);
1796 return null;
1797 }
1798
1799 @override
1800 R visitSuperFieldCompound(Send node, FieldElement field, AssignmentOperator op erator, Node rhs, A arg) {
1801 apply(rhs, arg);
1802 return null;
1803 }
1804
1805 @override
1806 R visitSuperFieldFieldPostfix(Send node, FieldElement readField, FieldElement writtenField, IncDecOperator operator, A arg) {
1807 return null;
1808 }
1809
1810 @override
1811 R visitSuperFieldFieldPrefix(Send node, FieldElement readField, FieldElement w rittenField, IncDecOperator operator, A arg) {
1812 return null;
1813 }
1814
1815 @override
1816 R visitSuperFieldGet(Send node, FieldElement field, A arg) {
1817 return null;
1818 }
1819
1820 @override
1821 R visitSuperFieldInvoke(Send node, FieldElement field, NodeList arguments, Sel ector selector, A arg) {
1822 apply(arguments, arg);
1823 return null;
1824 }
1825
1826 @override
1827 R visitSuperFieldPostfix(Send node, FieldElement field, IncDecOperator operato r, A arg) {
1828 return null;
1829 }
1830
1831 @override
1832 R visitSuperFieldPrefix(Send node, FieldElement field, IncDecOperator operator , A arg) {
1833 return null;
1834 }
1835
1836 @override
1837 R visitSuperFieldSet(SendSet node, FieldElement field, Node rhs, A arg) {
1838 apply(rhs, arg);
1839 return null;
1840 }
1841
1842 @override
1843 R visitSuperFieldSetterCompound(Send node, FieldElement field, FunctionElement setter, AssignmentOperator operator, Node rhs, A arg) {
1844 apply(rhs, arg);
1845 return null;
1846 }
1847
1848 @override
1849 R visitSuperFieldSetterPostfix(Send node, FieldElement field, FunctionElement setter, IncDecOperator operator, A arg) {
1850 return null;
1851 }
1852
1853 @override
1854 R visitSuperFieldSetterPrefix(Send node, FieldElement field, FunctionElement s etter, IncDecOperator operator, A arg) {
1855 return null;
1856 }
1857
1858 @override
1859 R visitSuperGetterFieldCompound(Send node, FunctionElement getter, FieldElemen t field, AssignmentOperator operator, Node rhs, A arg) {
1860 apply(rhs, arg);
1861 return null;
1862 }
1863
1864 @override
1865 R visitSuperGetterFieldPostfix(Send node, FunctionElement getter, FieldElement field, IncDecOperator operator, A arg) {
1866 return null;
1867 }
1868
1869 @override
1870 R visitSuperGetterFieldPrefix(Send node, FunctionElement getter, FieldElement field, IncDecOperator operator, A arg) {
1871 return null;
1872 }
1873
1874 @override
1875 R visitSuperGetterGet(Send node, FunctionElement getter, A arg) {
1876 return null;
1877 }
1878
1879 @override
1880 R visitSuperGetterInvoke(Send node, FunctionElement getter, NodeList arguments , Selector selector, A arg) {
1881 apply(arguments, arg);
1882 return null;
1883 }
1884
1885 @override
1886 R visitSuperGetterSetterCompound(Send node, FunctionElement getter, FunctionEl ement setter, AssignmentOperator operator, Node rhs, A arg) {
1887 apply(rhs, arg);
1888 return null;
1889 }
1890
1891 @override
1892 R visitSuperGetterSetterPostfix(Send node, FunctionElement getter, FunctionEle ment setter, IncDecOperator operator, A arg) {
1893 return null;
1894 }
1895
1896 @override
1897 R visitSuperGetterSetterPrefix(Send node, FunctionElement getter, FunctionElem ent setter, IncDecOperator operator, A arg) {
1898 return null;
1899 }
1900
1901 @override
1902 R visitSuperIndexSet(Send node, FunctionElement function, Node index, Node rhs , A arg) {
1903 apply(index, arg);
1904 apply(rhs, arg);
1905 return null;
1906 }
1907
1908 @override
1909 R visitSuperMethodGet(Send node, MethodElement method, A arg) {
1910 return null;
1911 }
1912
1913 @override
1914 R visitSuperMethodInvoke(Send node, MethodElement method, NodeList arguments, Selector selector, A arg) {
1915 apply(arguments, arg);
1916 return null;
1917 }
1918
1919 @override
1920 R visitSuperMethodSetterCompound(Send node, FunctionElement method, FunctionEl ement setter, AssignmentOperator operator, Node rhs, A arg) {
1921 apply(rhs, arg);
1922 return null;
1923 }
1924
1925 @override
1926 R visitSuperMethodSetterPostfix(Send node, FunctionElement method, FunctionEle ment setter, IncDecOperator operator, A arg) {
1927 return null;
1928 }
1929
1930 @override
1931 R visitSuperMethodSetterPrefix(Send node, FunctionElement method, FunctionElem ent setter, IncDecOperator operator, A arg) {
1932 return null;
1933 }
1934
1935 @override
1936 R visitSuperNotEquals(Send node, FunctionElement function, Node argument, A ar g) {
1937 apply(argument, arg);
1938 return null;
1939 }
1940
1941 @override
1942 R visitSuperSetterSet(SendSet node, FunctionElement setter, Node rhs, A arg) {
1943 apply(rhs, arg);
1944 return null;
1945 }
1946
1947 @override
1948 R visitSuperUnary(Send node, UnaryOperator operator, FunctionElement function, A arg) {
1949 return null;
1950 }
1951
1952 @override
1953 R visitThisGet(Identifier node, A arg) {
1954 return null;
1955 }
1956
1957 @override
1958 R visitThisInvoke(Send node, NodeList arguments, Selector selector, A arg) {
1959 apply(arguments, arg);
1960 return null;
1961 }
1962
1963 @override
1964 R visitThisPropertyCompound(Send node, AssignmentOperator operator, Node rhs, Selector getterSelector, Selector setterSelector, A arg) {
1965 apply(rhs, arg);
1966 return null;
1967 }
1968
1969 @override
1970 R visitThisPropertyGet(Send node, Selector selector, A arg) {
1971 return null;
1972 }
1973
1974 @override
1975 R visitThisPropertyInvoke(Send node, NodeList arguments, Selector selector, A arg) {
1976 apply(arguments, arg);
1977 return null;
1978 }
1979
1980 @override
1981 R visitThisPropertyPostfix(Send node, IncDecOperator operator, Selector getter Selector, Selector setterSelector, A arg) {
1982 return null;
1983 }
1984
1985 @override
1986 R visitThisPropertyPrefix(Send node, IncDecOperator operator, Selector getterS elector, Selector setterSelector, A arg) {
1987 return null;
1988 }
1989
1990 @override
1991 R visitThisPropertySet(SendSet node, Selector selector, Node rhs, A arg) {
1992 apply(rhs, arg);
1993 return null;
1994 }
1995
1996 @override
1997 R visitTopLevelFieldCompound(Send node, FieldElement field, AssignmentOperator operator, Node rhs, A arg) {
1998 apply(rhs, arg);
1999 return null;
2000 }
2001
2002 @override
2003 R visitTopLevelFieldGet(Send node, FieldElement field, A arg) {
2004 return null;
2005 }
2006
2007 @override
2008 R visitTopLevelFieldInvoke(Send node, FieldElement field, NodeList arguments, Selector selector, A arg) {
2009 apply(arguments, arg);
2010 return null;
2011 }
2012
2013 @override
2014 R visitTopLevelFieldPostfix(Send node, FieldElement field, IncDecOperator oper ator, A arg) {
2015 return null;
2016 }
2017
2018 @override
2019 R visitTopLevelFieldPrefix(Send node, FieldElement field, IncDecOperator opera tor, A arg) {
2020 return null;
2021 }
2022
2023 @override
2024 R visitTopLevelFieldSet(SendSet node, FieldElement field, Node rhs, A arg) {
2025 apply(rhs, arg);
2026 return null;
2027 }
2028
2029 @override
2030 R visitTopLevelFunctionGet(Send node, MethodElement function, A arg) {
2031 return null;
2032 }
2033
2034 @override
2035 R visitTopLevelFunctionInvoke(Send node, MethodElement function, NodeList argu ments, Selector selector, A arg) {
2036 apply(arguments, arg);
2037 return null;
2038 }
2039
2040 @override
2041 R visitTopLevelGetterGet(Send node, FunctionElement getter, A arg) {
2042 return null;
2043 }
2044
2045 @override
2046 R visitTopLevelGetterInvoke(Send node, FunctionElement getter, NodeList argume nts, Selector selector, A arg) {
2047 apply(arguments, arg);
2048 return null;
2049 }
2050
2051 @override
2052 R visitTopLevelGetterSetterCompound(Send node, FunctionElement getter, Functio nElement setter, AssignmentOperator operator, Node rhs, A arg) {
2053 apply(rhs, arg);
2054 return null;
2055 }
2056
2057 @override
2058 R visitTopLevelGetterSetterPostfix(Send node, FunctionElement getter, Function Element setter, IncDecOperator operator, A arg) {
2059 return null;
2060 }
2061
2062 @override
2063 R visitTopLevelGetterSetterPrefix(Send node, FunctionElement getter, FunctionE lement setter, IncDecOperator operator, A arg) {
2064 return null;
2065 }
2066
2067 @override
2068 R visitTopLevelMethodSetterCompound(Send node, FunctionElement method, Functio nElement setter, AssignmentOperator operator, Node rhs, A arg) {
2069 apply(rhs, arg);
2070 return null;
2071 }
2072
2073 @override
2074 R visitTopLevelMethodSetterPostfix(Send node, FunctionElement method, Function Element setter, IncDecOperator operator, A arg) {
2075 return null;
2076 }
2077
2078 @override
2079 R visitTopLevelMethodSetterPrefix(Send node, FunctionElement method, FunctionE lement setter, IncDecOperator operator, A arg) {
2080 return null;
2081 }
2082
2083 @override
2084 R visitTopLevelSetterSet(SendSet node, FunctionElement setter, Node rhs, A arg ) {
2085 apply(rhs, arg);
2086 return null;
2087 }
2088
2089 @override
2090 R visitTypeVariableTypeLiteralCompound(Send node, TypeVariableElement element, AssignmentOperator operator, Node rhs, A arg) {
2091 apply(rhs, arg);
2092 return null;
2093 }
2094
2095 @override
2096 R visitTypeVariableTypeLiteralGet(Send node, TypeVariableElement element, A ar g) {
2097 return null;
2098 }
2099
2100 @override
2101 R visitTypeVariableTypeLiteralInvoke(Send node, TypeVariableElement element, N odeList arguments, Selector selector, A arg) {
2102 apply(arguments, arg);
2103 return null;
2104 }
2105
2106 @override
2107 R visitTypeVariableTypeLiteralPostfix(Send node, TypeVariableElement element, IncDecOperator operator, A arg) {
2108 return null;
2109 }
2110
2111 @override
2112 R visitTypeVariableTypeLiteralPrefix(Send node, TypeVariableElement element, I ncDecOperator operator, A arg) {
2113 return null;
2114 }
2115
2116 @override
2117 R visitTypedefTypeLiteralCompound(Send node, TypeConstantExpression constant, AssignmentOperator operator, Node rhs, A arg) {
2118 apply(rhs, arg);
2119 return null;
2120 }
2121
2122 @override
2123 R visitTypedefTypeLiteralGet(Send node, TypeConstantExpression constant, A arg ) {
2124 return null;
2125 }
2126
2127 @override
2128 R visitTypedefTypeLiteralInvoke(Send node, TypeConstantExpression constant, No deList arguments, Selector selector, A arg) {
2129 apply(arguments, arg);
2130 return null;
2131 }
2132
2133 @override
2134 R visitTypedefTypeLiteralPostfix(Send node, TypeConstantExpression constant, I ncDecOperator operator, A arg) {
2135 return null;
2136 }
2137
2138 @override
2139 R visitTypedefTypeLiteralPrefix(Send node, TypeConstantExpression constant, In cDecOperator operator, A arg) {
2140 return null;
2141 }
2142
2143 @override
2144 R visitUnary(Send node, UnaryOperator operator, Node expression, A arg) {
2145 apply(expression, arg);
2146 return null;
2147 }
2148
2149 @override
2150 R errorUnresolvedCompound(Send node, Element element, AssignmentOperator opera tor, Node rhs, A arg) {
2151 apply(rhs, arg);
2152 return null;
2153 }
2154
2155 @override
2156 R errorUnresolvedGet(Send node, Element element, A arg) {
2157 return null;
2158 }
2159
2160 @override
2161 R errorUnresolvedInvoke(Send node, Element element, NodeList arguments, Select or selector, A arg) {
2162 apply(arguments, arg);
2163 return null;
2164 }
2165
2166 @override
2167 R errorUnresolvedPostfix(Send node, Element element, IncDecOperator operator, A arg) {
2168 return null;
2169 }
2170
2171 @override
2172 R errorUnresolvedPrefix(Send node, Element element, IncDecOperator operator, A arg) {
2173 return null;
2174 }
2175
2176 @override
2177 R errorUnresolvedSet(Send node, Element element, Node rhs, A arg) {
2178 apply(rhs, arg);
2179 return null;
2180 }
2181
2182 @override
2183 R errorUndefinedBinaryExpression(Send node, Node left, Operator operator, Node right, A arg) {
2184 apply(left, arg);
2185 apply(right, arg);
2186 return null;
2187 }
2188
2189 @override
2190 R errorUndefinedUnaryExpression(Send node, Operator operator, Node expression, A arg) {
2191 apply(expression, arg);
2192 return null;
2193 }
2194
2195 @override
2196 R errorUnresolvedSuperIndexSet(Send node, Element element, Node index, Node rh s, A arg) {
2197 apply(index, arg);
2198 apply(rhs, arg);
2199 return null;
2200 }
2201
2202 @override
2203 R errorUnresolvedSuperCompoundIndexSet(Send node, Element element, Node index, AssignmentOperator operator, Node rhs, A arg) {
2204 apply(index, arg);
2205 apply(rhs, arg);
2206 return null;
2207 }
2208
2209 @override
2210 R errorUnresolvedSuperBinary(Send node, Element element, BinaryOperator operat or, Node argument, A arg) {
2211 apply(argument, arg);
2212 return null;
2213 }
2214
2215 @override
2216 R errorUnresolvedSuperUnary(Send node, UnaryOperator operator, Element element , A arg) {
2217 return null;
2218 }
2219 }
2220
2221 /// AST visitor that visits all normal [Send] and [SendSet] nodes using the
2222 /// [SemanticVisitor].
2223 class TraversalVisitor<R, A> extends SemanticVisitor<R, A>
2224 with TraversalMixin<R, A> {
2225 TraversalVisitor(TreeElements elements) : super(elements);
2226
2227 SemanticSendVisitor<R, A> get sendVisitor => this;
2228
2229 R apply(Node node, A arg) {
2230 node.accept(this);
2231 return null;
2232 }
2233
2234 @override
2235 internalError(Spannable spannable, String message) {
2236 throw new SpannableAssertionFailure(spannable, message);
2237 }
2238
2239 @override
2240 R visitNode(Node node) {
2241 node.visitChildren(this);
2242 return null;
2243 }
2244
2245 @override
2246 R visitNewExpression(NewExpression node) {
2247 // Bypass the [Send] holding the class/constructor name.
2248 return apply(node.send.argumentsNode, null);
2249 }
2250
2251 void visitParameters(NodeList parameters) {
2252
2253 }
2254
2255 void visitInitializers(NodeList initializers) {
2256 // TODO(johnniwinther): Visit subnodes of initializers.
2257 }
2258
2259 @override
2260 R visitFunctionExpression(FunctionExpression node) {
2261 if (node.parameters != null) {
2262 visitParameters(node.parameters);
2263 }
2264 if (node.initializers != null) {
2265 visitInitializers(node.initializers);
2266 }
2267 if (node.body != null) {
2268 apply(node.body, null);
2269 }
2270 return null;
2271 }
2272 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698