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

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

Issue 1262363003: Handle super index SendSet operations. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments. Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library dart2js.semantics_visitor; 5 library dart2js.semantics_visitor;
6 6
7 import '../constants/expressions.dart'; 7 import '../constants/expressions.dart';
8 import '../dart2jslib.dart' show invariant, MessageKind; 8 import '../dart2jslib.dart' show invariant, MessageKind;
9 import '../dart_types.dart'; 9 import '../dart_types.dart';
10 import '../elements/elements.dart'; 10 import '../elements/elements.dart';
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 } 134 }
135 135
136 // TODO(johnniwinther): Add visits for [visitLocalConstantGet], 136 // TODO(johnniwinther): Add visits for [visitLocalConstantGet],
137 // [visitLocalConstantInvoke], [visitStaticConstantGet], etc. 137 // [visitLocalConstantInvoke], [visitStaticConstantGet], etc.
138 abstract class SemanticSendVisitor<R, A> { 138 abstract class SemanticSendVisitor<R, A> {
139 R apply(Node node, A arg); 139 R apply(Node node, A arg);
140 140
141 /// Read of the [parameter]. 141 /// Read of the [parameter].
142 /// 142 ///
143 /// For instance: 143 /// For instance:
144 ///
144 /// m(parameter) => parameter; 145 /// m(parameter) => parameter;
145 /// 146 ///
146 R visitParameterGet( 147 R visitParameterGet(
147 Send node, 148 Send node,
148 ParameterElement parameter, 149 ParameterElement parameter,
149 A arg); 150 A arg);
150 151
151 /// Assignment of [rhs] to the [parameter]. 152 /// Assignment of [rhs] to the [parameter].
152 /// 153 ///
153 /// For instance: 154 /// For instance:
155 ///
154 /// m(parameter) { 156 /// m(parameter) {
155 /// parameter = rhs; 157 /// parameter = rhs;
156 /// } 158 /// }
157 /// 159 ///
158 R visitParameterSet( 160 R visitParameterSet(
159 SendSet node, 161 SendSet node,
160 ParameterElement parameter, 162 ParameterElement parameter,
161 Node rhs, 163 Node rhs,
162 A arg); 164 A arg);
163 165
164 /// Assignment of [rhs] to the final [parameter]. 166 /// Assignment of [rhs] to the final [parameter].
165 /// 167 ///
166 /// For instance: 168 /// For instance:
169 ///
167 /// m(final parameter) { 170 /// m(final parameter) {
168 /// parameter = rhs; 171 /// parameter = rhs;
169 /// } 172 /// }
170 /// 173 ///
171 R visitFinalParameterSet( 174 R visitFinalParameterSet(
172 SendSet node, 175 SendSet node,
173 ParameterElement parameter, 176 ParameterElement parameter,
174 Node rhs, 177 Node rhs,
175 A arg); 178 A arg);
176 179
177 /// Invocation of the [parameter] with [arguments]. 180 /// Invocation of the [parameter] with [arguments].
178 /// 181 ///
179 /// For instance: 182 /// For instance:
183 ///
180 /// m(parameter) { 184 /// m(parameter) {
181 /// parameter(null, 42); 185 /// parameter(null, 42);
182 /// } 186 /// }
183 /// 187 ///
184 R visitParameterInvoke( 188 R visitParameterInvoke(
185 Send node, 189 Send node,
186 ParameterElement parameter, 190 ParameterElement parameter,
187 NodeList arguments, 191 NodeList arguments,
188 CallStructure callStructure, 192 CallStructure callStructure,
189 A arg); 193 A arg);
190 194
191 /// Read of the local [variable]. 195 /// Read of the local [variable].
192 /// 196 ///
193 /// For instance: 197 /// For instance:
198 ///
194 /// m() { 199 /// m() {
195 /// var variable; 200 /// var variable;
196 /// return variable; 201 /// return variable;
197 /// } 202 /// }
198 /// 203 ///
199 R visitLocalVariableGet( 204 R visitLocalVariableGet(
200 Send node, 205 Send node,
201 LocalVariableElement variable, 206 LocalVariableElement variable,
202 A arg); 207 A arg);
203 208
204 /// Assignment of [rhs] to the local [variable]. 209 /// Assignment of [rhs] to the local [variable].
205 /// 210 ///
206 /// For instance: 211 /// For instance:
212 ///
207 /// m() { 213 /// m() {
208 /// var variable; 214 /// var variable;
209 /// variable = rhs; 215 /// variable = rhs;
210 /// } 216 /// }
211 /// 217 ///
212 R visitLocalVariableSet( 218 R visitLocalVariableSet(
213 SendSet node, 219 SendSet node,
214 LocalVariableElement variable, 220 LocalVariableElement variable,
215 Node rhs, 221 Node rhs,
216 A arg); 222 A arg);
217 223
218 /// Assignment of [rhs] to the final local [variable]. 224 /// Assignment of [rhs] to the final local [variable].
219 /// 225 ///
220 /// For instance: 226 /// For instance:
227 ///
221 /// m() { 228 /// m() {
222 /// final variable = null; 229 /// final variable = null;
223 /// variable = rhs; 230 /// variable = rhs;
224 /// } 231 /// }
225 /// 232 ///
226 R visitFinalLocalVariableSet( 233 R visitFinalLocalVariableSet(
227 SendSet node, 234 SendSet node,
228 LocalVariableElement variable, 235 LocalVariableElement variable,
229 Node rhs, 236 Node rhs,
230 A arg); 237 A arg);
231 238
232 /// Invocation of the local variable [variable] with [arguments]. 239 /// Invocation of the local variable [variable] with [arguments].
233 /// 240 ///
234 /// For instance: 241 /// For instance:
242 ///
235 /// m() { 243 /// m() {
236 /// var variable; 244 /// var variable;
237 /// variable(null, 42); 245 /// variable(null, 42);
238 /// } 246 /// }
239 /// 247 ///
240 R visitLocalVariableInvoke( 248 R visitLocalVariableInvoke(
241 Send node, 249 Send node,
242 LocalVariableElement variable, 250 LocalVariableElement variable,
243 NodeList arguments, 251 NodeList arguments,
244 CallStructure callStructure, 252 CallStructure callStructure,
245 A arg); 253 A arg);
246 254
247 /// Closurization of the local [function]. 255 /// Closurization of the local [function].
248 /// 256 ///
249 /// For instance: 257 /// For instance:
258 ///
250 /// m() { 259 /// m() {
251 /// o(a, b) {} 260 /// o(a, b) {}
252 /// return o; 261 /// return o;
253 /// } 262 /// }
254 /// 263 ///
255 R visitLocalFunctionGet( 264 R visitLocalFunctionGet(
256 Send node, 265 Send node,
257 LocalFunctionElement function, 266 LocalFunctionElement function,
258 A arg); 267 A arg);
259 268
260 /// Assignment of [rhs] to the local [function]. 269 /// Assignment of [rhs] to the local [function].
261 /// 270 ///
262 /// For instance: 271 /// For instance:
272 ///
263 /// m() { 273 /// m() {
264 /// o(a, b) {} 274 /// o(a, b) {}
265 /// o = rhs; 275 /// o = rhs;
266 /// } 276 /// }
267 /// 277 ///
268 R visitLocalFunctionSet( 278 R visitLocalFunctionSet(
269 SendSet node, 279 SendSet node,
270 LocalFunctionElement function, 280 LocalFunctionElement function,
271 Node rhs, 281 Node rhs,
272 A arg); 282 A arg);
273 283
274 /// Invocation of the local [function] with [arguments]. 284 /// Invocation of the local [function] with [arguments].
275 /// 285 ///
276 /// For instance: 286 /// For instance:
287 ///
277 /// m() { 288 /// m() {
278 /// o(a, b) {} 289 /// o(a, b) {}
279 /// return o(null, 42); 290 /// return o(null, 42);
280 /// } 291 /// }
281 /// 292 ///
282 R visitLocalFunctionInvoke( 293 R visitLocalFunctionInvoke(
283 Send node, 294 Send node,
284 LocalFunctionElement function, 295 LocalFunctionElement function,
285 NodeList arguments, 296 NodeList arguments,
286 CallStructure callStructure, 297 CallStructure callStructure,
287 A arg); 298 A arg);
288 299
289 /// Invocation of the local [function] with incompatible [arguments]. 300 /// Invocation of the local [function] with incompatible [arguments].
290 /// 301 ///
291 /// For instance: 302 /// For instance:
303 ///
292 /// m() { 304 /// m() {
293 /// o(a) {} 305 /// o(a) {}
294 /// return o(null, 42); 306 /// return o(null, 42);
295 /// } 307 /// }
296 /// 308 ///
297 R visitLocalFunctionIncompatibleInvoke( 309 R visitLocalFunctionIncompatibleInvoke(
298 Send node, 310 Send node,
299 LocalFunctionElement function, 311 LocalFunctionElement function,
300 NodeList arguments, 312 NodeList arguments,
301 CallStructure callStructure, 313 CallStructure callStructure,
302 A arg); 314 A arg);
303 315
304 /// Getter call on [receiver] of the property defined by [selector]. 316 /// Getter call on [receiver] of the property defined by [selector].
305 /// 317 ///
306 /// For instance 318 /// For instance:
319 ///
307 /// m(receiver) => receiver.foo; 320 /// m(receiver) => receiver.foo;
308 /// 321 ///
309 R visitDynamicPropertyGet( 322 R visitDynamicPropertyGet(
310 Send node, 323 Send node,
311 Node receiver, 324 Node receiver,
312 Selector selector, 325 Selector selector,
313 A arg); 326 A arg);
314 327
315 /// Conditional (if not null) getter call on [receiver] of the property 328 /// Conditional (if not null) getter call on [receiver] of the property
316 /// defined by [selector]. 329 /// defined by [selector].
317 /// 330 ///
318 /// For instance 331 /// For instance:
332 ///
319 /// m(receiver) => receiver?.foo; 333 /// m(receiver) => receiver?.foo;
320 /// 334 ///
321 R visitIfNotNullDynamicPropertyGet( 335 R visitIfNotNullDynamicPropertyGet(
322 Send node, 336 Send node,
323 Node receiver, 337 Node receiver,
324 Selector selector, 338 Selector selector,
325 A arg); 339 A arg);
326 340
327 /// Setter call on [receiver] with argument [rhs] of the property defined by 341 /// Setter call on [receiver] with argument [rhs] of the property defined by
328 /// [selector]. 342 /// [selector].
329 /// 343 ///
330 /// For instance 344 /// For instance:
345 ///
331 /// m(receiver) { 346 /// m(receiver) {
332 /// receiver.foo = rhs; 347 /// receiver.foo = rhs;
333 /// } 348 /// }
334 /// 349 ///
335 R visitDynamicPropertySet( 350 R visitDynamicPropertySet(
336 SendSet node, 351 SendSet node,
337 Node receiver, 352 Node receiver,
338 Selector selector, 353 Selector selector,
339 Node rhs, 354 Node rhs,
340 A arg); 355 A arg);
341 356
342 /// Conditional (if not null) setter call on [receiver] with argument [rhs] of 357 /// Conditional (if not null) setter call on [receiver] with argument [rhs] of
343 /// the property defined by [selector]. 358 /// the property defined by [selector].
344 /// 359 ///
345 /// For instance 360 /// For instance:
361 ///
346 /// m(receiver) { 362 /// m(receiver) {
347 /// receiver?.foo = rhs; 363 /// receiver?.foo = rhs;
348 /// } 364 /// }
349 /// 365 ///
350 R visitIfNotNullDynamicPropertySet( 366 R visitIfNotNullDynamicPropertySet(
351 SendSet node, 367 SendSet node,
352 Node receiver, 368 Node receiver,
353 Selector selector, 369 Selector selector,
354 Node rhs, 370 Node rhs,
355 A arg); 371 A arg);
356 372
357 /// Invocation of the property defined by [selector] on [receiver] with 373 /// Invocation of the property defined by [selector] on [receiver] with
358 /// [arguments]. 374 /// [arguments].
359 /// 375 ///
360 /// For instance 376 /// For instance:
377 ///
361 /// m(receiver) { 378 /// m(receiver) {
362 /// receiver.foo(null, 42); 379 /// receiver.foo(null, 42);
363 /// } 380 /// }
364 /// 381 ///
365 R visitDynamicPropertyInvoke( 382 R visitDynamicPropertyInvoke(
366 Send node, 383 Send node,
367 Node receiver, 384 Node receiver,
368 NodeList arguments, 385 NodeList arguments,
369 Selector selector, 386 Selector selector,
370 A arg); 387 A arg);
371 388
372 /// Conditinal invocation of the property defined by [selector] on [receiver] 389 /// Conditinal invocation of the property defined by [selector] on [receiver]
373 /// with [arguments], if [receiver] is not null. 390 /// with [arguments], if [receiver] is not null.
374 /// 391 ///
375 /// For instance 392 /// For instance:
393 ///
376 /// m(receiver) { 394 /// m(receiver) {
377 /// receiver?.foo(null, 42); 395 /// receiver?.foo(null, 42);
378 /// } 396 /// }
379 /// 397 ///
380 R visitIfNotNullDynamicPropertyInvoke( 398 R visitIfNotNullDynamicPropertyInvoke(
381 Send node, 399 Send node,
382 Node receiver, 400 Node receiver,
383 NodeList arguments, 401 NodeList arguments,
384 Selector selector, 402 Selector selector,
385 A arg); 403 A arg);
386 404
387 /// Getter call on `this` of the property defined by [selector]. 405 /// Getter call on `this` of the property defined by [selector].
388 /// 406 ///
389 /// For instance 407 /// For instance:
408 ///
390 /// class C { 409 /// class C {
391 /// m() => this.foo; 410 /// m() => this.foo;
392 /// } 411 /// }
393 /// 412 ///
394 /// or 413 /// or
395 /// 414 ///
396 /// class C { 415 /// class C {
397 /// m() => foo; 416 /// m() => foo;
398 /// } 417 /// }
399 /// 418 ///
400 R visitThisPropertyGet( 419 R visitThisPropertyGet(
401 Send node, 420 Send node,
402 Selector selector, 421 Selector selector,
403 A arg); 422 A arg);
404 423
405 /// Setter call on `this` with argument [rhs] of the property defined by 424 /// Setter call on `this` with argument [rhs] of the property defined by
406 /// [selector]. 425 /// [selector].
426 ///
427 /// For instance:
428 ///
407 /// class C { 429 /// class C {
408 /// m() { this.foo = rhs; } 430 /// m() { this.foo = rhs; }
409 /// } 431 /// }
410 /// 432 ///
411 /// or 433 /// or
412 /// 434 ///
413 /// class C { 435 /// class C {
414 /// m() { foo = rhs; } 436 /// m() { foo = rhs; }
415 /// } 437 /// }
416 /// 438 ///
417 R visitThisPropertySet( 439 R visitThisPropertySet(
418 SendSet node, 440 SendSet node,
419 Selector selector, 441 Selector selector,
420 Node rhs, 442 Node rhs,
421 A arg); 443 A arg);
422 444
423 /// Invocation of the property defined by [selector] on `this` with 445 /// Invocation of the property defined by [selector] on `this` with
424 /// [arguments]. 446 /// [arguments].
425 /// 447 ///
426 /// For instance 448 /// For instance:
449 ///
427 /// class C { 450 /// class C {
428 /// m() { this.foo(null, 42); } 451 /// m() { this.foo(null, 42); }
429 /// } 452 /// }
430 /// 453 ///
431 /// or 454 /// or
432 /// 455 ///
433 /// class C { 456 /// class C {
434 /// m() { foo(null, 42); } 457 /// m() { foo(null, 42); }
435 /// } 458 /// }
436 /// 459 ///
437 /// 460 ///
438 R visitThisPropertyInvoke( 461 R visitThisPropertyInvoke(
439 Send node, 462 Send node,
440 NodeList arguments, 463 NodeList arguments,
441 Selector selector, 464 Selector selector,
442 A arg); 465 A arg);
443 466
444 /// Read of `this`. 467 /// Read of `this`.
445 /// 468 ///
446 /// For instance 469 /// For instance:
470 ///
447 /// class C { 471 /// class C {
448 /// m() => this; 472 /// m() => this;
449 /// } 473 /// }
450 /// 474 ///
451 R visitThisGet( 475 R visitThisGet(
452 Identifier node, 476 Identifier node,
453 A arg); 477 A arg);
454 478
455 /// Invocation of `this` with [arguments]. 479 /// Invocation of `this` with [arguments].
456 /// 480 ///
457 /// For instance 481 /// For instance:
482 ///
458 /// class C { 483 /// class C {
459 /// m() => this(null, 42); 484 /// m() => this(null, 42);
460 /// } 485 /// }
461 /// 486 ///
462 R visitThisInvoke( 487 R visitThisInvoke(
463 Send node, 488 Send node,
464 NodeList arguments, 489 NodeList arguments,
465 CallStructure callStructure, 490 CallStructure callStructure,
466 A arg); 491 A arg);
467 492
468 493
469 /// Read of the super [field]. 494 /// Read of the super [field].
470 /// 495 ///
471 /// For instance 496 /// For instance:
497 ///
472 /// class B { 498 /// class B {
473 /// var foo; 499 /// var foo;
474 /// } 500 /// }
475 /// class C extends B { 501 /// class C extends B {
476 /// m() => super.foo; 502 /// m() => super.foo;
477 /// } 503 /// }
478 /// 504 ///
479 R visitSuperFieldGet( 505 R visitSuperFieldGet(
480 Send node, 506 Send node,
481 FieldElement field, 507 FieldElement field,
482 A arg); 508 A arg);
483 509
484 /// Assignment of [rhs] to the super [field]. 510 /// Assignment of [rhs] to the super [field].
485 /// 511 ///
486 /// For instance 512 /// For instance:
513 ///
487 /// class B { 514 /// class B {
488 /// var foo; 515 /// var foo;
489 /// } 516 /// }
490 /// class C extends B { 517 /// class C extends B {
491 /// m() { super.foo = rhs; } 518 /// m() { super.foo = rhs; }
492 /// } 519 /// }
493 /// 520 ///
494 R visitSuperFieldSet( 521 R visitSuperFieldSet(
495 SendSet node, 522 SendSet node,
496 FieldElement field, 523 FieldElement field,
497 Node rhs, 524 Node rhs,
498 A arg); 525 A arg);
499 526
500 /// Assignment of [rhs] to the final static [field]. 527 /// Assignment of [rhs] to the final static [field].
501 /// 528 ///
502 /// For instance 529 /// For instance:
530 ///
503 /// class B { 531 /// class B {
504 /// final foo = null; 532 /// final foo = null;
505 /// } 533 /// }
506 /// class C extends B { 534 /// class C extends B {
507 /// m() { super.foo = rhs; } 535 /// m() { super.foo = rhs; }
508 /// } 536 /// }
509 /// 537 ///
510 R visitFinalSuperFieldSet( 538 R visitFinalSuperFieldSet(
511 SendSet node, 539 SendSet node,
512 FieldElement field, 540 FieldElement field,
513 Node rhs, 541 Node rhs,
514 A arg); 542 A arg);
515 543
516 /// Invocation of the super [field] with [arguments]. 544 /// Invocation of the super [field] with [arguments].
517 /// 545 ///
518 /// For instance 546 /// For instance:
547 ///
519 /// class B { 548 /// class B {
520 /// var foo; 549 /// var foo;
521 /// } 550 /// }
522 /// class C extends B { 551 /// class C extends B {
523 /// m() { super.foo(null, 42); } 552 /// m() { super.foo(null, 42); }
524 /// } 553 /// }
525 /// 554 ///
526 R visitSuperFieldInvoke( 555 R visitSuperFieldInvoke(
527 Send node, 556 Send node,
528 FieldElement field, 557 FieldElement field,
529 NodeList arguments, 558 NodeList arguments,
530 CallStructure callStructure, 559 CallStructure callStructure,
531 A arg); 560 A arg);
532 561
533 /// Closurization of the super [method]. 562 /// Closurization of the super [method].
534 /// 563 ///
535 /// For instance 564 /// For instance:
565 ///
536 /// class B { 566 /// class B {
537 /// foo(a, b) {} 567 /// foo(a, b) {}
538 /// } 568 /// }
539 /// class C extends B { 569 /// class C extends B {
540 /// m() => super.foo; 570 /// m() => super.foo;
541 /// } 571 /// }
542 /// 572 ///
543 R visitSuperMethodGet( 573 R visitSuperMethodGet(
544 Send node, 574 Send node,
545 MethodElement method, 575 MethodElement method,
546 A arg); 576 A arg);
547 577
548 /// Invocation of the super [method] with [arguments]. 578 /// Invocation of the super [method] with [arguments].
549 /// 579 ///
550 /// For instance 580 /// For instance:
581 ///
551 /// class B { 582 /// class B {
552 /// foo(a, b) {} 583 /// foo(a, b) {}
553 /// } 584 /// }
554 /// class C extends B { 585 /// class C extends B {
555 /// m() { super.foo(null, 42); } 586 /// m() { super.foo(null, 42); }
556 /// } 587 /// }
557 /// 588 ///
558 R visitSuperMethodInvoke( 589 R visitSuperMethodInvoke(
559 Send node, 590 Send node,
560 MethodElement method, 591 MethodElement method,
561 NodeList arguments, 592 NodeList arguments,
562 CallStructure callStructure, 593 CallStructure callStructure,
563 A arg); 594 A arg);
564 595
565 /// Invocation of the super [method] with incompatible [arguments]. 596 /// Invocation of the super [method] with incompatible [arguments].
566 /// 597 ///
567 /// For instance 598 /// For instance:
599 ///
568 /// class B { 600 /// class B {
569 /// foo(a, b) {} 601 /// foo(a, b) {}
570 /// } 602 /// }
571 /// class C extends B { 603 /// class C extends B {
572 /// m() { super.foo(null); } // One argument missing. 604 /// m() { super.foo(null); } // One argument missing.
573 /// } 605 /// }
574 /// 606 ///
575 R visitSuperMethodIncompatibleInvoke( 607 R visitSuperMethodIncompatibleInvoke(
576 Send node, 608 Send node,
577 MethodElement method, 609 MethodElement method,
578 NodeList arguments, 610 NodeList arguments,
579 CallStructure callStructure, 611 CallStructure callStructure,
580 A arg); 612 A arg);
581 613
582 /// Assignment of [rhs] to the super [method]. 614 /// Assignment of [rhs] to the super [method].
583 /// 615 ///
584 /// For instance 616 /// For instance:
617 ///
585 /// class B { 618 /// class B {
586 /// foo(a, b) {} 619 /// foo(a, b) {}
587 /// } 620 /// }
588 /// class C extends B { 621 /// class C extends B {
589 /// m() { super.foo = rhs; } 622 /// m() { super.foo = rhs; }
590 /// } 623 /// }
591 /// 624 ///
592 R visitSuperMethodSet( 625 R visitSuperMethodSet(
593 Send node, 626 Send node,
594 MethodElement method, 627 MethodElement method,
595 Node rhs, 628 Node rhs,
596 A arg); 629 A arg);
597 630
598 /// Getter call to the super [getter]. 631 /// Getter call to the super [getter].
599 /// 632 ///
600 /// For instance 633 /// For instance:
634 ///
601 /// class B { 635 /// class B {
602 /// get foo => null; 636 /// get foo => null;
603 /// } 637 /// }
604 /// class C extends B { 638 /// class C extends B {
605 /// m() => super.foo; 639 /// m() => super.foo;
606 /// } 640 /// }
607 /// 641 ///
608 R visitSuperGetterGet( 642 R visitSuperGetterGet(
609 Send node, 643 Send node,
610 FunctionElement getter, 644 FunctionElement getter,
611 A arg); 645 A arg);
612 646
613 /// Getter call the super [setter]. 647 /// Getter call the super [setter].
614 /// 648 ///
615 /// For instance 649 /// For instance:
650 ///
616 /// class B { 651 /// class B {
617 /// set foo(_) {} 652 /// set foo(_) {}
618 /// } 653 /// }
619 /// class C extends B { 654 /// class C extends B {
620 /// m() => super.foo; 655 /// m() => super.foo;
621 /// } 656 /// }
622 /// 657 ///
623 R visitSuperSetterGet( 658 R visitSuperSetterGet(
624 Send node, 659 Send node,
625 FunctionElement setter, 660 FunctionElement setter,
626 A arg); 661 A arg);
627 662
628 /// Setter call to the super [setter]. 663 /// Setter call to the super [setter].
629 /// 664 ///
630 /// For instance 665 /// For instance:
666 ///
631 /// class B { 667 /// class B {
632 /// set foo(_) {} 668 /// set foo(_) {}
633 /// } 669 /// }
634 /// class C extends B { 670 /// class C extends B {
635 /// m() { super.foo = rhs; } 671 /// m() { super.foo = rhs; }
636 /// } 672 /// }
637 /// 673 ///
638 R visitSuperSetterSet( 674 R visitSuperSetterSet(
639 SendSet node, 675 SendSet node,
640 FunctionElement setter, 676 FunctionElement setter,
641 Node rhs, 677 Node rhs,
642 A arg); 678 A arg);
643 679
644 /// Assignment of [rhs] to the super [getter]. 680 /// Assignment of [rhs] to the super [getter].
645 /// 681 ///
646 /// For instance 682 /// For instance:
683 ///
647 /// class B { 684 /// class B {
648 /// get foo => null; 685 /// get foo => null;
649 /// } 686 /// }
650 /// class C extends B { 687 /// class C extends B {
651 /// m() { super.foo = rhs; } 688 /// m() { super.foo = rhs; }
652 /// } 689 /// }
653 /// 690 ///
654 R visitSuperGetterSet( 691 R visitSuperGetterSet(
655 SendSet node, 692 SendSet node,
656 FunctionElement getter, 693 FunctionElement getter,
657 Node rhs, 694 Node rhs,
658 A arg); 695 A arg);
659 696
660 /// Invocation of the super [getter] with [arguments]. 697 /// Invocation of the super [getter] with [arguments].
661 /// 698 ///
662 /// For instance 699 /// For instance:
700 ///
663 /// class B { 701 /// class B {
664 /// get foo => null; 702 /// get foo => null;
665 /// } 703 /// }
666 /// class C extends B { 704 /// class C extends B {
667 /// m() { super.foo(null, 42; } 705 /// m() { super.foo(null, 42; }
668 /// } 706 /// }
669 /// 707 ///
670 R visitSuperGetterInvoke( 708 R visitSuperGetterInvoke(
671 Send node, 709 Send node,
672 FunctionElement getter, 710 FunctionElement getter,
673 NodeList arguments, 711 NodeList arguments,
674 CallStructure callStructure, 712 CallStructure callStructure,
675 A arg); 713 A arg);
676 714
677 /// Invocation of the super [setter] with [arguments]. 715 /// Invocation of the super [setter] with [arguments].
678 /// 716 ///
679 /// For instance 717 /// For instance:
718 ///
680 /// class B { 719 /// class B {
681 /// set foo(_) {} 720 /// set foo(_) {}
682 /// } 721 /// }
683 /// class C extends B { 722 /// class C extends B {
684 /// m() { super.foo(null, 42; } 723 /// m() { super.foo(null, 42; }
685 /// } 724 /// }
686 /// 725 ///
687 R visitSuperSetterInvoke( 726 R visitSuperSetterInvoke(
688 Send node, 727 Send node,
689 FunctionElement setter, 728 FunctionElement setter,
690 NodeList arguments, 729 NodeList arguments,
691 CallStructure callStructure, 730 CallStructure callStructure,
692 A arg); 731 A arg);
693 732
694 /// Invocation of a [expression] with [arguments]. 733 /// Invocation of a [expression] with [arguments].
695 /// 734 ///
696 /// For instance 735 /// For instance:
736 ///
697 /// m() => (a, b){}(null, 42); 737 /// m() => (a, b){}(null, 42);
698 /// 738 ///
699 R visitExpressionInvoke( 739 R visitExpressionInvoke(
700 Send node, 740 Send node,
701 Node expression, 741 Node expression,
702 NodeList arguments, 742 NodeList arguments,
703 Selector selector, 743 Selector selector,
704 A arg); 744 A arg);
705 745
706 /// Read of the static [field]. 746 /// Read of the static [field].
707 /// 747 ///
708 /// For instance 748 /// For instance:
749 ///
709 /// class C { 750 /// class C {
710 /// static var foo; 751 /// static var foo;
711 /// } 752 /// }
712 /// m() => C.foo; 753 /// m() => C.foo;
713 /// 754 ///
714 R visitStaticFieldGet( 755 R visitStaticFieldGet(
715 Send node, 756 Send node,
716 FieldElement field, 757 FieldElement field,
717 A arg); 758 A arg);
718 759
719 /// Assignment of [rhs] to the static [field]. 760 /// Assignment of [rhs] to the static [field].
720 /// 761 ///
721 /// For instance 762 /// For instance:
763 ///
722 /// class C { 764 /// class C {
723 /// static var foo; 765 /// static var foo;
724 /// } 766 /// }
725 /// m() { C.foo = rhs; } 767 /// m() { C.foo = rhs; }
726 /// 768 ///
727 R visitStaticFieldSet( 769 R visitStaticFieldSet(
728 SendSet node, 770 SendSet node,
729 FieldElement field, 771 FieldElement field,
730 Node rhs, 772 Node rhs,
731 A arg); 773 A arg);
732 774
733 /// Assignment of [rhs] to the final static [field]. 775 /// Assignment of [rhs] to the final static [field].
734 /// 776 ///
735 /// For instance 777 /// For instance:
778 ///
736 /// class C { 779 /// class C {
737 /// static final foo; 780 /// static final foo;
738 /// } 781 /// }
739 /// m() { C.foo = rhs; } 782 /// m() { C.foo = rhs; }
740 /// 783 ///
741 R visitFinalStaticFieldSet( 784 R visitFinalStaticFieldSet(
742 SendSet node, 785 SendSet node,
743 FieldElement field, 786 FieldElement field,
744 Node rhs, 787 Node rhs,
745 A arg); 788 A arg);
746 789
747 /// Invocation of the static [field] with [arguments]. 790 /// Invocation of the static [field] with [arguments].
748 /// 791 ///
749 /// For instance 792 /// For instance:
793 ///
750 /// class C { 794 /// class C {
751 /// static var foo; 795 /// static var foo;
752 /// } 796 /// }
753 /// m() { C.foo(null, 42); } 797 /// m() { C.foo(null, 42); }
754 /// 798 ///
755 R visitStaticFieldInvoke( 799 R visitStaticFieldInvoke(
756 Send node, 800 Send node,
757 FieldElement field, 801 FieldElement field,
758 NodeList arguments, 802 NodeList arguments,
759 CallStructure callStructure, 803 CallStructure callStructure,
760 A arg); 804 A arg);
761 805
762 /// Closurization of the static [function]. 806 /// Closurization of the static [function].
763 /// 807 ///
764 /// For instance 808 /// For instance:
809 ///
765 /// class C { 810 /// class C {
766 /// static foo(a, b) {} 811 /// static foo(a, b) {}
767 /// } 812 /// }
768 /// m() => C.foo; 813 /// m() => C.foo;
769 /// 814 ///
770 R visitStaticFunctionGet( 815 R visitStaticFunctionGet(
771 Send node, 816 Send node,
772 MethodElement function, 817 MethodElement function,
773 A arg); 818 A arg);
774 819
775 /// Invocation of the static [function] with [arguments]. 820 /// Invocation of the static [function] with [arguments].
776 /// 821 ///
777 /// For instance 822 /// For instance:
823 ///
778 /// class C { 824 /// class C {
779 /// static foo(a, b) {} 825 /// static foo(a, b) {}
780 /// } 826 /// }
781 /// m() { C.foo(null, 42); } 827 /// m() { C.foo(null, 42); }
782 /// 828 ///
783 R visitStaticFunctionInvoke( 829 R visitStaticFunctionInvoke(
784 Send node, 830 Send node,
785 MethodElement function, 831 MethodElement function,
786 NodeList arguments, 832 NodeList arguments,
787 CallStructure callStructure, 833 CallStructure callStructure,
788 A arg); 834 A arg);
789 835
790 /// Invocation of the static [function] with incompatible [arguments]. 836 /// Invocation of the static [function] with incompatible [arguments].
791 /// 837 ///
792 /// For instance 838 /// For instance:
839 ///
793 /// class C { 840 /// class C {
794 /// static foo(a, b) {} 841 /// static foo(a, b) {}
795 /// } 842 /// }
796 /// m() { C.foo(null); } 843 /// m() { C.foo(null); }
797 /// 844 ///
798 R visitStaticFunctionIncompatibleInvoke( 845 R visitStaticFunctionIncompatibleInvoke(
799 Send node, 846 Send node,
800 MethodElement function, 847 MethodElement function,
801 NodeList arguments, 848 NodeList arguments,
802 CallStructure callStructure, 849 CallStructure callStructure,
803 A arg); 850 A arg);
804 851
805 /// Assignment of [rhs] to the static [function]. 852 /// Assignment of [rhs] to the static [function].
806 /// 853 ///
807 /// For instance 854 /// For instance:
855 ///
808 /// class C { 856 /// class C {
809 /// static foo(a, b) {} 857 /// static foo(a, b) {}
810 /// } 858 /// }
811 /// m() { C.foo = rhs; } 859 /// m() { C.foo = rhs; }
812 /// 860 ///
813 R visitStaticFunctionSet( 861 R visitStaticFunctionSet(
814 Send node, 862 Send node,
815 MethodElement function, 863 MethodElement function,
816 Node rhs, 864 Node rhs,
817 A arg); 865 A arg);
818 866
819 /// Getter call to the static [getter]. 867 /// Getter call to the static [getter].
820 /// 868 ///
821 /// For instance 869 /// For instance:
870 ///
822 /// class C { 871 /// class C {
823 /// static get foo => null; 872 /// static get foo => null;
824 /// } 873 /// }
825 /// m() => C.foo; 874 /// m() => C.foo;
826 /// 875 ///
827 R visitStaticGetterGet( 876 R visitStaticGetterGet(
828 Send node, 877 Send node,
829 FunctionElement getter, 878 FunctionElement getter,
830 A arg); 879 A arg);
831 880
832 /// Getter call the static [setter]. 881 /// Getter call the static [setter].
833 /// 882 ///
834 /// For instance 883 /// For instance:
884 ///
835 /// class C { 885 /// class C {
836 /// static set foo(_) {} 886 /// static set foo(_) {}
837 /// } 887 /// }
838 /// m() => C.foo; 888 /// m() => C.foo;
839 /// 889 ///
840 R visitStaticSetterGet( 890 R visitStaticSetterGet(
841 Send node, 891 Send node,
842 FunctionElement setter, 892 FunctionElement setter,
843 A arg); 893 A arg);
844 894
845 /// Setter call to the static [setter]. 895 /// Setter call to the static [setter].
846 /// 896 ///
847 /// For instance 897 /// For instance:
898 ///
848 /// class C { 899 /// class C {
849 /// static set foo(_) {} 900 /// static set foo(_) {}
850 /// } 901 /// }
851 /// m() { C.foo = rhs; } 902 /// m() { C.foo = rhs; }
852 /// 903 ///
853 R visitStaticSetterSet( 904 R visitStaticSetterSet(
854 SendSet node, 905 SendSet node,
855 FunctionElement setter, 906 FunctionElement setter,
856 Node rhs, 907 Node rhs,
857 A arg); 908 A arg);
858 909
859 /// Assignment of [rhs] to the static [getter]. 910 /// Assignment of [rhs] to the static [getter].
860 /// 911 ///
861 /// For instance 912 /// For instance:
913 ///
862 /// class C { 914 /// class C {
863 /// static get foo => null; 915 /// static get foo => null;
864 /// } 916 /// }
865 /// m() { C.foo = rhs; } 917 /// m() { C.foo = rhs; }
866 /// 918 ///
867 R visitStaticGetterSet( 919 R visitStaticGetterSet(
868 SendSet node, 920 SendSet node,
869 FunctionElement getter, 921 FunctionElement getter,
870 Node rhs, 922 Node rhs,
871 A arg); 923 A arg);
872 924
873 /// Invocation of the static [getter] with [arguments]. 925 /// Invocation of the static [getter] with [arguments].
874 /// 926 ///
875 /// For instance 927 /// For instance:
928 ///
876 /// class C { 929 /// class C {
877 /// static get foo => null; 930 /// static get foo => null;
878 /// } 931 /// }
879 /// m() { C.foo(null, 42; } 932 /// m() { C.foo(null, 42; }
880 /// 933 ///
881 R visitStaticGetterInvoke( 934 R visitStaticGetterInvoke(
882 Send node, 935 Send node,
883 FunctionElement getter, 936 FunctionElement getter,
884 NodeList arguments, 937 NodeList arguments,
885 CallStructure callStructure, 938 CallStructure callStructure,
886 A arg); 939 A arg);
887 940
888 /// Invocation of the static [setter] with [arguments]. 941 /// Invocation of the static [setter] with [arguments].
889 /// 942 ///
890 /// For instance 943 /// For instance:
944 ///
891 /// class C { 945 /// class C {
892 /// static set foo(_) {} 946 /// static set foo(_) {}
893 /// } 947 /// }
894 /// m() { C.foo(null, 42; } 948 /// m() { C.foo(null, 42; }
895 /// 949 ///
896 R visitStaticSetterInvoke( 950 R visitStaticSetterInvoke(
897 Send node, 951 Send node,
898 FunctionElement setter, 952 FunctionElement setter,
899 NodeList arguments, 953 NodeList arguments,
900 CallStructure callStructure, 954 CallStructure callStructure,
901 A arg); 955 A arg);
902 956
903 /// Read of the top level [field]. 957 /// Read of the top level [field].
904 /// 958 ///
905 /// For instance 959 /// For instance:
960 ///
906 /// var foo; 961 /// var foo;
907 /// m() => foo; 962 /// m() => foo;
908 /// 963 ///
909 R visitTopLevelFieldGet( 964 R visitTopLevelFieldGet(
910 Send node, 965 Send node,
911 FieldElement field, 966 FieldElement field,
912 A arg); 967 A arg);
913 968
914 /// Assignment of [rhs] to the top level [field]. 969 /// Assignment of [rhs] to the top level [field].
915 /// 970 ///
916 /// For instance 971 /// For instance:
972 ///
917 /// var foo; 973 /// var foo;
918 /// m() { foo = rhs; } 974 /// m() { foo = rhs; }
919 /// 975 ///
920 R visitTopLevelFieldSet( 976 R visitTopLevelFieldSet(
921 SendSet node, 977 SendSet node,
922 FieldElement field, 978 FieldElement field,
923 Node rhs, 979 Node rhs,
924 A arg); 980 A arg);
925 981
926 /// Assignment of [rhs] to the final top level [field]. 982 /// Assignment of [rhs] to the final top level [field].
927 /// 983 ///
928 /// For instance 984 /// For instance:
985 ///
929 /// final foo = null; 986 /// final foo = null;
930 /// m() { foo = rhs; } 987 /// m() { foo = rhs; }
931 /// 988 ///
932 R visitFinalTopLevelFieldSet( 989 R visitFinalTopLevelFieldSet(
933 SendSet node, 990 SendSet node,
934 FieldElement field, 991 FieldElement field,
935 Node rhs, 992 Node rhs,
936 A arg); 993 A arg);
937 994
938 /// Invocation of the top level [field] with [arguments]. 995 /// Invocation of the top level [field] with [arguments].
939 /// 996 ///
940 /// For instance 997 /// For instance:
998 ///
941 /// var foo; 999 /// var foo;
942 /// m() { foo(null, 42); } 1000 /// m() { foo(null, 42); }
943 /// 1001 ///
944 R visitTopLevelFieldInvoke( 1002 R visitTopLevelFieldInvoke(
945 Send node, 1003 Send node,
946 FieldElement field, 1004 FieldElement field,
947 NodeList arguments, 1005 NodeList arguments,
948 CallStructure callStructure, 1006 CallStructure callStructure,
949 A arg); 1007 A arg);
950 1008
951 /// Closurization of the top level [function]. 1009 /// Closurization of the top level [function].
952 /// 1010 ///
953 /// For instance 1011 /// For instance:
1012 ///
954 /// foo(a, b) {}; 1013 /// foo(a, b) {};
955 /// m() => foo; 1014 /// m() => foo;
956 /// 1015 ///
957 R visitTopLevelFunctionGet( 1016 R visitTopLevelFunctionGet(
958 Send node, 1017 Send node,
959 MethodElement function, 1018 MethodElement function,
960 A arg); 1019 A arg);
961 1020
962 /// Invocation of the top level [function] with [arguments]. 1021 /// Invocation of the top level [function] with [arguments].
963 /// 1022 ///
964 /// For instance 1023 /// For instance:
1024 ///
965 /// foo(a, b) {}; 1025 /// foo(a, b) {};
966 /// m() { foo(null, 42); } 1026 /// m() { foo(null, 42); }
967 /// 1027 ///
968 R visitTopLevelFunctionInvoke( 1028 R visitTopLevelFunctionInvoke(
969 Send node, 1029 Send node,
970 MethodElement function, 1030 MethodElement function,
971 NodeList arguments, 1031 NodeList arguments,
972 CallStructure callStructure, 1032 CallStructure callStructure,
973 A arg); 1033 A arg);
974 1034
975 /// Invocation of the top level [function] with incompatible [arguments]. 1035 /// Invocation of the top level [function] with incompatible [arguments].
976 /// 1036 ///
977 /// For instance 1037 /// For instance:
1038 ///
978 /// class C { 1039 /// class C {
979 /// static foo(a, b) {} 1040 /// static foo(a, b) {}
980 /// } 1041 /// }
981 /// m() { C.foo(null); } 1042 /// m() { C.foo(null); }
982 /// 1043 ///
983 R visitTopLevelFunctionIncompatibleInvoke( 1044 R visitTopLevelFunctionIncompatibleInvoke(
984 Send node, 1045 Send node,
985 MethodElement function, 1046 MethodElement function,
986 NodeList arguments, 1047 NodeList arguments,
987 CallStructure callStructure, 1048 CallStructure callStructure,
988 A arg); 1049 A arg);
989 1050
990 /// Assignment of [rhs] to the top level [function]. 1051 /// Assignment of [rhs] to the top level [function].
991 /// 1052 ///
992 /// For instance 1053 /// For instance:
1054 ///
993 /// foo(a, b) {}; 1055 /// foo(a, b) {};
994 /// m() { foo = rhs; } 1056 /// m() { foo = rhs; }
995 /// 1057 ///
996 R visitTopLevelFunctionSet( 1058 R visitTopLevelFunctionSet(
997 Send node, 1059 Send node,
998 MethodElement function, 1060 MethodElement function,
999 Node rhs, 1061 Node rhs,
1000 A arg); 1062 A arg);
1001 1063
1002 /// Getter call to the top level [getter]. 1064 /// Getter call to the top level [getter].
1003 /// 1065 ///
1004 /// For instance 1066 /// For instance:
1067 ///
1005 /// get foo => null; 1068 /// get foo => null;
1006 /// m() => foo; 1069 /// m() => foo;
1007 /// 1070 ///
1008 R visitTopLevelGetterGet( 1071 R visitTopLevelGetterGet(
1009 Send node, 1072 Send node,
1010 FunctionElement getter, 1073 FunctionElement getter,
1011 A arg); 1074 A arg);
1012 1075
1013 /// Getter call the top level [setter]. 1076 /// Getter call the top level [setter].
1014 /// 1077 ///
1015 /// For instance 1078 /// For instance:
1079 ///
1016 /// set foo(_) {} 1080 /// set foo(_) {}
1017 /// m() => foo; 1081 /// m() => foo;
1018 /// 1082 ///
1019 R visitTopLevelSetterGet( 1083 R visitTopLevelSetterGet(
1020 Send node, 1084 Send node,
1021 FunctionElement setter, 1085 FunctionElement setter,
1022 A arg); 1086 A arg);
1023 1087
1024 /// Setter call to the top level [setter]. 1088 /// Setter call to the top level [setter].
1025 /// 1089 ///
1026 /// For instance 1090 /// For instance:
1091 ///
1027 /// set foo(_) {} 1092 /// set foo(_) {}
1028 /// m() { foo = rhs; } 1093 /// m() { foo = rhs; }
1029 /// 1094 ///
1030 R visitTopLevelSetterSet( 1095 R visitTopLevelSetterSet(
1031 SendSet node, 1096 SendSet node,
1032 FunctionElement setter, 1097 FunctionElement setter,
1033 Node rhs, 1098 Node rhs,
1034 A arg); 1099 A arg);
1035 1100
1036 /// Assignment of [rhs] to the top level [getter]. 1101 /// Assignment of [rhs] to the top level [getter].
1037 /// 1102 ///
1038 /// For instance 1103 /// For instance:
1104 ///
1039 /// get foo => null; 1105 /// get foo => null;
1040 /// m() { foo = rhs; } 1106 /// m() { foo = rhs; }
1041 /// 1107 ///
1042 R visitTopLevelGetterSet( 1108 R visitTopLevelGetterSet(
1043 SendSet node, 1109 SendSet node,
1044 FunctionElement getter, 1110 FunctionElement getter,
1045 Node rhs, 1111 Node rhs,
1046 A arg); 1112 A arg);
1047 1113
1048 /// Invocation of the top level [getter] with [arguments]. 1114 /// Invocation of the top level [getter] with [arguments].
1049 /// 1115 ///
1050 /// For instance 1116 /// For instance:
1117 ///
1051 /// get foo => null; 1118 /// get foo => null;
1052 /// m() { foo(null, 42); } 1119 /// m() { foo(null, 42); }
1053 /// 1120 ///
1054 R visitTopLevelGetterInvoke( 1121 R visitTopLevelGetterInvoke(
1055 Send node, 1122 Send node,
1056 FunctionElement getter, 1123 FunctionElement getter,
1057 NodeList arguments, 1124 NodeList arguments,
1058 CallStructure callStructure, 1125 CallStructure callStructure,
1059 A arg); 1126 A arg);
1060 1127
1061 /// Invocation of the top level [setter] with [arguments]. 1128 /// Invocation of the top level [setter] with [arguments].
1062 /// 1129 ///
1063 /// For instance 1130 /// For instance:
1131 ///
1064 /// set foo(_) {}; 1132 /// set foo(_) {};
1065 /// m() { foo(null, 42); } 1133 /// m() { foo(null, 42); }
1066 /// 1134 ///
1067 R visitTopLevelSetterInvoke( 1135 R visitTopLevelSetterInvoke(
1068 Send node, 1136 Send node,
1069 FunctionElement setter, 1137 FunctionElement setter,
1070 NodeList arguments, 1138 NodeList arguments,
1071 CallStructure callStructure, 1139 CallStructure callStructure,
1072 A arg); 1140 A arg);
1073 1141
1074 /// Read of the type literal for class [element]. 1142 /// Read of the type literal for class [element].
1075 /// 1143 ///
1076 /// For instance 1144 /// For instance:
1145 ///
1077 /// class C {} 1146 /// class C {}
1078 /// m() => C; 1147 /// m() => C;
1079 /// 1148 ///
1080 R visitClassTypeLiteralGet( 1149 R visitClassTypeLiteralGet(
1081 Send node, 1150 Send node,
1082 ConstantExpression constant, 1151 ConstantExpression constant,
1083 A arg); 1152 A arg);
1084 1153
1085 /// Invocation of the type literal for class [element] with [arguments]. 1154 /// Invocation of the type literal for class [element] with [arguments].
1086 /// 1155 ///
1087 /// For instance 1156 /// For instance:
1157 ///
1088 /// class C {} 1158 /// class C {}
1089 /// m() => C(null, 42); 1159 /// m() => C(null, 42);
1090 /// 1160 ///
1091 R visitClassTypeLiteralInvoke( 1161 R visitClassTypeLiteralInvoke(
1092 Send node, 1162 Send node,
1093 ConstantExpression constant, 1163 ConstantExpression constant,
1094 NodeList arguments, 1164 NodeList arguments,
1095 CallStructure callStructure, 1165 CallStructure callStructure,
1096 A arg); 1166 A arg);
1097 1167
1098 /// Assignment of [rhs] to the type literal for class [element]. 1168 /// Assignment of [rhs] to the type literal for class [element].
1099 /// 1169 ///
1100 /// For instance 1170 /// For instance:
1171 ///
1101 /// class C {} 1172 /// class C {}
1102 /// m() { C = rhs; } 1173 /// m() { C = rhs; }
1103 /// 1174 ///
1104 R visitClassTypeLiteralSet( 1175 R visitClassTypeLiteralSet(
1105 SendSet node, 1176 SendSet node,
1106 ConstantExpression constant, 1177 ConstantExpression constant,
1107 Node rhs, 1178 Node rhs,
1108 A arg); 1179 A arg);
1109 1180
1110 /// Read of the type literal for typedef [element]. 1181 /// Read of the type literal for typedef [element].
1111 /// 1182 ///
1112 /// For instance 1183 /// For instance:
1184 ///
1113 /// typedef F(); 1185 /// typedef F();
1114 /// m() => F; 1186 /// m() => F;
1115 /// 1187 ///
1116 R visitTypedefTypeLiteralGet( 1188 R visitTypedefTypeLiteralGet(
1117 Send node, 1189 Send node,
1118 ConstantExpression constant, 1190 ConstantExpression constant,
1119 A arg); 1191 A arg);
1120 1192
1121 /// Invocation of the type literal for typedef [element] with [arguments]. 1193 /// Invocation of the type literal for typedef [element] with [arguments].
1122 /// 1194 ///
1123 /// For instance 1195 /// For instance:
1196 ///
1124 /// typedef F(); 1197 /// typedef F();
1125 /// m() => F(null, 42); 1198 /// m() => F(null, 42);
1126 /// 1199 ///
1127 R visitTypedefTypeLiteralInvoke( 1200 R visitTypedefTypeLiteralInvoke(
1128 Send node, 1201 Send node,
1129 ConstantExpression constant, 1202 ConstantExpression constant,
1130 NodeList arguments, 1203 NodeList arguments,
1131 CallStructure callStructure, 1204 CallStructure callStructure,
1132 A arg); 1205 A arg);
1133 1206
1134 /// Assignment of [rhs] to the type literal for typedef [element]. 1207 /// Assignment of [rhs] to the type literal for typedef [element].
1135 /// 1208 ///
1136 /// For instance 1209 /// For instance:
1210 ///
1137 /// typedef F(); 1211 /// typedef F();
1138 /// m() { F = rhs; } 1212 /// m() { F = rhs; }
1139 /// 1213 ///
1140 R visitTypedefTypeLiteralSet( 1214 R visitTypedefTypeLiteralSet(
1141 SendSet node, 1215 SendSet node,
1142 ConstantExpression constant, 1216 ConstantExpression constant,
1143 Node rhs, 1217 Node rhs,
1144 A arg); 1218 A arg);
1145 1219
1146 /// Read of the type literal for type variable [element]. 1220 /// Read of the type literal for type variable [element].
1147 /// 1221 ///
1148 /// For instance 1222 /// For instance:
1223 ///
1149 /// class C<T> { 1224 /// class C<T> {
1150 /// m() => T; 1225 /// m() => T;
1151 /// } 1226 /// }
1152 /// 1227 ///
1153 R visitTypeVariableTypeLiteralGet( 1228 R visitTypeVariableTypeLiteralGet(
1154 Send node, 1229 Send node,
1155 TypeVariableElement element, 1230 TypeVariableElement element,
1156 A arg); 1231 A arg);
1157 1232
1158 /// Invocation of the type literal for type variable [element] with 1233 /// Invocation of the type literal for type variable [element] with
1159 /// [arguments]. 1234 /// [arguments].
1160 /// 1235 ///
1161 /// For instance 1236 /// For instance:
1237 ///
1162 /// class C<T> { 1238 /// class C<T> {
1163 /// m() { T(null, 42); } 1239 /// m() { T(null, 42); }
1164 /// } 1240 /// }
1165 /// 1241 ///
1166 R visitTypeVariableTypeLiteralInvoke( 1242 R visitTypeVariableTypeLiteralInvoke(
1167 Send node, 1243 Send node,
1168 TypeVariableElement element, 1244 TypeVariableElement element,
1169 NodeList arguments, 1245 NodeList arguments,
1170 CallStructure callStructure, 1246 CallStructure callStructure,
1171 A arg); 1247 A arg);
1172 1248
1173 /// Assignment of [rhs] to the type literal for type variable [element]. 1249 /// Assignment of [rhs] to the type literal for type variable [element].
1174 /// 1250 ///
1175 /// For instance 1251 /// For instance:
1252 ///
1176 /// class C<T> { 1253 /// class C<T> {
1177 /// m() { T = rhs; } 1254 /// m() { T = rhs; }
1178 /// } 1255 /// }
1179 /// 1256 ///
1180 R visitTypeVariableTypeLiteralSet( 1257 R visitTypeVariableTypeLiteralSet(
1181 SendSet node, 1258 SendSet node,
1182 TypeVariableElement element, 1259 TypeVariableElement element,
1183 Node rhs, 1260 Node rhs,
1184 A arg); 1261 A arg);
1185 1262
1186 /// Read of the type literal for `dynamic`. 1263 /// Read of the type literal for `dynamic`.
1187 /// 1264 ///
1188 /// For instance 1265 /// For instance:
1266 ///
1189 /// m() => dynamic; 1267 /// m() => dynamic;
1190 /// 1268 ///
1191 R visitDynamicTypeLiteralGet( 1269 R visitDynamicTypeLiteralGet(
1192 Send node, 1270 Send node,
1193 ConstantExpression constant, 1271 ConstantExpression constant,
1194 A arg); 1272 A arg);
1195 1273
1196 /// Invocation of the type literal for `dynamic` with [arguments]. 1274 /// Invocation of the type literal for `dynamic` with [arguments].
1197 /// 1275 ///
1198 /// For instance 1276 /// For instance:
1277 ///
1199 /// m() { dynamic(null, 42); } 1278 /// m() { dynamic(null, 42); }
1200 /// 1279 ///
1201 R visitDynamicTypeLiteralInvoke( 1280 R visitDynamicTypeLiteralInvoke(
1202 Send node, 1281 Send node,
1203 ConstantExpression constant, 1282 ConstantExpression constant,
1204 NodeList arguments, 1283 NodeList arguments,
1205 CallStructure callStructure, 1284 CallStructure callStructure,
1206 A arg); 1285 A arg);
1207 1286
1208 /// Assignment of [rhs] to the type literal for `dynamic`. 1287 /// Assignment of [rhs] to the type literal for `dynamic`.
1209 /// 1288 ///
1210 /// For instance 1289 /// For instance:
1290 ///
1211 /// m() { dynamic = rhs; } 1291 /// m() { dynamic = rhs; }
1212 /// 1292 ///
1213 R visitDynamicTypeLiteralSet( 1293 R visitDynamicTypeLiteralSet(
1214 SendSet node, 1294 SendSet node,
1215 ConstantExpression constant, 1295 ConstantExpression constant,
1216 Node rhs, 1296 Node rhs,
1217 A arg); 1297 A arg);
1218 1298
1219 /// Call to `assert` with [expression] as the condition. 1299 /// Call to `assert` with [expression] as the condition.
1220 /// 1300 ///
1221 /// For instance: 1301 /// For instance:
1302 ///
1222 /// m() { assert(expression); } 1303 /// m() { assert(expression); }
1223 /// 1304 ///
1224 R visitAssert( 1305 R visitAssert(
1225 Send node, 1306 Send node,
1226 Node expression, 1307 Node expression,
1227 A arg); 1308 A arg);
1228 1309
1229 /// Call to `assert` with the wrong number of [arguments]. 1310 /// Call to `assert` with the wrong number of [arguments].
1230 /// 1311 ///
1231 /// For instance: 1312 /// For instance:
1313 ///
1232 /// m() { assert(); } 1314 /// m() { assert(); }
1315 ///
1233 /// or 1316 /// or
1317 ///
1234 /// m() { assert(expression1, expression2); } 1318 /// m() { assert(expression1, expression2); }
1235 /// 1319 ///
1236 R errorInvalidAssert( 1320 R errorInvalidAssert(
1237 Send node, 1321 Send node,
1238 NodeList arguments, 1322 NodeList arguments,
1239 A arg); 1323 A arg);
1240 1324
1241 /// Binary expression `left operator right` where [operator] is a user 1325 /// Binary expression `left operator right` where [operator] is a user
1242 /// definable operator. Binary expressions using operator `==` are handled 1326 /// definable operator. Binary expressions using operator `==` are handled
1243 /// by [visitEquals] and index operations `a[b]` are handled by [visitIndex]. 1327 /// by [visitEquals] and index operations `a[b]` are handled by [visitIndex].
1244 /// 1328 ///
1245 /// For instance: 1329 /// For instance:
1330 ///
1246 /// add(a, b) => a + b; 1331 /// add(a, b) => a + b;
1247 /// sub(a, b) => a - b; 1332 /// sub(a, b) => a - b;
1248 /// mul(a, b) => a * b; 1333 /// mul(a, b) => a * b;
1249 /// 1334 ///
1250 R visitBinary( 1335 R visitBinary(
1251 Send node, 1336 Send node,
1252 Node left, 1337 Node left,
1253 BinaryOperator operator, 1338 BinaryOperator operator,
1254 Node right, 1339 Node right,
1255 A arg); 1340 A arg);
1256 1341
1257 /// Binary expression `super operator argument` where [operator] is a user 1342 /// Binary expression `super operator argument` where [operator] is a user
1258 /// definable operator implemented on a superclass by [function]. Binary 1343 /// definable operator implemented on a superclass by [function]. Binary
1259 /// expressions using operator `==` are handled by [visitSuperEquals]. 1344 /// expressions using operator `==` are handled by [visitSuperEquals].
1260 /// 1345 ///
1261 /// For instance: 1346 /// For instance:
1347 ///
1262 /// class B { 1348 /// class B {
1263 /// operator +(_) => null; 1349 /// operator +(_) => null;
1264 /// } 1350 /// }
1265 /// class C extends B { 1351 /// class C extends B {
1266 /// m(a) => super + a; 1352 /// m(a) => super + a;
1267 /// } 1353 /// }
1268 /// 1354 ///
1269 R visitSuperBinary( 1355 R visitSuperBinary(
1270 Send node, 1356 Send node,
1271 FunctionElement function, 1357 FunctionElement function,
1272 BinaryOperator operator, 1358 BinaryOperator operator,
1273 Node argument, 1359 Node argument,
1274 A arg); 1360 A arg);
1275 1361
1276 /// Binary operation on the unresolved super [element]. 1362 /// Binary operation on the unresolved super [element].
1277 /// 1363 ///
1278 /// For instance 1364 /// For instance:
1365 ///
1279 /// class B { 1366 /// class B {
1280 /// } 1367 /// }
1281 /// class C extends B { 1368 /// class C extends B {
1282 /// m() => super + 42; 1369 /// m() => super + 42;
1283 /// } 1370 /// }
1284 /// 1371 ///
1285 R visitUnresolvedSuperBinary( 1372 R visitUnresolvedSuperBinary(
1286 Send node, 1373 Send node,
1287 Element element, 1374 Element element,
1288 BinaryOperator operator, 1375 BinaryOperator operator,
1289 Node argument, 1376 Node argument,
1290 A arg); 1377 A arg);
1291 1378
1292 /// Index expression `receiver[index]`. 1379 /// Index expression `receiver[index]`.
1293 /// 1380 ///
1294 /// For instance: 1381 /// For instance:
1382 ///
1295 /// lookup(a, b) => a[b]; 1383 /// lookup(a, b) => a[b];
1296 /// 1384 ///
1297 R visitIndex( 1385 R visitIndex(
1298 Send node, 1386 Send node,
1299 Node receiver, 1387 Node receiver,
1300 Node index, 1388 Node index,
1301 A arg); 1389 A arg);
1302 1390
1303 /// Prefix operation on an index expression `operator receiver[index]` where 1391 /// Prefix operation on an index expression `operator receiver[index]` where
1304 /// the operation is defined by [operator]. 1392 /// the operation is defined by [operator].
1305 /// 1393 ///
1306 /// For instance: 1394 /// For instance:
1395 ///
1307 /// lookup(a, b) => --a[b]; 1396 /// lookup(a, b) => --a[b];
1308 /// 1397 ///
1309 R visitIndexPrefix( 1398 R visitIndexPrefix(
1310 Send node, 1399 Send node,
1311 Node receiver, 1400 Node receiver,
1312 Node index, 1401 Node index,
1313 IncDecOperator operator, 1402 IncDecOperator operator,
1314 A arg); 1403 A arg);
1315 1404
1316 /// Postfix operation on an index expression `receiver[index] operator` where 1405 /// Postfix operation on an index expression `receiver[index] operator` where
1317 /// the operation is defined by [operator]. 1406 /// the operation is defined by [operator].
1318 /// 1407 ///
1319 /// For instance: 1408 /// For instance:
1409 ///
1320 /// lookup(a, b) => a[b]++; 1410 /// lookup(a, b) => a[b]++;
1321 /// 1411 ///
1322 R visitIndexPostfix( 1412 R visitIndexPostfix(
1323 Send node, 1413 Send node,
1324 Node receiver, 1414 Node receiver,
1325 Node index, 1415 Node index,
1326 IncDecOperator operator, 1416 IncDecOperator operator,
1327 A arg); 1417 A arg);
1328 1418
1329 /// Index expression `super[index]` where 'operator []' is implemented on a 1419 /// Index expression `super[index]` where 'operator []' is implemented on a
1330 /// superclass by [function]. 1420 /// superclass by [function].
1331 /// 1421 ///
1332 /// For instance: 1422 /// For instance:
1423 ///
1333 /// class B { 1424 /// class B {
1334 /// operator [](_) => null; 1425 /// operator [](_) => null;
1335 /// } 1426 /// }
1336 /// class C extends B { 1427 /// class C extends B {
1337 /// m(a) => super[a]; 1428 /// m(a) => super[a];
1338 /// } 1429 /// }
1339 /// 1430 ///
1340 R visitSuperIndex( 1431 R visitSuperIndex(
1341 Send node, 1432 Send node,
1342 FunctionElement function, 1433 FunctionElement function,
1343 Node index, 1434 Node index,
1344 A arg); 1435 A arg);
1345 1436
1346 /// Index expression `super[index]` where 'operator []' is unresolved. 1437 /// Index expression `super[index]` where 'operator []' is unresolved.
1347 /// 1438 ///
1348 /// For instance: 1439 /// For instance:
1440 ///
1349 /// class B {} 1441 /// class B {}
1350 /// class C extends B { 1442 /// class C extends B {
1351 /// m(a) => super[a]; 1443 /// m(a) => super[a];
1352 /// } 1444 /// }
1353 /// 1445 ///
1354 R visitUnresolvedSuperIndex( 1446 R visitUnresolvedSuperIndex(
1355 Send node, 1447 Send node,
1356 Element element, 1448 Element element,
1357 Node index, 1449 Node index,
1358 A arg); 1450 A arg);
1359 1451
1360 /// Prefix operation on an index expression `operator super[index]` where 1452 /// Prefix operation on an index expression `operator super[index]` where
1361 /// 'operator []' is implemented on a superclass by [indexFunction] and 1453 /// 'operator []' is implemented on a superclass by [indexFunction] and
1362 /// 'operator []=' is implemented on by [indexSetFunction] and the operation 1454 /// 'operator []=' is implemented on by [indexSetFunction] and the operation
1363 /// is defined by [operator]. 1455 /// is defined by [operator].
1364 /// 1456 ///
1365 /// For instance: 1457 /// For instance:
1458 ///
1366 /// class B { 1459 /// class B {
1367 /// operator [](_) => null; 1460 /// operator [](_) => null;
1368 /// operator []=(a, b) {} 1461 /// operator []=(a, b) {}
1369 /// } 1462 /// }
1370 /// class C extends B { 1463 /// class C extends B {
1371 /// m(a) => --super[a]; 1464 /// m(a) => --super[a];
1372 /// } 1465 /// }
1373 /// 1466 ///
1374 R visitSuperIndexPrefix( 1467 R visitSuperIndexPrefix(
1375 Send node, 1468 Send node,
1376 MethodElement indexFunction, 1469 MethodElement indexFunction,
1377 MethodElement indexSetFunction, 1470 MethodElement indexSetFunction,
1378 Node index, 1471 Node index,
1379 IncDecOperator operator, 1472 IncDecOperator operator,
1380 A arg); 1473 A arg);
1381 1474
1382 /// Postfix operation on an index expression `super[index] operator` where 1475 /// Postfix operation on an index expression `super[index] operator` where
1383 /// 'operator []' is implemented on a superclass by [indexFunction] and 1476 /// 'operator []' is implemented on a superclass by [indexFunction] and
1384 /// 'operator []=' is implemented on by [indexSetFunction] and the operation 1477 /// 'operator []=' is implemented on by [indexSetFunction] and the operation
1385 /// is defined by [operator]. 1478 /// is defined by [operator].
1386 /// 1479 ///
1387 /// For instance: 1480 /// For instance:
1481 ///
1388 /// class B { 1482 /// class B {
1389 /// operator [](_) => null; 1483 /// operator [](_) => null;
1390 /// operator []=(a, b) {} 1484 /// operator []=(a, b) {}
1391 /// } 1485 /// }
1392 /// class C extends B { 1486 /// class C extends B {
1393 /// m(a) => super[a]++; 1487 /// m(a) => super[a]++;
1394 /// } 1488 /// }
1395 /// 1489 ///
1396 R visitSuperIndexPostfix( 1490 R visitSuperIndexPostfix(
1397 Send node, 1491 Send node,
1398 MethodElement indexFunction, 1492 MethodElement indexFunction,
1399 MethodElement indexSetFunction, 1493 MethodElement indexSetFunction,
1400 Node index, 1494 Node index,
1401 IncDecOperator operator, 1495 IncDecOperator operator,
1402 A arg); 1496 A arg);
1403 1497
1404 /// Prefix operation on an index expression `operator super[index]` where 1498 /// Prefix operation on an index expression `operator super[index]` where
1405 /// 'operator []' is unresolved, 'operator []=' is defined by [setter], and 1499 /// 'operator []' is unresolved, 'operator []=' is defined by [setter], and
1406 /// the operation is defined by [operator]. 1500 /// the operation is defined by [operator].
1407 /// 1501 ///
1408 /// For instance: 1502 /// For instance:
1503 ///
1409 /// class B { 1504 /// class B {
1410 /// operator []=(a, b) {} 1505 /// operator []=(a, b) {}
1411 /// } 1506 /// }
1412 /// class C extends B { 1507 /// class C extends B {
1413 /// m(a) => --super[a]; 1508 /// m(a) => --super[a];
1414 /// } 1509 /// }
1415 /// 1510 ///
1416 R visitUnresolvedSuperGetterIndexPrefix( 1511 R visitUnresolvedSuperGetterIndexPrefix(
1417 Send node, 1512 Send node,
1418 Element element, 1513 Element element,
1419 MethodElement setter, 1514 MethodElement setter,
1420 Node index, 1515 Node index,
1421 IncDecOperator operator, 1516 IncDecOperator operator,
1422 A arg); 1517 A arg);
1423 1518
1424 /// Postfix operation on an index expression `super[index] operator` where 1519 /// Postfix operation on an index expression `super[index] operator` where
1425 /// 'operator []' is unresolved, 'operator []=' is defined by [setter], and 1520 /// 'operator []' is unresolved, 'operator []=' is defined by [setter], and
1426 /// the operation is defined by [operator]. 1521 /// the operation is defined by [operator].
1427 /// 1522 ///
1428 /// For instance: 1523 /// For instance:
1524 ///
1429 /// class B { 1525 /// class B {
1430 /// operator []=(a, b) {} 1526 /// operator []=(a, b) {}
1431 /// } 1527 /// }
1432 /// class C extends B { 1528 /// class C extends B {
1433 /// m(a) => super[a]++; 1529 /// m(a) => super[a]++;
1434 /// } 1530 /// }
1435 /// 1531 ///
1436 R visitUnresolvedSuperGetterIndexPostfix( 1532 R visitUnresolvedSuperGetterIndexPostfix(
1437 Send node, 1533 Send node,
1438 Element element, 1534 Element element,
1439 MethodElement setter, 1535 MethodElement setter,
1440 Node index, 1536 Node index,
1441 IncDecOperator operator, 1537 IncDecOperator operator,
1442 A arg); 1538 A arg);
1443 1539
1444 /// Prefix operation on an index expression `operator super[index]` where 1540 /// Prefix operation on an index expression `operator super[index]` where
1445 /// 'operator []' is implemented on a superclass by [indexFunction] and 1541 /// 'operator []' is implemented on a superclass by [indexFunction] and
1446 /// 'operator []=' is unresolved and the operation is defined by [operator]. 1542 /// 'operator []=' is unresolved and the operation is defined by [operator].
1447 /// 1543 ///
1448 /// For instance: 1544 /// For instance:
1545 ///
1449 /// class B { 1546 /// class B {
1450 /// operator [](_) => 42; 1547 /// operator [](_) => 42;
1451 /// } 1548 /// }
1452 /// class C extends B { 1549 /// class C extends B {
1453 /// m(a) => --super[a]; 1550 /// m(a) => --super[a];
1454 /// } 1551 /// }
1455 /// 1552 ///
1456 R visitUnresolvedSuperSetterIndexPrefix( 1553 R visitUnresolvedSuperSetterIndexPrefix(
1457 Send node, 1554 Send node,
1458 MethodElement indexFunction, 1555 MethodElement indexFunction,
1459 Element element, 1556 Element element,
1460 Node index, 1557 Node index,
1461 IncDecOperator operator, 1558 IncDecOperator operator,
1462 A arg); 1559 A arg);
1463 1560
1464 /// Postfix operation on an index expression `super[index] operator` where 1561 /// Postfix operation on an index expression `super[index] operator` where
1465 /// 'operator []' is implemented on a superclass by [indexFunction] and 1562 /// 'operator []' is implemented on a superclass by [indexFunction] and
1466 /// 'operator []=' is unresolved and the operation is defined by [operator]. 1563 /// 'operator []=' is unresolved and the operation is defined by [operator].
1467 /// 1564 ///
1468 /// For instance: 1565 /// For instance:
1566 ///
1469 /// class B { 1567 /// class B {
1470 /// operator [](_) => 42; 1568 /// operator [](_) => 42;
1471 /// } 1569 /// }
1472 /// class C extends B { 1570 /// class C extends B {
1473 /// m(a) => super[a]++; 1571 /// m(a) => super[a]++;
1474 /// } 1572 /// }
1475 /// 1573 ///
1476 R visitUnresolvedSuperSetterIndexPostfix( 1574 R visitUnresolvedSuperSetterIndexPostfix(
1477 Send node, 1575 Send node,
1478 MethodElement indexFunction, 1576 MethodElement indexFunction,
1479 Element element, 1577 Element element,
1480 Node index, 1578 Node index,
1481 IncDecOperator operator, 1579 IncDecOperator operator,
1482 A arg); 1580 A arg);
1483 1581
1484 /// Prefix operation on an index expression `super[index] operator` where 1582 /// Prefix operation on an index expression `super[index] operator` where
1485 /// both 'operator []' and 'operator []=' are unresolved and the operation is 1583 /// both 'operator []' and 'operator []=' are unresolved and the operation is
1486 /// defined by [operator]. 1584 /// defined by [operator].
1487 /// 1585 ///
1488 /// For instance: 1586 /// For instance:
1587 ///
1489 /// class B { 1588 /// class B {
1490 /// operator [](_) => 42; 1589 /// operator [](_) => 42;
1491 /// } 1590 /// }
1492 /// class C extends B { 1591 /// class C extends B {
1493 /// m(a) => super[a]++; 1592 /// m(a) => super[a]++;
1494 /// } 1593 /// }
1495 /// 1594 ///
1496 R visitUnresolvedSuperIndexPrefix( 1595 R visitUnresolvedSuperIndexPrefix(
1497 Send node, 1596 Send node,
1498 Element element, 1597 Element element,
1499 Node index, 1598 Node index,
1500 IncDecOperator operator, 1599 IncDecOperator operator,
1501 A arg); 1600 A arg);
1502 1601
1503 /// Postfix operation on an index expression `super[index] operator` where 1602 /// Postfix operation on an index expression `super[index] operator` where
1504 /// both 'operator []' and 'operator []=' are unresolved and the operation is 1603 /// both 'operator []' and 'operator []=' are unresolved and the operation is
1505 /// defined by [operator]. 1604 /// defined by [operator].
1506 /// 1605 ///
1507 /// For instance: 1606 /// For instance:
1607 ///
1508 /// class B { 1608 /// class B {
1509 /// operator [](_) => 42; 1609 /// operator [](_) => 42;
1510 /// } 1610 /// }
1511 /// class C extends B { 1611 /// class C extends B {
1512 /// m(a) => super[a]++; 1612 /// m(a) => super[a]++;
1513 /// } 1613 /// }
1514 /// 1614 ///
1515 R visitUnresolvedSuperIndexPostfix( 1615 R visitUnresolvedSuperIndexPostfix(
1516 Send node, 1616 Send node,
1517 Element element, 1617 Element element,
1518 Node index, 1618 Node index,
1519 IncDecOperator operator, 1619 IncDecOperator operator,
1520 A arg); 1620 A arg);
1521 1621
1522 /// Binary expression `left == right`. 1622 /// Binary expression `left == right`.
1523 /// 1623 ///
1524 /// For instance: 1624 /// For instance:
1625 ///
1525 /// neq(a, b) => a != b; 1626 /// neq(a, b) => a != b;
1526 /// 1627 ///
1527 R visitNotEquals( 1628 R visitNotEquals(
1528 Send node, 1629 Send node,
1529 Node left, 1630 Node left,
1530 Node right, 1631 Node right,
1531 A arg); 1632 A arg);
1532 1633
1533 /// Binary expression `super != argument` where `==` is implemented on a 1634 /// Binary expression `super != argument` where `==` is implemented on a
1534 /// superclass by [function]. 1635 /// superclass by [function].
1535 /// 1636 ///
1536 /// For instance: 1637 /// For instance:
1638 ///
1537 /// class B { 1639 /// class B {
1538 /// operator +(_) => null; 1640 /// operator +(_) => null;
1539 /// } 1641 /// }
1540 /// class C extends B { 1642 /// class C extends B {
1541 /// m(a) => super + a; 1643 /// m(a) => super + a;
1542 /// } 1644 /// }
1543 /// 1645 ///
1544 R visitSuperNotEquals( 1646 R visitSuperNotEquals(
1545 Send node, 1647 Send node,
1546 FunctionElement function, 1648 FunctionElement function,
1547 Node argument, 1649 Node argument,
1548 A arg); 1650 A arg);
1549 1651
1550 /// Binary expression `left == right`. 1652 /// Binary expression `left == right`.
1551 /// 1653 ///
1552 /// For instance: 1654 /// For instance:
1655 ///
1553 /// eq(a, b) => a == b; 1656 /// eq(a, b) => a == b;
1554 /// 1657 ///
1555 R visitEquals( 1658 R visitEquals(
1556 Send node, 1659 Send node,
1557 Node left, 1660 Node left,
1558 Node right, 1661 Node right,
1559 A arg); 1662 A arg);
1560 1663
1561 /// Binary expression `super == argument` where `==` is implemented on a 1664 /// Binary expression `super == argument` where `==` is implemented on a
1562 /// superclass by [function]. 1665 /// superclass by [function].
1563 /// 1666 ///
1564 /// For instance: 1667 /// For instance:
1668 ///
1565 /// class B { 1669 /// class B {
1566 /// operator ==(_) => null; 1670 /// operator ==(_) => null;
1567 /// } 1671 /// }
1568 /// class C extends B { 1672 /// class C extends B {
1569 /// m(a) => super == a; 1673 /// m(a) => super == a;
1570 /// } 1674 /// }
1571 /// 1675 ///
1572 R visitSuperEquals( 1676 R visitSuperEquals(
1573 Send node, 1677 Send node,
1574 FunctionElement function, 1678 FunctionElement function,
1575 Node argument, 1679 Node argument,
1576 A arg); 1680 A arg);
1577 1681
1578 /// Unary expression `operator expression` where [operator] is a user 1682 /// Unary expression `operator expression` where [operator] is a user
1579 /// definable operator. 1683 /// definable operator.
1580 /// 1684 ///
1581 /// For instance: 1685 /// For instance:
1686 ///
1582 /// neg(a, b) => -a; 1687 /// neg(a, b) => -a;
1583 /// comp(a, b) => ~a; 1688 /// comp(a, b) => ~a;
1584 /// 1689 ///
1585 R visitUnary( 1690 R visitUnary(
1586 Send node, 1691 Send node,
1587 UnaryOperator operator, 1692 UnaryOperator operator,
1588 Node expression, 1693 Node expression,
1589 A arg); 1694 A arg);
1590 1695
1591 /// Unary expression `operator super` where [operator] is a user definable 1696 /// Unary expression `operator super` where [operator] is a user definable
1592 /// operator implemented on a superclass by [function]. 1697 /// operator implemented on a superclass by [function].
1593 /// 1698 ///
1594 /// For instance: 1699 /// For instance:
1700 ///
1595 /// class B { 1701 /// class B {
1596 /// operator -() => null; 1702 /// operator -() => null;
1597 /// } 1703 /// }
1598 /// class C extends B { 1704 /// class C extends B {
1599 /// m(a) => -super; 1705 /// m(a) => -super;
1600 /// } 1706 /// }
1601 /// 1707 ///
1602 R visitSuperUnary( 1708 R visitSuperUnary(
1603 Send node, 1709 Send node,
1604 UnaryOperator operator, 1710 UnaryOperator operator,
1605 FunctionElement function, 1711 FunctionElement function,
1606 A arg); 1712 A arg);
1607 1713
1608 /// Unary operation on the unresolved super [element]. 1714 /// Unary operation on the unresolved super [element].
1609 /// 1715 ///
1610 /// For instance 1716 /// For instance:
1717 ///
1611 /// class B { 1718 /// class B {
1612 /// } 1719 /// }
1613 /// class C extends B { 1720 /// class C extends B {
1614 /// m() => -super; 1721 /// m() => -super;
1615 /// } 1722 /// }
1616 /// 1723 ///
1617 R visitUnresolvedSuperUnary( 1724 R visitUnresolvedSuperUnary(
1618 Send node, 1725 Send node,
1619 UnaryOperator operator, 1726 UnaryOperator operator,
1620 Element element, 1727 Element element,
1621 A arg); 1728 A arg);
1622 1729
1623 /// Unary expression `!expression`. 1730 /// Unary expression `!expression`.
1624 /// 1731 ///
1625 /// For instance: 1732 /// For instance:
1733 ///
1626 /// not(a) => !a; 1734 /// not(a) => !a;
1627 /// 1735 ///
1628 R visitNot( 1736 R visitNot(
1629 Send node, 1737 Send node,
1630 Node expression, 1738 Node expression,
1631 A arg); 1739 A arg);
1632 1740
1633 /// Index set expression `receiver[index] = rhs`. 1741 /// Index set expression `receiver[index] = rhs`.
1634 /// 1742 ///
1635 /// For instance: 1743 /// For instance:
1744 ///
1636 /// m(receiver, index, rhs) => receiver[index] = rhs; 1745 /// m(receiver, index, rhs) => receiver[index] = rhs;
1637 /// 1746 ///
1638 R visitIndexSet( 1747 R visitIndexSet(
1639 SendSet node, 1748 SendSet node,
1640 Node receiver, 1749 Node receiver,
1641 Node index, 1750 Node index,
1642 Node rhs, 1751 Node rhs,
1643 A arg); 1752 A arg);
1644 1753
1645 /// Index set expression `super[index] = rhs` where `operator []=` is defined 1754 /// Index set expression `super[index] = rhs` where `operator []=` is defined
1646 /// on a superclass by [function]. 1755 /// on a superclass by [function].
1647 /// 1756 ///
1648 /// For instance: 1757 /// For instance:
1758 ///
1649 /// class B { 1759 /// class B {
1650 /// operator []=(a, b) {} 1760 /// operator []=(a, b) {}
1651 /// } 1761 /// }
1652 /// class C extends B { 1762 /// class C extends B {
1653 /// m(a, b) => super[a] = b; 1763 /// m(a, b) => super[a] = b;
1654 /// } 1764 /// }
1655 /// 1765 ///
1656 R visitSuperIndexSet( 1766 R visitSuperIndexSet(
1657 SendSet node, 1767 SendSet node,
1658 FunctionElement function, 1768 FunctionElement function,
1659 Node index, 1769 Node index,
1660 Node rhs, 1770 Node rhs,
1661 A arg); 1771 A arg);
1662 1772
1663 /// Index set expression `super[index] = rhs` where `operator []=` is 1773 /// Index set expression `super[index] = rhs` where `operator []=` is
1664 /// undefined. 1774 /// undefined.
1665 /// 1775 ///
1666 /// For instance 1776 /// For instance:
1777 ///
1667 /// class B { 1778 /// class B {
1668 /// } 1779 /// }
1669 /// class C extends B { 1780 /// class C extends B {
1670 /// m() => super[1] = 42; 1781 /// m() => super[1] = 42;
1671 /// } 1782 /// }
1672 /// 1783 ///
1673 R visitUnresolvedSuperIndexSet( 1784 R visitUnresolvedSuperIndexSet(
1674 Send node, 1785 Send node,
1675 Element element, 1786 Element element,
1676 Node index, 1787 Node index,
1677 Node rhs, 1788 Node rhs,
1678 A arg); 1789 A arg);
1679 1790
1680 /// If-null, ??, expression with operands [left] and [right]. 1791 /// If-null, ??, expression with operands [left] and [right].
1681 /// 1792 ///
1682 /// For instance 1793 /// For instance:
1794 ///
1683 /// m() => left ?? right; 1795 /// m() => left ?? right;
1684 /// 1796 ///
1685 R visitIfNull( 1797 R visitIfNull(
1686 Send node, 1798 Send node,
1687 Node left, 1799 Node left,
1688 Node right, 1800 Node right,
1689 A arg); 1801 A arg);
1690 1802
1691 /// Logical and, &&, expression with operands [left] and [right]. 1803 /// Logical and, &&, expression with operands [left] and [right].
1692 /// 1804 ///
1693 /// For instance 1805 /// For instance:
1806 ///
1694 /// m() => left && right; 1807 /// m() => left && right;
1695 /// 1808 ///
1696 R visitLogicalAnd( 1809 R visitLogicalAnd(
1697 Send node, 1810 Send node,
1698 Node left, 1811 Node left,
1699 Node right, 1812 Node right,
1700 A arg); 1813 A arg);
1701 1814
1702 /// Logical or, ||, expression with operands [left] and [right]. 1815 /// Logical or, ||, expression with operands [left] and [right].
1703 /// 1816 ///
1704 /// For instance 1817 /// For instance:
1818 ///
1705 /// m() => left || right; 1819 /// m() => left || right;
1706 /// 1820 ///
1707 R visitLogicalOr( 1821 R visitLogicalOr(
1708 Send node, 1822 Send node,
1709 Node left, 1823 Node left,
1710 Node right, 1824 Node right,
1711 A arg); 1825 A arg);
1712 1826
1713 /// Is test of [expression] against [type]. 1827 /// Is test of [expression] against [type].
1714 /// 1828 ///
1715 /// For instance 1829 /// For instance:
1830 ///
1716 /// class C {} 1831 /// class C {}
1717 /// m() => expression is C; 1832 /// m() => expression is C;
1718 /// 1833 ///
1719 R visitIs( 1834 R visitIs(
1720 Send node, 1835 Send node,
1721 Node expression, 1836 Node expression,
1722 DartType type, 1837 DartType type,
1723 A arg); 1838 A arg);
1724 1839
1725 /// Is not test of [expression] against [type]. 1840 /// Is not test of [expression] against [type].
1726 /// 1841 ///
1727 /// For instance 1842 /// For instance:
1843 ///
1728 /// class C {} 1844 /// class C {}
1729 /// m() => expression is! C; 1845 /// m() => expression is! C;
1730 /// 1846 ///
1731 R visitIsNot( 1847 R visitIsNot(
1732 Send node, 1848 Send node,
1733 Node expression, 1849 Node expression,
1734 DartType type, 1850 DartType type,
1735 A arg); 1851 A arg);
1736 1852
1737 /// As cast of [expression] to [type]. 1853 /// As cast of [expression] to [type].
1738 /// 1854 ///
1739 /// For instance 1855 /// For instance:
1856 ///
1740 /// class C {} 1857 /// class C {}
1741 /// m() => expression as C; 1858 /// m() => expression as C;
1742 /// 1859 ///
1743 R visitAs( 1860 R visitAs(
1744 Send node, 1861 Send node,
1745 Node expression, 1862 Node expression,
1746 DartType type, 1863 DartType type,
1747 A arg); 1864 A arg);
1748 1865
1749 /// Compound assignment expression of [rhs] with [operator] of the property on 1866 /// Compound assignment expression of [rhs] with [operator] of the property on
1750 /// [receiver] whose getter and setter are defined by [getterSelector] and 1867 /// [receiver] whose getter and setter are defined by [getterSelector] and
1751 /// [setterSelector], respectively. 1868 /// [setterSelector], respectively.
1752 /// 1869 ///
1753 /// For instance: 1870 /// For instance:
1871 ///
1754 /// m(receiver, rhs) => receiver.foo += rhs; 1872 /// m(receiver, rhs) => receiver.foo += rhs;
1755 /// 1873 ///
1756 R visitDynamicPropertyCompound( 1874 R visitDynamicPropertyCompound(
1757 Send node, 1875 Send node,
1758 Node receiver, 1876 Node receiver,
1759 AssignmentOperator operator, 1877 AssignmentOperator operator,
1760 Node rhs, 1878 Node rhs,
1761 Selector getterSelector, 1879 Selector getterSelector,
1762 Selector setterSelector, 1880 Selector setterSelector,
1763 A arg); 1881 A arg);
1764 1882
1765 /// Compound assignment expression of [rhs] with [operator] of the property on 1883 /// Compound assignment expression of [rhs] with [operator] of the property on
1766 /// a possibly null [receiver] whose getter and setter are defined by 1884 /// a possibly null [receiver] whose getter and setter are defined by
1767 /// [getterSelector] and [setterSelector], respectively. 1885 /// [getterSelector] and [setterSelector], respectively.
1768 /// 1886 ///
1769 /// For instance: 1887 /// For instance:
1888 ///
1770 /// m(receiver, rhs) => receiver?.foo += rhs; 1889 /// m(receiver, rhs) => receiver?.foo += rhs;
1771 /// 1890 ///
1772 R visitIfNotNullDynamicPropertyCompound( 1891 R visitIfNotNullDynamicPropertyCompound(
1773 Send node, 1892 Send node,
1774 Node receiver, 1893 Node receiver,
1775 AssignmentOperator operator, 1894 AssignmentOperator operator,
1776 Node rhs, 1895 Node rhs,
1777 Selector getterSelector, 1896 Selector getterSelector,
1778 Selector setterSelector, 1897 Selector setterSelector,
1779 A arg); 1898 A arg);
1780 1899
1781 /// Compound assignment expression of [rhs] with [operator] of the property on 1900 /// Compound assignment expression of [rhs] with [operator] of the property on
1782 /// `this` whose getter and setter are defined by [getterSelector] and 1901 /// `this` whose getter and setter are defined by [getterSelector] and
1783 /// [setterSelector], respectively. 1902 /// [setterSelector], respectively.
1784 /// 1903 ///
1785 /// For instance: 1904 /// For instance:
1905 ///
1786 /// class C { 1906 /// class C {
1787 /// m(rhs) => this.foo += rhs; 1907 /// m(rhs) => this.foo += rhs;
1788 /// } 1908 /// }
1909 ///
1789 /// or 1910 /// or
1911 ///
1790 /// class C { 1912 /// class C {
1791 /// m(rhs) => foo += rhs; 1913 /// m(rhs) => foo += rhs;
1792 /// } 1914 /// }
1793 /// 1915 ///
1794 R visitThisPropertyCompound( 1916 R visitThisPropertyCompound(
1795 Send node, 1917 Send node,
1796 AssignmentOperator operator, 1918 AssignmentOperator operator,
1797 Node rhs, 1919 Node rhs,
1798 Selector getterSelector, 1920 Selector getterSelector,
1799 Selector setterSelector, 1921 Selector setterSelector,
1800 A arg); 1922 A arg);
1801 1923
1802 /// Compound assignment expression of [rhs] with [operator] on a [parameter]. 1924 /// Compound assignment expression of [rhs] with [operator] on a [parameter].
1803 /// 1925 ///
1804 /// For instance: 1926 /// For instance:
1927 ///
1805 /// m(parameter, rhs) => parameter += rhs; 1928 /// m(parameter, rhs) => parameter += rhs;
1806 /// 1929 ///
1807 R visitParameterCompound( 1930 R visitParameterCompound(
1808 Send node, 1931 Send node,
1809 ParameterElement parameter, 1932 ParameterElement parameter,
1810 AssignmentOperator operator, 1933 AssignmentOperator operator,
1811 Node rhs, 1934 Node rhs,
1812 A arg); 1935 A arg);
1813 1936
1814 /// Compound assignment expression of [rhs] with [operator] on a final 1937 /// Compound assignment expression of [rhs] with [operator] on a final
1815 /// [parameter]. 1938 /// [parameter].
1816 /// 1939 ///
1817 /// For instance: 1940 /// For instance:
1941 ///
1818 /// m(final parameter, rhs) => parameter += rhs; 1942 /// m(final parameter, rhs) => parameter += rhs;
1819 /// 1943 ///
1820 R visitFinalParameterCompound( 1944 R visitFinalParameterCompound(
1821 Send node, 1945 Send node,
1822 ParameterElement parameter, 1946 ParameterElement parameter,
1823 AssignmentOperator operator, 1947 AssignmentOperator operator,
1824 Node rhs, 1948 Node rhs,
1825 A arg); 1949 A arg);
1826 1950
1827 /// Compound assignment expression of [rhs] with [operator] on a local 1951 /// Compound assignment expression of [rhs] with [operator] on a local
1828 /// [variable]. 1952 /// [variable].
1829 /// 1953 ///
1830 /// For instance: 1954 /// For instance:
1955 ///
1831 /// m(rhs) { 1956 /// m(rhs) {
1832 /// var variable; 1957 /// var variable;
1833 /// variable += rhs; 1958 /// variable += rhs;
1834 /// } 1959 /// }
1835 /// 1960 ///
1836 R visitLocalVariableCompound( 1961 R visitLocalVariableCompound(
1837 Send node, 1962 Send node,
1838 LocalVariableElement variable, 1963 LocalVariableElement variable,
1839 AssignmentOperator operator, 1964 AssignmentOperator operator,
1840 Node rhs, 1965 Node rhs,
1841 A arg); 1966 A arg);
1842 1967
1843 /// Compound assignment expression of [rhs] with [operator] on a final local 1968 /// Compound assignment expression of [rhs] with [operator] on a final local
1844 /// [variable]. 1969 /// [variable].
1845 /// 1970 ///
1846 /// For instance: 1971 /// For instance:
1972 ///
1847 /// m(rhs) { 1973 /// m(rhs) {
1848 /// final variable = 0; 1974 /// final variable = 0;
1849 /// variable += rhs; 1975 /// variable += rhs;
1850 /// } 1976 /// }
1851 /// 1977 ///
1852 R visitFinalLocalVariableCompound( 1978 R visitFinalLocalVariableCompound(
1853 Send node, 1979 Send node,
1854 LocalVariableElement variable, 1980 LocalVariableElement variable,
1855 AssignmentOperator operator, 1981 AssignmentOperator operator,
1856 Node rhs, 1982 Node rhs,
1857 A arg); 1983 A arg);
1858 1984
1859 /// Compound assignment expression of [rhs] with [operator] on a local 1985 /// Compound assignment expression of [rhs] with [operator] on a local
1860 /// [function]. 1986 /// [function].
1861 /// 1987 ///
1862 /// For instance: 1988 /// For instance:
1989 ///
1863 /// m(rhs) { 1990 /// m(rhs) {
1864 /// function() {} 1991 /// function() {}
1865 /// function += rhs; 1992 /// function += rhs;
1866 /// } 1993 /// }
1867 /// 1994 ///
1868 R visitLocalFunctionCompound( 1995 R visitLocalFunctionCompound(
1869 Send node, 1996 Send node,
1870 LocalFunctionElement function, 1997 LocalFunctionElement function,
1871 AssignmentOperator operator, 1998 AssignmentOperator operator,
1872 Node rhs, 1999 Node rhs,
1873 A arg); 2000 A arg);
1874 2001
1875 /// Compound assignment expression of [rhs] with [operator] on a static 2002 /// Compound assignment expression of [rhs] with [operator] on a static
1876 /// [field]. 2003 /// [field].
1877 /// 2004 ///
1878 /// For instance: 2005 /// For instance:
2006 ///
1879 /// class C { 2007 /// class C {
1880 /// static var field; 2008 /// static var field;
1881 /// m(rhs) => field += rhs; 2009 /// m(rhs) => field += rhs;
1882 /// } 2010 /// }
1883 /// 2011 ///
1884 R visitStaticFieldCompound( 2012 R visitStaticFieldCompound(
1885 Send node, 2013 Send node,
1886 FieldElement field, 2014 FieldElement field,
1887 AssignmentOperator operator, 2015 AssignmentOperator operator,
1888 Node rhs, 2016 Node rhs,
1889 A arg); 2017 A arg);
1890 2018
1891 /// Compound assignment expression of [rhs] with [operator] on a final static 2019 /// Compound assignment expression of [rhs] with [operator] on a final static
1892 /// [field]. 2020 /// [field].
1893 /// 2021 ///
1894 /// For instance: 2022 /// For instance:
2023 ///
1895 /// class C { 2024 /// class C {
1896 /// static final field = 0; 2025 /// static final field = 0;
1897 /// m(rhs) => field += rhs; 2026 /// m(rhs) => field += rhs;
1898 /// } 2027 /// }
1899 /// 2028 ///
1900 R visitFinalStaticFieldCompound( 2029 R visitFinalStaticFieldCompound(
1901 Send node, 2030 Send node,
1902 FieldElement field, 2031 FieldElement field,
1903 AssignmentOperator operator, 2032 AssignmentOperator operator,
1904 Node rhs, 2033 Node rhs,
1905 A arg); 2034 A arg);
1906 2035
1907 /// Compound assignment expression of [rhs] with [operator] reading from a 2036 /// Compound assignment expression of [rhs] with [operator] reading from a
1908 /// static [getter] and writing to a static [setter]. 2037 /// static [getter] and writing to a static [setter].
1909 /// 2038 ///
1910 /// For instance: 2039 /// For instance:
2040 ///
1911 /// class C { 2041 /// class C {
1912 /// static get o => 0; 2042 /// static get o => 0;
1913 /// static set o(_) {} 2043 /// static set o(_) {}
1914 /// m(rhs) => o += rhs; 2044 /// m(rhs) => o += rhs;
1915 /// } 2045 /// }
1916 /// 2046 ///
1917 R visitStaticGetterSetterCompound( 2047 R visitStaticGetterSetterCompound(
1918 Send node, 2048 Send node,
1919 FunctionElement getter, 2049 FunctionElement getter,
1920 FunctionElement setter, 2050 FunctionElement setter,
1921 AssignmentOperator operator, 2051 AssignmentOperator operator,
1922 Node rhs, 2052 Node rhs,
1923 A arg); 2053 A arg);
1924 2054
1925 /// Compound assignment expression of [rhs] with [operator] reading from a 2055 /// Compound assignment expression of [rhs] with [operator] reading from a
1926 /// static [method], that is, closurizing [method], and writing to a static 2056 /// static [method], that is, closurizing [method], and writing to a static
1927 /// [setter]. 2057 /// [setter].
1928 /// 2058 ///
1929 /// For instance: 2059 /// For instance:
2060 ///
1930 /// class C { 2061 /// class C {
1931 /// static o() {} 2062 /// static o() {}
1932 /// static set o(_) {} 2063 /// static set o(_) {}
1933 /// m(rhs) => o += rhs; 2064 /// m(rhs) => o += rhs;
1934 /// } 2065 /// }
1935 /// 2066 ///
1936 R visitStaticMethodSetterCompound( 2067 R visitStaticMethodSetterCompound(
1937 Send node, 2068 Send node,
1938 MethodElement method, 2069 MethodElement method,
1939 MethodElement setter, 2070 MethodElement setter,
1940 AssignmentOperator operator, 2071 AssignmentOperator operator,
1941 Node rhs, 2072 Node rhs,
1942 A arg); 2073 A arg);
1943 2074
1944 /// Compound assignment expression of [rhs] with [operator] on a top level 2075 /// Compound assignment expression of [rhs] with [operator] on a top level
1945 /// [field]. 2076 /// [field].
1946 /// 2077 ///
1947 /// For instance: 2078 /// For instance:
2079 ///
1948 /// var field; 2080 /// var field;
1949 /// m(rhs) => field += rhs; 2081 /// m(rhs) => field += rhs;
1950 /// 2082 ///
1951 R visitTopLevelFieldCompound( 2083 R visitTopLevelFieldCompound(
1952 Send node, 2084 Send node,
1953 FieldElement field, 2085 FieldElement field,
1954 AssignmentOperator operator, 2086 AssignmentOperator operator,
1955 Node rhs, 2087 Node rhs,
1956 A arg); 2088 A arg);
1957 2089
1958 /// Compound assignment expression of [rhs] with [operator] on a final top 2090 /// Compound assignment expression of [rhs] with [operator] on a final top
1959 /// level [field]. 2091 /// level [field].
1960 /// 2092 ///
1961 /// For instance: 2093 /// For instance:
2094 ///
1962 /// final field = 0; 2095 /// final field = 0;
1963 /// m(rhs) => field += rhs; 2096 /// m(rhs) => field += rhs;
1964 /// 2097 ///
1965 R visitFinalTopLevelFieldCompound( 2098 R visitFinalTopLevelFieldCompound(
1966 Send node, 2099 Send node,
1967 FieldElement field, 2100 FieldElement field,
1968 AssignmentOperator operator, 2101 AssignmentOperator operator,
1969 Node rhs, 2102 Node rhs,
1970 A arg); 2103 A arg);
1971 2104
1972 /// Compound assignment expression of [rhs] with [operator] reading from a 2105 /// Compound assignment expression of [rhs] with [operator] reading from a
1973 /// top level [getter] and writing to a top level [setter]. 2106 /// top level [getter] and writing to a top level [setter].
1974 /// 2107 ///
1975 /// For instance: 2108 /// For instance:
2109 ///
1976 /// get o => 0; 2110 /// get o => 0;
1977 /// set o(_) {} 2111 /// set o(_) {}
1978 /// m(rhs) => o += rhs; 2112 /// m(rhs) => o += rhs;
1979 /// 2113 ///
1980 R visitTopLevelGetterSetterCompound( 2114 R visitTopLevelGetterSetterCompound(
1981 Send node, 2115 Send node,
1982 FunctionElement getter, 2116 FunctionElement getter,
1983 FunctionElement setter, 2117 FunctionElement setter,
1984 AssignmentOperator operator, 2118 AssignmentOperator operator,
1985 Node rhs, 2119 Node rhs,
1986 A arg); 2120 A arg);
1987 2121
1988 /// Compound assignment expression of [rhs] with [operator] reading from a 2122 /// Compound assignment expression of [rhs] with [operator] reading from a
1989 /// top level [method], that is, closurizing [method], and writing to a top 2123 /// top level [method], that is, closurizing [method], and writing to a top
1990 /// level [setter]. 2124 /// level [setter].
1991 /// 2125 ///
1992 /// For instance: 2126 /// For instance:
2127 ///
1993 /// o() {} 2128 /// o() {}
1994 /// set o(_) {} 2129 /// set o(_) {}
1995 /// m(rhs) => o += rhs; 2130 /// m(rhs) => o += rhs;
1996 /// 2131 ///
1997 R visitTopLevelMethodSetterCompound( 2132 R visitTopLevelMethodSetterCompound(
1998 Send node, 2133 Send node,
1999 FunctionElement method, 2134 FunctionElement method,
2000 FunctionElement setter, 2135 FunctionElement setter,
2001 AssignmentOperator operator, 2136 AssignmentOperator operator,
2002 Node rhs, 2137 Node rhs,
2003 A arg); 2138 A arg);
2004 2139
2005 /// Compound assignment expression of [rhs] with [operator] reading from a 2140 /// Compound assignment expression of [rhs] with [operator] reading from a
2006 /// top level [method], that is, closurizing [method], and writing to an 2141 /// top level [method], that is, closurizing [method], and writing to an
2007 /// unresolved setter. 2142 /// unresolved setter.
2008 /// 2143 ///
2009 /// For instance: 2144 /// For instance:
2145 ///
2010 /// o() {} 2146 /// o() {}
2011 /// m(rhs) => o += rhs; 2147 /// m(rhs) => o += rhs;
2012 /// 2148 ///
2013 R visitTopLevelMethodCompound( 2149 R visitTopLevelMethodCompound(
2014 Send node, 2150 Send node,
2015 FunctionElement method, 2151 FunctionElement method,
2016 AssignmentOperator operator, 2152 AssignmentOperator operator,
2017 Node rhs, 2153 Node rhs,
2018 A arg); 2154 A arg);
2019 2155
2020 /// Compound assignment expression of [rhs] with [operator] on a super 2156 /// Compound assignment expression of [rhs] with [operator] on a super
2021 /// [field]. 2157 /// [field].
2022 /// 2158 ///
2023 /// For instance: 2159 /// For instance:
2160 ///
2024 /// class B { 2161 /// class B {
2025 /// var field; 2162 /// var field;
2026 /// } 2163 /// }
2027 /// class C extends B { 2164 /// class C extends B {
2028 /// m(rhs) => super.field += rhs; 2165 /// m(rhs) => super.field += rhs;
2029 /// } 2166 /// }
2030 /// 2167 ///
2031 R visitSuperFieldCompound( 2168 R visitSuperFieldCompound(
2032 Send node, 2169 Send node,
2033 FieldElement field, 2170 FieldElement field,
2034 AssignmentOperator operator, 2171 AssignmentOperator operator,
2035 Node rhs, 2172 Node rhs,
2036 A arg); 2173 A arg);
2037 2174
2038 /// Compound assignment expression of [rhs] with [operator] on a final super 2175 /// Compound assignment expression of [rhs] with [operator] on a final super
2039 /// [field]. 2176 /// [field].
2040 /// 2177 ///
2041 /// For instance: 2178 /// For instance:
2179 ///
2042 /// class B { 2180 /// class B {
2043 /// final field = 42; 2181 /// final field = 42;
2044 /// } 2182 /// }
2045 /// class C extends B { 2183 /// class C extends B {
2046 /// m(rhs) => super.field += rhs; 2184 /// m(rhs) => super.field += rhs;
2047 /// } 2185 /// }
2048 /// 2186 ///
2049 R visitFinalSuperFieldCompound( 2187 R visitFinalSuperFieldCompound(
2050 Send node, 2188 Send node,
2051 FieldElement field, 2189 FieldElement field,
2052 AssignmentOperator operator, 2190 AssignmentOperator operator,
2053 Node rhs, 2191 Node rhs,
2054 A arg); 2192 A arg);
2055 2193
2056 /// Prefix expression with [operator] on a final super [field]. 2194 /// Prefix expression with [operator] on a final super [field].
2057 /// 2195 ///
2058 /// For instance: 2196 /// For instance:
2197 ///
2059 /// class B { 2198 /// class B {
2060 /// final field = 42; 2199 /// final field = 42;
2061 /// } 2200 /// }
2062 /// class C extends B { 2201 /// class C extends B {
2063 /// m(rhs) => ++super.field; 2202 /// m(rhs) => ++super.field;
2064 /// } 2203 /// }
2065 /// 2204 ///
2066 R visitFinalSuperFieldPrefix( 2205 R visitFinalSuperFieldPrefix(
2067 Send node, 2206 Send node,
2068 FieldElement field, 2207 FieldElement field,
2069 IncDecOperator operator, 2208 IncDecOperator operator,
2070 A arg); 2209 A arg);
2071 2210
2072 /// Prefix expression with [operator] on an unresolved super property. 2211 /// Prefix expression with [operator] on an unresolved super property.
2073 /// 2212 ///
2074 /// For instance: 2213 /// For instance:
2214 ///
2075 /// class B { 2215 /// class B {
2076 /// } 2216 /// }
2077 /// class C extends B { 2217 /// class C extends B {
2078 /// m(rhs) => ++super.unresolved; 2218 /// m(rhs) => ++super.unresolved;
2079 /// } 2219 /// }
2080 /// 2220 ///
2081 R visitUnresolvedSuperPrefix( 2221 R visitUnresolvedSuperPrefix(
2082 Send node, 2222 Send node,
2083 Element element, 2223 Element element,
2084 IncDecOperator operator, 2224 IncDecOperator operator,
2085 A arg); 2225 A arg);
2086 2226
2087 /// Postfix expression with [operator] on an unresolved super property. 2227 /// Postfix expression with [operator] on an unresolved super property.
2088 /// 2228 ///
2089 /// For instance: 2229 /// For instance:
2230 ///
2090 /// class B { 2231 /// class B {
2091 /// } 2232 /// }
2092 /// class C extends B { 2233 /// class C extends B {
2093 /// m(rhs) => super.unresolved++; 2234 /// m(rhs) => super.unresolved++;
2094 /// } 2235 /// }
2095 /// 2236 ///
2096 R visitUnresolvedSuperPostfix( 2237 R visitUnresolvedSuperPostfix(
2097 Send node, 2238 Send node,
2098 Element element, 2239 Element element,
2099 IncDecOperator operator, 2240 IncDecOperator operator,
2100 A arg); 2241 A arg);
2101 2242
2102 /// Compound assignment expression of [rhs] with [operator] on an unresolved 2243 /// Compound assignment expression of [rhs] with [operator] on an unresolved
2103 /// super property. 2244 /// super property.
2104 /// 2245 ///
2105 /// For instance: 2246 /// For instance:
2247 ///
2106 /// class B { 2248 /// class B {
2107 /// } 2249 /// }
2108 /// class C extends B { 2250 /// class C extends B {
2109 /// m(rhs) => super.unresolved += rhs; 2251 /// m(rhs) => super.unresolved += rhs;
2110 /// } 2252 /// }
2111 /// 2253 ///
2112 R visitUnresolvedSuperCompound( 2254 R visitUnresolvedSuperCompound(
2113 Send node, 2255 Send node,
2114 Element element, 2256 Element element,
2115 AssignmentOperator operator, 2257 AssignmentOperator operator,
2116 Node rhs, 2258 Node rhs,
2117 A arg); 2259 A arg);
2118 2260
2119 /// Postfix expression with [operator] on a final super [field]. 2261 /// Postfix expression with [operator] on a final super [field].
2120 /// 2262 ///
2121 /// For instance: 2263 /// For instance:
2264 ///
2122 /// class B { 2265 /// class B {
2123 /// final field = 42; 2266 /// final field = 42;
2124 /// } 2267 /// }
2125 /// class C extends B { 2268 /// class C extends B {
2126 /// m(rhs) => super.field++; 2269 /// m(rhs) => super.field++;
2127 /// } 2270 /// }
2128 /// 2271 ///
2129 R visitFinalSuperFieldPostfix( 2272 R visitFinalSuperFieldPostfix(
2130 Send node, 2273 Send node,
2131 FieldElement field, 2274 FieldElement field,
2132 IncDecOperator operator, 2275 IncDecOperator operator,
2133 A arg); 2276 A arg);
2134 2277
2135 /// Compound assignment expression of [rhs] with [operator] reading from the 2278 /// Compound assignment expression of [rhs] with [operator] reading from the
2136 /// super field [readField] and writing to the different super field 2279 /// super field [readField] and writing to the different super field
2137 /// [writtenField]. 2280 /// [writtenField].
2138 /// 2281 ///
2139 /// For instance: 2282 /// For instance:
2283 ///
2140 /// class A { 2284 /// class A {
2141 /// var field; 2285 /// var field;
2142 /// } 2286 /// }
2143 /// class B extends A { 2287 /// class B extends A {
2144 /// final field; 2288 /// final field;
2145 /// } 2289 /// }
2146 /// class C extends B { 2290 /// class C extends B {
2147 /// m() => super.field += rhs; 2291 /// m() => super.field += rhs;
2148 /// } 2292 /// }
2149 /// 2293 ///
2150 R visitSuperFieldFieldCompound( 2294 R visitSuperFieldFieldCompound(
2151 Send node, 2295 Send node,
2152 FieldElement readField, 2296 FieldElement readField,
2153 FieldElement writtenField, 2297 FieldElement writtenField,
2154 AssignmentOperator operator, 2298 AssignmentOperator operator,
2155 Node rhs, 2299 Node rhs,
2156 A arg); 2300 A arg);
2157 2301
2158 /// Compound assignment expression of [rhs] with [operator] reading from a 2302 /// Compound assignment expression of [rhs] with [operator] reading from a
2159 /// super [getter] and writing to a super [setter]. 2303 /// super [getter] and writing to a super [setter].
2160 /// 2304 ///
2161 /// For instance: 2305 /// For instance:
2306 ///
2162 /// class B { 2307 /// class B {
2163 /// get o => 0; 2308 /// get o => 0;
2164 /// set o(_) {} 2309 /// set o(_) {}
2165 /// } 2310 /// }
2166 /// class C extends B { 2311 /// class C extends B {
2167 /// m(rhs) => super.o += rhs; 2312 /// m(rhs) => super.o += rhs;
2168 /// } 2313 /// }
2169 /// 2314 ///
2170 R visitSuperGetterSetterCompound( 2315 R visitSuperGetterSetterCompound(
2171 Send node, 2316 Send node,
2172 FunctionElement getter, 2317 FunctionElement getter,
2173 FunctionElement setter, 2318 FunctionElement setter,
2174 AssignmentOperator operator, 2319 AssignmentOperator operator,
2175 Node rhs, 2320 Node rhs,
2176 A arg); 2321 A arg);
2177 2322
2178 /// Compound assignment expression of [rhs] with [operator] reading from a 2323 /// Compound assignment expression of [rhs] with [operator] reading from a
2179 /// super [method], that is, closurizing [method], and writing to a super 2324 /// super [method], that is, closurizing [method], and writing to a super
2180 /// [setter]. 2325 /// [setter].
2181 /// 2326 ///
2182 /// For instance: 2327 /// For instance:
2328 ///
2183 /// class B { 2329 /// class B {
2184 /// o() {} 2330 /// o() {}
2185 /// set o(_) {} 2331 /// set o(_) {}
2186 /// } 2332 /// }
2187 /// class C extends B { 2333 /// class C extends B {
2188 /// m(rhs) => super.o += rhs; 2334 /// m(rhs) => super.o += rhs;
2189 /// } 2335 /// }
2190 /// 2336 ///
2191 R visitSuperMethodSetterCompound( 2337 R visitSuperMethodSetterCompound(
2192 Send node, 2338 Send node,
2193 FunctionElement method, 2339 FunctionElement method,
2194 FunctionElement setter, 2340 FunctionElement setter,
2195 AssignmentOperator operator, 2341 AssignmentOperator operator,
2196 Node rhs, 2342 Node rhs,
2197 A arg); 2343 A arg);
2198 2344
2199 /// Compound assignment expression of [rhs] with [operator] reading the 2345 /// Compound assignment expression of [rhs] with [operator] reading the
2200 /// closurized super [method] and trying to invoke the non-existing setter. 2346 /// closurized super [method] and trying to invoke the non-existing setter.
2201 /// 2347 ///
2202 /// For instance: 2348 /// For instance:
2349 ///
2203 /// class B { 2350 /// class B {
2204 /// o() {} 2351 /// o() {}
2205 /// } 2352 /// }
2206 /// class C extends B { 2353 /// class C extends B {
2207 /// m(rhs) => super.o += rhs; 2354 /// m(rhs) => super.o += rhs;
2208 /// } 2355 /// }
2209 /// 2356 ///
2210 R visitSuperMethodCompound( 2357 R visitSuperMethodCompound(
2211 Send node, 2358 Send node,
2212 FunctionElement method, 2359 FunctionElement method,
2213 AssignmentOperator operator, 2360 AssignmentOperator operator,
2214 Node rhs, 2361 Node rhs,
2215 A arg); 2362 A arg);
2216 2363
2217 /// Compound assignment expression of [rhs] with [operator] reading from the 2364 /// Compound assignment expression of [rhs] with [operator] reading from the
2218 /// non-existing super getter and writing to a super [setter]. 2365 /// non-existing super getter and writing to a super [setter].
2219 /// 2366 ///
2220 /// For instance 2367 /// For instance:
2368 ///
2221 /// class B { 2369 /// class B {
2222 /// set o(_) {} 2370 /// set o(_) {}
2223 /// } 2371 /// }
2224 /// class C extends B { 2372 /// class C extends B {
2225 /// m(rhs) => super.o += rhs; 2373 /// m(rhs) => super.o += rhs;
2226 /// } 2374 /// }
2227 /// 2375 ///
2228 R visitUnresolvedSuperGetterCompound( 2376 R visitUnresolvedSuperGetterCompound(
2229 Send node, 2377 Send node,
2230 Element element, 2378 Element element,
2231 MethodElement setter, 2379 MethodElement setter,
2232 AssignmentOperator operator, 2380 AssignmentOperator operator,
2233 Node rhs, 2381 Node rhs,
2234 A arg); 2382 A arg);
2235 2383
2236 /// Compound assignment expression of [rhs] with [operator] reading from a 2384 /// Compound assignment expression of [rhs] with [operator] reading from a
2237 /// super [getter] and writing to the non-existing super setter. 2385 /// super [getter] and writing to the non-existing super setter.
2238 /// 2386 ///
2239 /// For instance 2387 /// For instance:
2388 ///
2240 /// class B { 2389 /// class B {
2241 /// get o => 42; 2390 /// get o => 42;
2242 /// } 2391 /// }
2243 /// class C extends B { 2392 /// class C extends B {
2244 /// m(rhs) => super.o += rhs; 2393 /// m(rhs) => super.o += rhs;
2245 /// } 2394 /// }
2246 /// 2395 ///
2247 R visitUnresolvedSuperSetterCompound( 2396 R visitUnresolvedSuperSetterCompound(
2248 Send node, 2397 Send node,
2249 MethodElement getter, 2398 MethodElement getter,
2250 Element element, 2399 Element element,
2251 AssignmentOperator operator, 2400 AssignmentOperator operator,
2252 Node rhs, 2401 Node rhs,
2253 A arg); 2402 A arg);
2254 2403
2255 /// Compound assignment expression of [rhs] with [operator] reading from a 2404 /// Compound assignment expression of [rhs] with [operator] reading from a
2256 /// super [field] and writing to a super [setter]. 2405 /// super [field] and writing to a super [setter].
2257 /// 2406 ///
2258 /// For instance: 2407 /// For instance:
2408 ///
2259 /// class A { 2409 /// class A {
2260 /// var o; 2410 /// var o;
2261 /// } 2411 /// }
2262 /// class B extends A { 2412 /// class B extends A {
2263 /// set o(_) {} 2413 /// set o(_) {}
2264 /// } 2414 /// }
2265 /// class C extends B { 2415 /// class C extends B {
2266 /// m(rhs) => super.o += rhs; 2416 /// m(rhs) => super.o += rhs;
2267 /// } 2417 /// }
2268 /// 2418 ///
2269 R visitSuperFieldSetterCompound( 2419 R visitSuperFieldSetterCompound(
2270 Send node, 2420 Send node,
2271 FieldElement field, 2421 FieldElement field,
2272 FunctionElement setter, 2422 FunctionElement setter,
2273 AssignmentOperator operator, 2423 AssignmentOperator operator,
2274 Node rhs, 2424 Node rhs,
2275 A arg); 2425 A arg);
2276 2426
2277 /// Compound assignment expression of [rhs] with [operator] reading from a 2427 /// Compound assignment expression of [rhs] with [operator] reading from a
2278 /// super [getter] and writing to a super [field]. 2428 /// super [getter] and writing to a super [field].
2279 /// 2429 ///
2280 /// For instance: 2430 /// For instance:
2431 ///
2281 /// class A { 2432 /// class A {
2282 /// var o; 2433 /// var o;
2283 /// } 2434 /// }
2284 /// class B extends A { 2435 /// class B extends A {
2285 /// get o => 0; 2436 /// get o => 0;
2286 /// } 2437 /// }
2287 /// class C extends B { 2438 /// class C extends B {
2288 /// m(rhs) => super.o += rhs; 2439 /// m(rhs) => super.o += rhs;
2289 /// } 2440 /// }
2290 /// 2441 ///
2291 R visitSuperGetterFieldCompound( 2442 R visitSuperGetterFieldCompound(
2292 Send node, 2443 Send node,
2293 FunctionElement getter, 2444 FunctionElement getter,
2294 FieldElement field, 2445 FieldElement field,
2295 AssignmentOperator operator, 2446 AssignmentOperator operator,
2296 Node rhs, 2447 Node rhs,
2297 A arg); 2448 A arg);
2298 2449
2299 /// Compound assignment expression of [rhs] with [operator] on a type literal 2450 /// Compound assignment expression of [rhs] with [operator] on a type literal
2300 /// for class [element]. 2451 /// for class [element].
2301 /// 2452 ///
2302 /// For instance: 2453 /// For instance:
2454 ///
2303 /// class C {} 2455 /// class C {}
2304 /// m(rhs) => C += rhs; 2456 /// m(rhs) => C += rhs;
2305 /// 2457 ///
2306 R visitClassTypeLiteralCompound( 2458 R visitClassTypeLiteralCompound(
2307 Send node, 2459 Send node,
2308 ConstantExpression constant, 2460 ConstantExpression constant,
2309 AssignmentOperator operator, 2461 AssignmentOperator operator,
2310 Node rhs, 2462 Node rhs,
2311 A arg); 2463 A arg);
2312 2464
2313 /// Compound assignment expression of [rhs] with [operator] on a type literal 2465 /// Compound assignment expression of [rhs] with [operator] on a type literal
2314 /// for typedef [element]. 2466 /// for typedef [element].
2315 /// 2467 ///
2316 /// For instance: 2468 /// For instance:
2469 ///
2317 /// typedef F(); 2470 /// typedef F();
2318 /// m(rhs) => F += rhs; 2471 /// m(rhs) => F += rhs;
2319 /// 2472 ///
2320 R visitTypedefTypeLiteralCompound( 2473 R visitTypedefTypeLiteralCompound(
2321 Send node, 2474 Send node,
2322 ConstantExpression constant, 2475 ConstantExpression constant,
2323 AssignmentOperator operator, 2476 AssignmentOperator operator,
2324 Node rhs, 2477 Node rhs,
2325 A arg); 2478 A arg);
2326 2479
2327 /// Compound assignment expression of [rhs] with [operator] on a type literal 2480 /// Compound assignment expression of [rhs] with [operator] on a type literal
2328 /// for type variable [element]. 2481 /// for type variable [element].
2329 /// 2482 ///
2330 /// For instance: 2483 /// For instance:
2484 ///
2331 /// class C<T> { 2485 /// class C<T> {
2332 /// m(rhs) => T += rhs; 2486 /// m(rhs) => T += rhs;
2333 /// } 2487 /// }
2334 /// 2488 ///
2335 R visitTypeVariableTypeLiteralCompound( 2489 R visitTypeVariableTypeLiteralCompound(
2336 Send node, 2490 Send node,
2337 TypeVariableElement element, 2491 TypeVariableElement element,
2338 AssignmentOperator operator, 2492 AssignmentOperator operator,
2339 Node rhs, 2493 Node rhs,
2340 A arg); 2494 A arg);
2341 2495
2342 /// Compound assignment expression of [rhs] with [operator] on the type 2496 /// Compound assignment expression of [rhs] with [operator] on the type
2343 /// literal for `dynamic`. 2497 /// literal for `dynamic`.
2344 /// 2498 ///
2345 /// For instance: 2499 /// For instance:
2500 ///
2346 /// m(rhs) => dynamic += rhs; 2501 /// m(rhs) => dynamic += rhs;
2347 /// 2502 ///
2348 R visitDynamicTypeLiteralCompound( 2503 R visitDynamicTypeLiteralCompound(
2349 Send node, 2504 Send node,
2350 ConstantExpression constant, 2505 ConstantExpression constant,
2351 AssignmentOperator operator, 2506 AssignmentOperator operator,
2352 Node rhs, 2507 Node rhs,
2353 A arg); 2508 A arg);
2354 2509
2355 /// Compound index assignment of [rhs] with [operator] to [index] on the 2510 /// Compound index assignment of [rhs] with [operator] to [index] on the
2356 /// index operators of [receiver] whose getter and setter are defined by 2511 /// index operators of [receiver] whose getter and setter are defined by
2357 /// [getterSelector] and [setterSelector], respectively. 2512 /// [getterSelector] and [setterSelector], respectively.
2358 /// 2513 ///
2359 /// For instance: 2514 /// For instance:
2515 ///
2360 /// m(receiver, index, rhs) => receiver[index] += rhs; 2516 /// m(receiver, index, rhs) => receiver[index] += rhs;
2361 /// 2517 ///
2362 R visitCompoundIndexSet( 2518 R visitCompoundIndexSet(
2363 SendSet node, 2519 SendSet node,
2364 Node receiver, 2520 Node receiver,
2365 Node index, 2521 Node index,
2366 AssignmentOperator operator, 2522 AssignmentOperator operator,
2367 Node rhs, 2523 Node rhs,
2368 A arg); 2524 A arg);
2369 2525
2370 /// Compound index assignment of [rhs] with [operator] to [index] on the index 2526 /// Compound index assignment of [rhs] with [operator] to [index] on the index
2371 /// operators of a super class defined by [getter] and [setter]. 2527 /// operators of a super class defined by [getter] and [setter].
2372 /// 2528 ///
2373 /// For instance: 2529 /// For instance:
2530 ///
2374 /// class B { 2531 /// class B {
2375 /// operator [](index) {} 2532 /// operator [](index) {}
2376 /// operator [](index, value) {} 2533 /// operator [](index, value) {}
2377 /// } 2534 /// }
2378 /// class C extends B { 2535 /// class C extends B {
2379 /// m(index, rhs) => super[index] += rhs; 2536 /// m(index, rhs) => super[index] += rhs;
2380 /// } 2537 /// }
2381 /// 2538 ///
2382 R visitSuperCompoundIndexSet( 2539 R visitSuperCompoundIndexSet(
2383 SendSet node, 2540 SendSet node,
2384 MethodElement getter, 2541 MethodElement getter,
2385 MethodElement setter, 2542 MethodElement setter,
2386 Node index, 2543 Node index,
2387 AssignmentOperator operator, 2544 AssignmentOperator operator,
2388 Node rhs, 2545 Node rhs,
2389 A arg); 2546 A arg);
2390 2547
2391 /// Compound index assignment of [rhs] with [operator] to [index] on a super 2548 /// Compound index assignment of [rhs] with [operator] to [index] on a super
2392 /// super class where the index getter is undefined and the index setter is 2549 /// super class where the index getter is undefined and the index setter is
2393 /// defined by [setter]. 2550 /// defined by [setter].
2394 /// 2551 ///
2395 /// For instance 2552 /// For instance:
2553 ///
2396 /// class B { 2554 /// class B {
2397 /// } 2555 /// }
2398 /// class C extends B { 2556 /// class C extends B {
2399 /// m() => super[1] += 42; 2557 /// m() => super[1] += 42;
2400 /// } 2558 /// }
2401 /// 2559 ///
2402 R visitUnresolvedSuperGetterCompoundIndexSet( 2560 R visitUnresolvedSuperGetterCompoundIndexSet(
2403 Send node, 2561 Send node,
2404 Element element, 2562 Element element,
2405 MethodElement setter, 2563 MethodElement setter,
2406 Node index, 2564 Node index,
2407 AssignmentOperator operator, 2565 AssignmentOperator operator,
2408 Node rhs, 2566 Node rhs,
2409 A arg); 2567 A arg);
2410 2568
2411 /// Compound index assignment of [rhs] with [operator] to [index] on a super 2569 /// Compound index assignment of [rhs] with [operator] to [index] on a super
2412 /// super class where the index getter is defined by [getter] but the index 2570 /// super class where the index getter is defined by [getter] but the index
2413 /// setter is undefined. 2571 /// setter is undefined.
2414 /// 2572 ///
2415 /// For instance 2573 /// For instance:
2574 ///
2416 /// class B { 2575 /// class B {
2417 /// operator [](index) => 42; 2576 /// operator [](index) => 42;
2418 /// } 2577 /// }
2419 /// class C extends B { 2578 /// class C extends B {
2420 /// m() => super[1] += 42; 2579 /// m() => super[1] += 42;
2421 /// } 2580 /// }
2422 /// 2581 ///
2423 R visitUnresolvedSuperSetterCompoundIndexSet( 2582 R visitUnresolvedSuperSetterCompoundIndexSet(
2424 Send node, 2583 Send node,
2425 MethodElement getter, 2584 MethodElement getter,
2426 Element element, 2585 Element element,
2427 Node index, 2586 Node index,
2428 AssignmentOperator operator, 2587 AssignmentOperator operator,
2429 Node rhs, 2588 Node rhs,
2430 A arg); 2589 A arg);
2431 2590
2432 /// Compound index assignment of [rhs] with [operator] to [index] on a super 2591 /// Compound index assignment of [rhs] with [operator] to [index] on a super
2433 /// super class where the index getter and setter are undefined. 2592 /// super class where the index getter and setter are undefined.
2434 /// 2593 ///
2435 /// For instance 2594 /// For instance:
2595 ///
2436 /// class B { 2596 /// class B {
2437 /// } 2597 /// }
2438 /// class C extends B { 2598 /// class C extends B {
2439 /// m() => super[1] += 42; 2599 /// m() => super[1] += 42;
2440 /// } 2600 /// }
2441 /// 2601 ///
2442 R visitUnresolvedSuperCompoundIndexSet( 2602 R visitUnresolvedSuperCompoundIndexSet(
2443 Send node, 2603 Send node,
2444 Element element, 2604 Element element,
2445 Node index, 2605 Node index,
2446 AssignmentOperator operator, 2606 AssignmentOperator operator,
2447 Node rhs, 2607 Node rhs,
2448 A arg); 2608 A arg);
2449 2609
2450 /// Prefix expression with [operator] of the property on [receiver] whose 2610 /// Prefix expression with [operator] of the property on [receiver] whose
2451 /// getter and setter are defined by [getterSelector] and [setterSelector], 2611 /// getter and setter are defined by [getterSelector] and [setterSelector],
2452 /// respectively. 2612 /// respectively.
2453 /// 2613 ///
2454 /// For instance: 2614 /// For instance:
2615 ///
2455 /// m(receiver) => ++receiver.foo; 2616 /// m(receiver) => ++receiver.foo;
2456 /// 2617 ///
2457 R visitDynamicPropertyPrefix( 2618 R visitDynamicPropertyPrefix(
2458 Send node, 2619 Send node,
2459 Node receiver, 2620 Node receiver,
2460 IncDecOperator operator, 2621 IncDecOperator operator,
2461 Selector getterSelector, 2622 Selector getterSelector,
2462 Selector setterSelector, 2623 Selector setterSelector,
2463 A arg); 2624 A arg);
2464 2625
2465 /// Prefix expression with [operator] of the property on a possibly null 2626 /// Prefix expression with [operator] of the property on a possibly null
2466 /// [receiver] whose getter and setter are defined by [getterSelector] and 2627 /// [receiver] whose getter and setter are defined by [getterSelector] and
2467 /// [setterSelector], respectively. 2628 /// [setterSelector], respectively.
2468 /// 2629 ///
2469 /// For instance: 2630 /// For instance:
2631 ///
2470 /// m(receiver) => ++receiver?.foo; 2632 /// m(receiver) => ++receiver?.foo;
2471 /// 2633 ///
2472 R visitIfNotNullDynamicPropertyPrefix( 2634 R visitIfNotNullDynamicPropertyPrefix(
2473 Send node, 2635 Send node,
2474 Node receiver, 2636 Node receiver,
2475 IncDecOperator operator, 2637 IncDecOperator operator,
2476 Selector getterSelector, 2638 Selector getterSelector,
2477 Selector setterSelector, 2639 Selector setterSelector,
2478 A arg); 2640 A arg);
2479 2641
2480 /// Prefix expression with [operator] on a [parameter]. 2642 /// Prefix expression with [operator] on a [parameter].
2481 /// 2643 ///
2482 /// For instance: 2644 /// For instance:
2645 ///
2483 /// m(parameter) => ++parameter; 2646 /// m(parameter) => ++parameter;
2484 /// 2647 ///
2485 R visitParameterPrefix( 2648 R visitParameterPrefix(
2486 Send node, 2649 Send node,
2487 ParameterElement parameter, 2650 ParameterElement parameter,
2488 IncDecOperator operator, 2651 IncDecOperator operator,
2489 A arg); 2652 A arg);
2490 2653
2491 /// Prefix expression with [operator] on a final [parameter]. 2654 /// Prefix expression with [operator] on a final [parameter].
2492 /// 2655 ///
2493 /// For instance: 2656 /// For instance:
2657 ///
2494 /// m(final parameter) => ++parameter; 2658 /// m(final parameter) => ++parameter;
2495 /// 2659 ///
2496 R visitFinalParameterPrefix( 2660 R visitFinalParameterPrefix(
2497 Send node, 2661 Send node,
2498 ParameterElement parameter, 2662 ParameterElement parameter,
2499 IncDecOperator operator, 2663 IncDecOperator operator,
2500 A arg); 2664 A arg);
2501 2665
2502 /// Prefix expression with [operator] on a local [variable]. 2666 /// Prefix expression with [operator] on a local [variable].
2503 /// 2667 ///
2504 /// For instance: 2668 /// For instance:
2669 ///
2505 /// m() { 2670 /// m() {
2506 /// var variable; 2671 /// var variable;
2507 /// ++variable; 2672 /// ++variable;
2508 /// } 2673 /// }
2509 /// 2674 ///
2510 R visitLocalVariablePrefix( 2675 R visitLocalVariablePrefix(
2511 Send node, 2676 Send node,
2512 LocalVariableElement variable, 2677 LocalVariableElement variable,
2513 IncDecOperator operator, 2678 IncDecOperator operator,
2514 A arg); 2679 A arg);
2515 2680
2516 /// Prefix expression with [operator] on a final local [variable]. 2681 /// Prefix expression with [operator] on a final local [variable].
2517 /// 2682 ///
2518 /// For instance: 2683 /// For instance:
2684 ///
2519 /// m() { 2685 /// m() {
2520 /// final variable; 2686 /// final variable;
2521 /// ++variable; 2687 /// ++variable;
2522 /// } 2688 /// }
2523 /// 2689 ///
2524 R visitFinalLocalVariablePrefix( 2690 R visitFinalLocalVariablePrefix(
2525 Send node, 2691 Send node,
2526 LocalVariableElement variable, 2692 LocalVariableElement variable,
2527 IncDecOperator operator, 2693 IncDecOperator operator,
2528 A arg); 2694 A arg);
2529 2695
2530 /// Prefix expression with [operator] on a local [function]. 2696 /// Prefix expression with [operator] on a local [function].
2531 /// 2697 ///
2532 /// For instance: 2698 /// For instance:
2699 ///
2533 /// m() { 2700 /// m() {
2534 /// function() {} 2701 /// function() {}
2535 /// ++function; 2702 /// ++function;
2536 /// } 2703 /// }
2537 /// 2704 ///
2538 R visitLocalFunctionPrefix( 2705 R visitLocalFunctionPrefix(
2539 Send node, 2706 Send node,
2540 LocalFunctionElement function, 2707 LocalFunctionElement function,
2541 IncDecOperator operator, 2708 IncDecOperator operator,
2542 A arg); 2709 A arg);
2543 2710
2544 2711
2545 /// Prefix expression with [operator] of the property on `this` whose getter 2712 /// Prefix expression with [operator] of the property on `this` whose getter
2546 /// and setter are defined by [getterSelector] and [setterSelector], 2713 /// and setter are defined by [getterSelector] and [setterSelector],
2547 /// respectively. 2714 /// respectively.
2548 /// 2715 ///
2549 /// For instance: 2716 /// For instance:
2717 ///
2550 /// class C { 2718 /// class C {
2551 /// m() => ++foo; 2719 /// m() => ++foo;
2552 /// } 2720 /// }
2721 ///
2553 /// or 2722 /// or
2723 ///
2554 /// class C { 2724 /// class C {
2555 /// m() => ++this.foo; 2725 /// m() => ++this.foo;
2556 /// } 2726 /// }
2557 /// 2727 ///
2558 R visitThisPropertyPrefix( 2728 R visitThisPropertyPrefix(
2559 Send node, 2729 Send node,
2560 IncDecOperator operator, 2730 IncDecOperator operator,
2561 Selector getterSelector, 2731 Selector getterSelector,
2562 Selector setterSelector, 2732 Selector setterSelector,
2563 A arg); 2733 A arg);
2564 2734
2565 /// Prefix expression with [operator] on a static [field]. 2735 /// Prefix expression with [operator] on a static [field].
2566 /// 2736 ///
2567 /// For instance: 2737 /// For instance:
2738 ///
2568 /// class C { 2739 /// class C {
2569 /// static var field; 2740 /// static var field;
2570 /// m() => ++field; 2741 /// m() => ++field;
2571 /// } 2742 /// }
2572 /// 2743 ///
2573 R visitStaticFieldPrefix( 2744 R visitStaticFieldPrefix(
2574 Send node, 2745 Send node,
2575 FieldElement field, 2746 FieldElement field,
2576 IncDecOperator operator, 2747 IncDecOperator operator,
2577 A arg); 2748 A arg);
2578 2749
2579 /// Prefix expression with [operator] on a final static [field]. 2750 /// Prefix expression with [operator] on a final static [field].
2580 /// 2751 ///
2581 /// For instance: 2752 /// For instance:
2753 ///
2582 /// class C { 2754 /// class C {
2583 /// static final field = 42; 2755 /// static final field = 42;
2584 /// m() => ++field; 2756 /// m() => ++field;
2585 /// } 2757 /// }
2586 /// 2758 ///
2587 R visitFinalStaticFieldPrefix( 2759 R visitFinalStaticFieldPrefix(
2588 Send node, 2760 Send node,
2589 FieldElement field, 2761 FieldElement field,
2590 IncDecOperator operator, 2762 IncDecOperator operator,
2591 A arg); 2763 A arg);
2592 2764
2593 /// Prefix expression with [operator] reading from a static [getter] and 2765 /// Prefix expression with [operator] reading from a static [getter] and
2594 /// writing to a static [setter]. 2766 /// writing to a static [setter].
2595 /// 2767 ///
2596 /// For instance: 2768 /// For instance:
2769 ///
2597 /// class C { 2770 /// class C {
2598 /// static get o => 0; 2771 /// static get o => 0;
2599 /// static set o(_) {} 2772 /// static set o(_) {}
2600 /// m() => ++o; 2773 /// m() => ++o;
2601 /// } 2774 /// }
2602 /// 2775 ///
2603 R visitStaticGetterSetterPrefix( 2776 R visitStaticGetterSetterPrefix(
2604 Send node, 2777 Send node,
2605 FunctionElement getter, 2778 FunctionElement getter,
2606 FunctionElement setter, 2779 FunctionElement setter,
2607 IncDecOperator operator, 2780 IncDecOperator operator,
2608 A arg); 2781 A arg);
2609 2782
2610 2783
2611 /// Prefix expression with [operator] reading from a static [method], that is, 2784 /// Prefix expression with [operator] reading from a static [method], that is,
2612 /// closurizing [method], and writing to a static [setter]. 2785 /// closurizing [method], and writing to a static [setter].
2613 /// 2786 ///
2614 /// For instance: 2787 /// For instance:
2788 ///
2615 /// class C { 2789 /// class C {
2616 /// static o() {} 2790 /// static o() {}
2617 /// static set o(_) {} 2791 /// static set o(_) {}
2618 /// m() => ++o; 2792 /// m() => ++o;
2619 /// } 2793 /// }
2620 /// 2794 ///
2621 R visitStaticMethodSetterPrefix( 2795 R visitStaticMethodSetterPrefix(
2622 Send node, 2796 Send node,
2623 FunctionElement getter, 2797 FunctionElement getter,
2624 FunctionElement setter, 2798 FunctionElement setter,
2625 IncDecOperator operator, 2799 IncDecOperator operator,
2626 A arg); 2800 A arg);
2627 2801
2628 /// Prefix expression with [operator] on a top level [field]. 2802 /// Prefix expression with [operator] on a top level [field].
2629 /// 2803 ///
2630 /// For instance: 2804 /// For instance:
2805 ///
2631 /// var field; 2806 /// var field;
2632 /// m() => ++field; 2807 /// m() => ++field;
2633 /// 2808 ///
2634 R visitTopLevelFieldPrefix( 2809 R visitTopLevelFieldPrefix(
2635 Send node, 2810 Send node,
2636 FieldElement field, 2811 FieldElement field,
2637 IncDecOperator operator, 2812 IncDecOperator operator,
2638 A arg); 2813 A arg);
2639 2814
2640 /// Prefix expression with [operator] on a final top level [field]. 2815 /// Prefix expression with [operator] on a final top level [field].
2641 /// 2816 ///
2642 /// For instance: 2817 /// For instance:
2818 ///
2643 /// final field; 2819 /// final field;
2644 /// m() => ++field; 2820 /// m() => ++field;
2645 /// 2821 ///
2646 R visitFinalTopLevelFieldPrefix( 2822 R visitFinalTopLevelFieldPrefix(
2647 Send node, 2823 Send node,
2648 FieldElement field, 2824 FieldElement field,
2649 IncDecOperator operator, 2825 IncDecOperator operator,
2650 A arg); 2826 A arg);
2651 2827
2652 /// Prefix expression with [operator] reading from a top level [getter] and 2828 /// Prefix expression with [operator] reading from a top level [getter] and
2653 /// writing to a top level [setter]. 2829 /// writing to a top level [setter].
2654 /// 2830 ///
2655 /// For instance: 2831 /// For instance:
2832 ///
2656 /// get o => 0; 2833 /// get o => 0;
2657 /// set o(_) {} 2834 /// set o(_) {}
2658 /// m() => ++o; 2835 /// m() => ++o;
2659 /// 2836 ///
2660 R visitTopLevelGetterSetterPrefix( 2837 R visitTopLevelGetterSetterPrefix(
2661 Send node, 2838 Send node,
2662 FunctionElement getter, 2839 FunctionElement getter,
2663 FunctionElement setter, 2840 FunctionElement setter,
2664 IncDecOperator operator, 2841 IncDecOperator operator,
2665 A arg); 2842 A arg);
2666 2843
2667 /// Prefix expression with [operator] reading from a top level [method], that 2844 /// Prefix expression with [operator] reading from a top level [method], that
2668 /// is, closurizing [method], and writing to a top level [setter]. 2845 /// is, closurizing [method], and writing to a top level [setter].
2669 /// 2846 ///
2670 /// For instance: 2847 /// For instance:
2848 ///
2671 /// o() {} 2849 /// o() {}
2672 /// set o(_) {} 2850 /// set o(_) {}
2673 /// m() => ++o; 2851 /// m() => ++o;
2674 /// 2852 ///
2675 R visitTopLevelMethodSetterPrefix( 2853 R visitTopLevelMethodSetterPrefix(
2676 Send node, 2854 Send node,
2677 FunctionElement method, 2855 FunctionElement method,
2678 FunctionElement setter, 2856 FunctionElement setter,
2679 IncDecOperator operator, 2857 IncDecOperator operator,
2680 A arg); 2858 A arg);
2681 2859
2682 /// Prefix expression with [operator] on a super [field]. 2860 /// Prefix expression with [operator] on a super [field].
2683 /// 2861 ///
2684 /// For instance: 2862 /// For instance:
2863 ///
2685 /// class B { 2864 /// class B {
2686 /// var field; 2865 /// var field;
2687 /// } 2866 /// }
2688 /// class C extends B { 2867 /// class C extends B {
2689 /// m() => ++super.field; 2868 /// m() => ++super.field;
2690 /// } 2869 /// }
2691 /// 2870 ///
2692 R visitSuperFieldPrefix( 2871 R visitSuperFieldPrefix(
2693 Send node, 2872 Send node,
2694 FieldElement field, 2873 FieldElement field,
2695 IncDecOperator operator, 2874 IncDecOperator operator,
2696 A arg); 2875 A arg);
2697 2876
2698 /// Prefix expression with [operator] reading from the super field [readField] 2877 /// Prefix expression with [operator] reading from the super field [readField]
2699 /// and writing to the different super field [writtenField]. 2878 /// and writing to the different super field [writtenField].
2700 /// 2879 ///
2701 /// For instance: 2880 /// For instance:
2881 ///
2702 /// class A { 2882 /// class A {
2703 /// var field; 2883 /// var field;
2704 /// } 2884 /// }
2705 /// class B extends A { 2885 /// class B extends A {
2706 /// final field; 2886 /// final field;
2707 /// } 2887 /// }
2708 /// class C extends B { 2888 /// class C extends B {
2709 /// m() => ++super.field; 2889 /// m() => ++super.field;
2710 /// } 2890 /// }
2711 /// 2891 ///
2712 R visitSuperFieldFieldPrefix( 2892 R visitSuperFieldFieldPrefix(
2713 Send node, 2893 Send node,
2714 FieldElement readField, 2894 FieldElement readField,
2715 FieldElement writtenField, 2895 FieldElement writtenField,
2716 IncDecOperator operator, 2896 IncDecOperator operator,
2717 A arg); 2897 A arg);
2718 2898
2719 /// Prefix expression with [operator] reading from a super [field] and writing 2899 /// Prefix expression with [operator] reading from a super [field] and writing
2720 /// to a super [setter]. 2900 /// to a super [setter].
2721 /// 2901 ///
2722 /// For instance: 2902 /// For instance:
2903 ///
2723 /// class A { 2904 /// class A {
2724 /// var field; 2905 /// var field;
2725 /// } 2906 /// }
2726 /// class B extends A { 2907 /// class B extends A {
2727 /// set field(_) {} 2908 /// set field(_) {}
2728 /// } 2909 /// }
2729 /// class C extends B { 2910 /// class C extends B {
2730 /// m() => ++super.field; 2911 /// m() => ++super.field;
2731 /// } 2912 /// }
2732 /// 2913 ///
2733 R visitSuperFieldSetterPrefix( 2914 R visitSuperFieldSetterPrefix(
2734 Send node, 2915 Send node,
2735 FieldElement field, 2916 FieldElement field,
2736 FunctionElement setter, 2917 FunctionElement setter,
2737 IncDecOperator operator, 2918 IncDecOperator operator,
2738 A arg); 2919 A arg);
2739 2920
2740 2921
2741 /// Prefix expression with [operator] reading from a super [getter] and 2922 /// Prefix expression with [operator] reading from a super [getter] and
2742 /// writing to a super [setter]. 2923 /// writing to a super [setter].
2743 /// 2924 ///
2744 /// For instance: 2925 /// For instance:
2926 ///
2745 /// class B { 2927 /// class B {
2746 /// get field => 0; 2928 /// get field => 0;
2747 /// set field(_) {} 2929 /// set field(_) {}
2748 /// } 2930 /// }
2749 /// class C extends B { 2931 /// class C extends B {
2750 /// m() => ++super.field; 2932 /// m() => ++super.field;
2751 /// } 2933 /// }
2752 /// 2934 ///
2753 R visitSuperGetterSetterPrefix( 2935 R visitSuperGetterSetterPrefix(
2754 Send node, 2936 Send node,
2755 FunctionElement getter, 2937 FunctionElement getter,
2756 FunctionElement setter, 2938 FunctionElement setter,
2757 IncDecOperator operator, 2939 IncDecOperator operator,
2758 A arg); 2940 A arg);
2759 2941
2760 /// Prefix expression with [operator] reading from a super [getter] and 2942 /// Prefix expression with [operator] reading from a super [getter] and
2761 /// writing to a super [field]. 2943 /// writing to a super [field].
2762 /// 2944 ///
2763 /// For instance: 2945 /// For instance:
2946 ///
2764 /// class A { 2947 /// class A {
2765 /// var field; 2948 /// var field;
2766 /// } 2949 /// }
2767 /// class B extends A { 2950 /// class B extends A {
2768 /// get field => 0; 2951 /// get field => 0;
2769 /// } 2952 /// }
2770 /// class C extends B { 2953 /// class C extends B {
2771 /// m() => ++super.field; 2954 /// m() => ++super.field;
2772 /// } 2955 /// }
2773 /// 2956 ///
2774 R visitSuperGetterFieldPrefix( 2957 R visitSuperGetterFieldPrefix(
2775 Send node, 2958 Send node,
2776 FunctionElement getter, 2959 FunctionElement getter,
2777 FieldElement field, 2960 FieldElement field,
2778 IncDecOperator operator, 2961 IncDecOperator operator,
2779 A arg); 2962 A arg);
2780 2963
2781 /// Prefix expression with [operator] reading from a super [method], that is, 2964 /// Prefix expression with [operator] reading from a super [method], that is,
2782 /// closurizing [method], and writing to a super [setter]. 2965 /// closurizing [method], and writing to a super [setter].
2783 /// 2966 ///
2784 /// For instance: 2967 /// For instance:
2968 ///
2785 /// class B { 2969 /// class B {
2786 /// o() {} 2970 /// o() {}
2787 /// set o(_) {} 2971 /// set o(_) {}
2788 /// } 2972 /// }
2789 /// class C extends B { 2973 /// class C extends B {
2790 /// m() => ++super.o; 2974 /// m() => ++super.o;
2791 /// } 2975 /// }
2792 /// 2976 ///
2793 R visitSuperMethodSetterPrefix( 2977 R visitSuperMethodSetterPrefix(
2794 Send node, 2978 Send node,
2795 FunctionElement method, 2979 FunctionElement method,
2796 FunctionElement setter, 2980 FunctionElement setter,
2797 IncDecOperator operator, 2981 IncDecOperator operator,
2798 A arg); 2982 A arg);
2799 2983
2800 /// Prefix expression with [operator] reading from a super [method], that is, 2984 /// Prefix expression with [operator] reading from a super [method], that is,
2801 /// closurizing [method], and writing to an unresolved super setter. 2985 /// closurizing [method], and writing to an unresolved super setter.
2802 /// 2986 ///
2803 /// For instance: 2987 /// For instance:
2988 ///
2804 /// class B { 2989 /// class B {
2805 /// o() {} 2990 /// o() {}
2806 /// set o(_) {} 2991 /// set o(_) {}
2807 /// } 2992 /// }
2808 /// class C extends B { 2993 /// class C extends B {
2809 /// m() => ++super.o; 2994 /// m() => ++super.o;
2810 /// } 2995 /// }
2811 /// 2996 ///
2812 R visitSuperMethodPrefix( 2997 R visitSuperMethodPrefix(
2813 Send node, 2998 Send node,
2814 FunctionElement method, 2999 FunctionElement method,
2815 IncDecOperator operator, 3000 IncDecOperator operator,
2816 A arg); 3001 A arg);
2817 3002
2818 /// Prefix expression with [operator] reading from an unresolved super getter 3003 /// Prefix expression with [operator] reading from an unresolved super getter
2819 /// and writing to a super [setter]. 3004 /// and writing to a super [setter].
2820 /// 3005 ///
2821 /// For instance 3006 /// For instance:
3007 ///
2822 /// class B { 3008 /// class B {
2823 /// set o(_) {} 3009 /// set o(_) {}
2824 /// } 3010 /// }
2825 /// class C extends B { 3011 /// class C extends B {
2826 /// m() => ++super.o; 3012 /// m() => ++super.o;
2827 /// } 3013 /// }
2828 /// 3014 ///
2829 /// 3015 ///
2830 R visitUnresolvedSuperGetterPrefix( 3016 R visitUnresolvedSuperGetterPrefix(
2831 Send node, 3017 Send node,
2832 Element element, 3018 Element element,
2833 MethodElement setter, 3019 MethodElement setter,
2834 IncDecOperator operator, 3020 IncDecOperator operator,
2835 A arg); 3021 A arg);
2836 3022
2837 /// Prefix expression with [operator] reading from a super [getter] and 3023 /// Prefix expression with [operator] reading from a super [getter] and
2838 /// writing to an unresolved super setter. 3024 /// writing to an unresolved super setter.
2839 /// 3025 ///
2840 /// For instance 3026 /// For instance:
3027 ///
2841 /// class B { 3028 /// class B {
2842 /// get o => 42 3029 /// get o => 42
2843 /// } 3030 /// }
2844 /// class C extends B { 3031 /// class C extends B {
2845 /// m() => ++super.o; 3032 /// m() => ++super.o;
2846 /// } 3033 /// }
2847 /// 3034 ///
2848 /// 3035 ///
2849 R visitUnresolvedSuperSetterPrefix( 3036 R visitUnresolvedSuperSetterPrefix(
2850 Send node, 3037 Send node,
2851 MethodElement getter, 3038 MethodElement getter,
2852 Element element, 3039 Element element,
2853 IncDecOperator operator, 3040 IncDecOperator operator,
2854 A arg); 3041 A arg);
2855 3042
2856 /// Prefix expression with [operator] on a type literal for a class [element]. 3043 /// Prefix expression with [operator] on a type literal for a class [element].
2857 /// 3044 ///
2858 /// For instance: 3045 /// For instance:
3046 ///
2859 /// class C {} 3047 /// class C {}
2860 /// m() => ++C; 3048 /// m() => ++C;
2861 /// 3049 ///
2862 R visitClassTypeLiteralPrefix( 3050 R visitClassTypeLiteralPrefix(
2863 Send node, 3051 Send node,
2864 ConstantExpression constant, 3052 ConstantExpression constant,
2865 IncDecOperator operator, 3053 IncDecOperator operator,
2866 A arg); 3054 A arg);
2867 3055
2868 /// Prefix expression with [operator] on a type literal for a typedef 3056 /// Prefix expression with [operator] on a type literal for a typedef
2869 /// [element]. 3057 /// [element].
2870 /// 3058 ///
2871 /// For instance: 3059 /// For instance:
3060 ///
2872 /// typedef F(); 3061 /// typedef F();
2873 /// m() => ++F; 3062 /// m() => ++F;
2874 /// 3063 ///
2875 R visitTypedefTypeLiteralPrefix( 3064 R visitTypedefTypeLiteralPrefix(
2876 Send node, 3065 Send node,
2877 ConstantExpression constant, 3066 ConstantExpression constant,
2878 IncDecOperator operator, 3067 IncDecOperator operator,
2879 A arg); 3068 A arg);
2880 3069
2881 /// Prefix expression with [operator] on a type literal for a type variable 3070 /// Prefix expression with [operator] on a type literal for a type variable
2882 /// [element]. 3071 /// [element].
2883 /// 3072 ///
2884 /// For instance: 3073 /// For instance:
3074 ///
2885 /// class C<T> { 3075 /// class C<T> {
2886 /// m() => ++T; 3076 /// m() => ++T;
2887 /// } 3077 /// }
2888 /// 3078 ///
2889 R visitTypeVariableTypeLiteralPrefix( 3079 R visitTypeVariableTypeLiteralPrefix(
2890 Send node, 3080 Send node,
2891 TypeVariableElement element, 3081 TypeVariableElement element,
2892 IncDecOperator operator, 3082 IncDecOperator operator,
2893 A arg); 3083 A arg);
2894 3084
2895 /// Prefix expression with [operator] on the type literal for `dynamic`. 3085 /// Prefix expression with [operator] on the type literal for `dynamic`.
2896 /// 3086 ///
2897 /// For instance: 3087 /// For instance:
3088 ///
2898 /// m() => ++dynamic; 3089 /// m() => ++dynamic;
2899 /// 3090 ///
2900 R visitDynamicTypeLiteralPrefix( 3091 R visitDynamicTypeLiteralPrefix(
2901 Send node, 3092 Send node,
2902 ConstantExpression constant, 3093 ConstantExpression constant,
2903 IncDecOperator operator, 3094 IncDecOperator operator,
2904 A arg); 3095 A arg);
2905 3096
2906 /// Postfix expression with [operator] of the property on [receiver] whose 3097 /// Postfix expression with [operator] of the property on [receiver] whose
2907 /// getter and setter are defined by [getterSelector] and [setterSelector], 3098 /// getter and setter are defined by [getterSelector] and [setterSelector],
2908 /// respectively. 3099 /// respectively.
2909 /// 3100 ///
2910 /// For instance: 3101 /// For instance:
3102 ///
2911 /// m(receiver) => receiver.foo++; 3103 /// m(receiver) => receiver.foo++;
2912 /// 3104 ///
2913 R visitDynamicPropertyPostfix( 3105 R visitDynamicPropertyPostfix(
2914 Send node, 3106 Send node,
2915 Node receiver, 3107 Node receiver,
2916 IncDecOperator operator, 3108 IncDecOperator operator,
2917 Selector getterSelector, 3109 Selector getterSelector,
2918 Selector setterSelector, 3110 Selector setterSelector,
2919 A arg); 3111 A arg);
2920 3112
2921 /// Postfix expression with [operator] of the property on a possibly null 3113 /// Postfix expression with [operator] of the property on a possibly null
2922 /// [receiver] whose getter and setter are defined by [getterSelector] and 3114 /// [receiver] whose getter and setter are defined by [getterSelector] and
2923 /// [setterSelector], respectively. 3115 /// [setterSelector], respectively.
2924 /// 3116 ///
2925 /// For instance: 3117 /// For instance:
3118 ///
2926 /// m(receiver) => receiver?.foo++; 3119 /// m(receiver) => receiver?.foo++;
2927 /// 3120 ///
2928 R visitIfNotNullDynamicPropertyPostfix( 3121 R visitIfNotNullDynamicPropertyPostfix(
2929 Send node, 3122 Send node,
2930 Node receiver, 3123 Node receiver,
2931 IncDecOperator operator, 3124 IncDecOperator operator,
2932 Selector getterSelector, 3125 Selector getterSelector,
2933 Selector setterSelector, 3126 Selector setterSelector,
2934 A arg); 3127 A arg);
2935 3128
2936 /// Postfix expression with [operator] on a [parameter]. 3129 /// Postfix expression with [operator] on a [parameter].
2937 /// 3130 ///
2938 /// For instance: 3131 /// For instance:
3132 ///
2939 /// m(parameter) => parameter++; 3133 /// m(parameter) => parameter++;
2940 /// 3134 ///
2941 R visitParameterPostfix( 3135 R visitParameterPostfix(
2942 Send node, 3136 Send node,
2943 ParameterElement parameter, 3137 ParameterElement parameter,
2944 IncDecOperator operator, 3138 IncDecOperator operator,
2945 A arg); 3139 A arg);
2946 3140
2947 /// Postfix expression with [operator] on a final [parameter]. 3141 /// Postfix expression with [operator] on a final [parameter].
2948 /// 3142 ///
2949 /// For instance: 3143 /// For instance:
3144 ///
2950 /// m(final parameter) => parameter++; 3145 /// m(final parameter) => parameter++;
2951 /// 3146 ///
2952 R visitFinalParameterPostfix( 3147 R visitFinalParameterPostfix(
2953 Send node, 3148 Send node,
2954 ParameterElement parameter, 3149 ParameterElement parameter,
2955 IncDecOperator operator, 3150 IncDecOperator operator,
2956 A arg); 3151 A arg);
2957 3152
2958 /// Postfix expression with [operator] on a local [variable]. 3153 /// Postfix expression with [operator] on a local [variable].
2959 /// 3154 ///
2960 /// For instance: 3155 /// For instance:
3156 ///
2961 /// m() { 3157 /// m() {
2962 /// var variable; 3158 /// var variable;
2963 /// variable++; 3159 /// variable++;
2964 /// } 3160 /// }
2965 /// 3161 ///
2966 R visitLocalVariablePostfix( 3162 R visitLocalVariablePostfix(
2967 Send node, 3163 Send node,
2968 LocalVariableElement variable, 3164 LocalVariableElement variable,
2969 IncDecOperator operator, 3165 IncDecOperator operator,
2970 A arg); 3166 A arg);
2971 3167
2972 /// Postfix expression with [operator] on a final local [variable]. 3168 /// Postfix expression with [operator] on a final local [variable].
2973 /// 3169 ///
2974 /// For instance: 3170 /// For instance:
3171 ///
2975 /// m() { 3172 /// m() {
2976 /// final variable; 3173 /// final variable;
2977 /// variable++; 3174 /// variable++;
2978 /// } 3175 /// }
2979 /// 3176 ///
2980 R visitFinalLocalVariablePostfix( 3177 R visitFinalLocalVariablePostfix(
2981 Send node, 3178 Send node,
2982 LocalVariableElement variable, 3179 LocalVariableElement variable,
2983 IncDecOperator operator, 3180 IncDecOperator operator,
2984 A arg); 3181 A arg);
2985 3182
2986 /// Postfix expression with [operator] on a local [function]. 3183 /// Postfix expression with [operator] on a local [function].
2987 /// 3184 ///
2988 /// For instance: 3185 /// For instance:
3186 ///
2989 /// m() { 3187 /// m() {
2990 /// function() {} 3188 /// function() {}
2991 /// function++; 3189 /// function++;
2992 /// } 3190 /// }
2993 /// 3191 ///
2994 R visitLocalFunctionPostfix( 3192 R visitLocalFunctionPostfix(
2995 Send node, 3193 Send node,
2996 LocalFunctionElement function, 3194 LocalFunctionElement function,
2997 IncDecOperator operator, 3195 IncDecOperator operator,
2998 A arg); 3196 A arg);
2999 3197
3000 3198
3001 /// Postfix expression with [operator] of the property on `this` whose getter 3199 /// Postfix expression with [operator] of the property on `this` whose getter
3002 /// and setter are defined by [getterSelector] and [setterSelector], 3200 /// and setter are defined by [getterSelector] and [setterSelector],
3003 /// respectively. 3201 /// respectively.
3004 /// 3202 ///
3005 /// For instance: 3203 /// For instance:
3204 ///
3006 /// class C { 3205 /// class C {
3007 /// m() => foo++; 3206 /// m() => foo++;
3008 /// } 3207 /// }
3208 ///
3009 /// or 3209 /// or
3210 ///
3010 /// class C { 3211 /// class C {
3011 /// m() => this.foo++; 3212 /// m() => this.foo++;
3012 /// } 3213 /// }
3013 /// 3214 ///
3014 R visitThisPropertyPostfix( 3215 R visitThisPropertyPostfix(
3015 Send node, 3216 Send node,
3016 IncDecOperator operator, 3217 IncDecOperator operator,
3017 Selector getterSelector, 3218 Selector getterSelector,
3018 Selector setterSelector, 3219 Selector setterSelector,
3019 A arg); 3220 A arg);
3020 3221
3021 /// Postfix expression with [operator] on a static [field]. 3222 /// Postfix expression with [operator] on a static [field].
3022 /// 3223 ///
3023 /// For instance: 3224 /// For instance:
3225 ///
3024 /// class C { 3226 /// class C {
3025 /// static var field; 3227 /// static var field;
3026 /// m() => field++; 3228 /// m() => field++;
3027 /// } 3229 /// }
3028 /// 3230 ///
3029 R visitStaticFieldPostfix( 3231 R visitStaticFieldPostfix(
3030 Send node, 3232 Send node,
3031 FieldElement field, 3233 FieldElement field,
3032 IncDecOperator operator, 3234 IncDecOperator operator,
3033 A arg); 3235 A arg);
3034 3236
3035 /// Postfix expression with [operator] on a final static [field]. 3237 /// Postfix expression with [operator] on a final static [field].
3036 /// 3238 ///
3037 /// For instance: 3239 /// For instance:
3240 ///
3038 /// class C { 3241 /// class C {
3039 /// static final field; 3242 /// static final field;
3040 /// m() => field++; 3243 /// m() => field++;
3041 /// } 3244 /// }
3042 /// 3245 ///
3043 R visitFinalStaticFieldPostfix( 3246 R visitFinalStaticFieldPostfix(
3044 Send node, 3247 Send node,
3045 FieldElement field, 3248 FieldElement field,
3046 IncDecOperator operator, 3249 IncDecOperator operator,
3047 A arg); 3250 A arg);
3048 3251
3049 /// Postfix expression with [operator] reading from a static [getter] and 3252 /// Postfix expression with [operator] reading from a static [getter] and
3050 /// writing to a static [setter]. 3253 /// writing to a static [setter].
3051 /// 3254 ///
3052 /// For instance: 3255 /// For instance:
3256 ///
3053 /// class C { 3257 /// class C {
3054 /// static get o => 0; 3258 /// static get o => 0;
3055 /// static set o(_) {} 3259 /// static set o(_) {}
3056 /// m() => o++; 3260 /// m() => o++;
3057 /// } 3261 /// }
3058 /// 3262 ///
3059 R visitStaticGetterSetterPostfix( 3263 R visitStaticGetterSetterPostfix(
3060 Send node, 3264 Send node,
3061 FunctionElement getter, 3265 FunctionElement getter,
3062 FunctionElement setter, 3266 FunctionElement setter,
3063 IncDecOperator operator, 3267 IncDecOperator operator,
3064 A arg); 3268 A arg);
3065 3269
3066 3270
3067 /// Postfix expression with [operator] reading from a static [method], that 3271 /// Postfix expression with [operator] reading from a static [method], that
3068 /// is, closurizing [method], and writing to a static [setter]. 3272 /// is, closurizing [method], and writing to a static [setter].
3069 /// 3273 ///
3070 /// For instance: 3274 /// For instance:
3275 ///
3071 /// class C { 3276 /// class C {
3072 /// static o() {} 3277 /// static o() {}
3073 /// static set o(_) {} 3278 /// static set o(_) {}
3074 /// m() => o++; 3279 /// m() => o++;
3075 /// } 3280 /// }
3076 /// 3281 ///
3077 R visitStaticMethodSetterPostfix( 3282 R visitStaticMethodSetterPostfix(
3078 Send node, 3283 Send node,
3079 FunctionElement getter, 3284 FunctionElement getter,
3080 FunctionElement setter, 3285 FunctionElement setter,
3081 IncDecOperator operator, 3286 IncDecOperator operator,
3082 A arg); 3287 A arg);
3083 3288
3084 /// Postfix expression with [operator] on a top level [field]. 3289 /// Postfix expression with [operator] on a top level [field].
3085 /// 3290 ///
3086 /// For instance: 3291 /// For instance:
3292 ///
3087 /// var field; 3293 /// var field;
3088 /// m() => field++; 3294 /// m() => field++;
3089 /// 3295 ///
3090 R visitTopLevelFieldPostfix( 3296 R visitTopLevelFieldPostfix(
3091 Send node, 3297 Send node,
3092 FieldElement field, 3298 FieldElement field,
3093 IncDecOperator operator, 3299 IncDecOperator operator,
3094 A arg); 3300 A arg);
3095 3301
3096 /// Postfix expression with [operator] on a final top level [field]. 3302 /// Postfix expression with [operator] on a final top level [field].
3097 /// 3303 ///
3098 /// For instance: 3304 /// For instance:
3305 ///
3099 /// final field = 42; 3306 /// final field = 42;
3100 /// m() => field++; 3307 /// m() => field++;
3101 /// 3308 ///
3102 R visitFinalTopLevelFieldPostfix( 3309 R visitFinalTopLevelFieldPostfix(
3103 Send node, 3310 Send node,
3104 FieldElement field, 3311 FieldElement field,
3105 IncDecOperator operator, 3312 IncDecOperator operator,
3106 A arg); 3313 A arg);
3107 3314
3108 /// Postfix expression with [operator] reading from a top level [getter] and 3315 /// Postfix expression with [operator] reading from a top level [getter] and
3109 /// writing to a top level [setter]. 3316 /// writing to a top level [setter].
3110 /// 3317 ///
3111 /// For instance: 3318 /// For instance:
3319 ///
3112 /// get o => 0; 3320 /// get o => 0;
3113 /// set o(_) {} 3321 /// set o(_) {}
3114 /// m() => o++; 3322 /// m() => o++;
3115 /// 3323 ///
3116 R visitTopLevelGetterSetterPostfix( 3324 R visitTopLevelGetterSetterPostfix(
3117 Send node, 3325 Send node,
3118 FunctionElement getter, 3326 FunctionElement getter,
3119 FunctionElement setter, 3327 FunctionElement setter,
3120 IncDecOperator operator, 3328 IncDecOperator operator,
3121 A arg); 3329 A arg);
3122 3330
3123 /// Postfix expression with [operator] reading from a top level [method], that 3331 /// Postfix expression with [operator] reading from a top level [method], that
3124 /// is, closurizing [method], and writing to a top level [setter]. 3332 /// is, closurizing [method], and writing to a top level [setter].
3125 /// 3333 ///
3126 /// For instance: 3334 /// For instance:
3335 ///
3127 /// o() {} 3336 /// o() {}
3128 /// set o(_) {} 3337 /// set o(_) {}
3129 /// m() => o++; 3338 /// m() => o++;
3130 /// 3339 ///
3131 R visitTopLevelMethodSetterPostfix( 3340 R visitTopLevelMethodSetterPostfix(
3132 Send node, 3341 Send node,
3133 FunctionElement method, 3342 FunctionElement method,
3134 FunctionElement setter, 3343 FunctionElement setter,
3135 IncDecOperator operator, 3344 IncDecOperator operator,
3136 A arg); 3345 A arg);
3137 3346
3138 /// Postfix expression with [operator] on a super [field]. 3347 /// Postfix expression with [operator] on a super [field].
3139 /// 3348 ///
3140 /// For instance: 3349 /// For instance:
3350 ///
3141 /// class B { 3351 /// class B {
3142 /// var field; 3352 /// var field;
3143 /// } 3353 /// }
3144 /// class C extends B { 3354 /// class C extends B {
3145 /// m() => super.field++; 3355 /// m() => super.field++;
3146 /// } 3356 /// }
3147 /// 3357 ///
3148 R visitSuperFieldPostfix( 3358 R visitSuperFieldPostfix(
3149 Send node, 3359 Send node,
3150 FieldElement field, 3360 FieldElement field,
3151 IncDecOperator operator, 3361 IncDecOperator operator,
3152 A arg); 3362 A arg);
3153 3363
3154 /// Postfix expression with [operator] reading from the super field 3364 /// Postfix expression with [operator] reading from the super field
3155 /// [readField] and writing to the different super field [writtenField]. 3365 /// [readField] and writing to the different super field [writtenField].
3156 /// 3366 ///
3157 /// For instance: 3367 /// For instance:
3368 ///
3158 /// class A { 3369 /// class A {
3159 /// var field; 3370 /// var field;
3160 /// } 3371 /// }
3161 /// class B extends A { 3372 /// class B extends A {
3162 /// final field; 3373 /// final field;
3163 /// } 3374 /// }
3164 /// class C extends B { 3375 /// class C extends B {
3165 /// m() => super.field++; 3376 /// m() => super.field++;
3166 /// } 3377 /// }
3167 /// 3378 ///
3168 R visitSuperFieldFieldPostfix( 3379 R visitSuperFieldFieldPostfix(
3169 Send node, 3380 Send node,
3170 FieldElement readField, 3381 FieldElement readField,
3171 FieldElement writtenField, 3382 FieldElement writtenField,
3172 IncDecOperator operator, 3383 IncDecOperator operator,
3173 A arg); 3384 A arg);
3174 3385
3175 /// Postfix expression with [operator] reading from a super [field] and 3386 /// Postfix expression with [operator] reading from a super [field] and
3176 /// writing to a super [setter]. 3387 /// writing to a super [setter].
3177 /// 3388 ///
3178 /// For instance: 3389 /// For instance:
3390 ///
3179 /// class A { 3391 /// class A {
3180 /// var field; 3392 /// var field;
3181 /// } 3393 /// }
3182 /// class B extends A { 3394 /// class B extends A {
3183 /// set field(_) {} 3395 /// set field(_) {}
3184 /// } 3396 /// }
3185 /// class C extends B { 3397 /// class C extends B {
3186 /// m() => super.field++; 3398 /// m() => super.field++;
3187 /// } 3399 /// }
3188 /// 3400 ///
3189 R visitSuperFieldSetterPostfix( 3401 R visitSuperFieldSetterPostfix(
3190 Send node, 3402 Send node,
3191 FieldElement field, 3403 FieldElement field,
3192 FunctionElement setter, 3404 FunctionElement setter,
3193 IncDecOperator operator, 3405 IncDecOperator operator,
3194 A arg); 3406 A arg);
3195 3407
3196 3408
3197 /// Postfix expression with [operator] reading from a super [getter] and 3409 /// Postfix expression with [operator] reading from a super [getter] and
3198 /// writing to a super [setter]. 3410 /// writing to a super [setter].
3199 /// 3411 ///
3200 /// For instance: 3412 /// For instance:
3413 ///
3201 /// class B { 3414 /// class B {
3202 /// get field => 0; 3415 /// get field => 0;
3203 /// set field(_) {} 3416 /// set field(_) {}
3204 /// } 3417 /// }
3205 /// class C extends B { 3418 /// class C extends B {
3206 /// m() => super.field++; 3419 /// m() => super.field++;
3207 /// } 3420 /// }
3208 /// 3421 ///
3209 R visitSuperGetterSetterPostfix( 3422 R visitSuperGetterSetterPostfix(
3210 Send node, 3423 Send node,
3211 FunctionElement getter, 3424 FunctionElement getter,
3212 FunctionElement setter, 3425 FunctionElement setter,
3213 IncDecOperator operator, 3426 IncDecOperator operator,
3214 A arg); 3427 A arg);
3215 3428
3216 /// Postfix expression with [operator] reading from a super [getter] and 3429 /// Postfix expression with [operator] reading from a super [getter] and
3217 /// writing to a super [field]. 3430 /// writing to a super [field].
3218 /// 3431 ///
3219 /// For instance: 3432 /// For instance:
3433 ///
3220 /// class A { 3434 /// class A {
3221 /// var field; 3435 /// var field;
3222 /// } 3436 /// }
3223 /// class B extends A { 3437 /// class B extends A {
3224 /// get field => 0; 3438 /// get field => 0;
3225 /// } 3439 /// }
3226 /// class C extends B { 3440 /// class C extends B {
3227 /// m() => super.field++; 3441 /// m() => super.field++;
3228 /// } 3442 /// }
3229 /// 3443 ///
3230 R visitSuperGetterFieldPostfix( 3444 R visitSuperGetterFieldPostfix(
3231 Send node, 3445 Send node,
3232 FunctionElement getter, 3446 FunctionElement getter,
3233 FieldElement field, 3447 FieldElement field,
3234 IncDecOperator operator, 3448 IncDecOperator operator,
3235 A arg); 3449 A arg);
3236 3450
3237 /// Postfix expression with [operator] reading from a super [method], that is, 3451 /// Postfix expression with [operator] reading from a super [method], that is,
3238 /// closurizing [method], and writing to a super [setter]. 3452 /// closurizing [method], and writing to a super [setter].
3239 /// 3453 ///
3240 /// For instance: 3454 /// For instance:
3455 ///
3241 /// class B { 3456 /// class B {
3242 /// o() {} 3457 /// o() {}
3243 /// set o(_) {} 3458 /// set o(_) {}
3244 /// } 3459 /// }
3245 /// class C extends B { 3460 /// class C extends B {
3246 /// m() => super.o++; 3461 /// m() => super.o++;
3247 /// } 3462 /// }
3248 /// 3463 ///
3249 R visitSuperMethodSetterPostfix( 3464 R visitSuperMethodSetterPostfix(
3250 Send node, 3465 Send node,
3251 FunctionElement method, 3466 FunctionElement method,
3252 FunctionElement setter, 3467 FunctionElement setter,
3253 IncDecOperator operator, 3468 IncDecOperator operator,
3254 A arg); 3469 A arg);
3255 3470
3256 /// Postfix expression with [operator] reading from a super [method], that is, 3471 /// Postfix expression with [operator] reading from a super [method], that is,
3257 /// closurizing [method], and writing to an unresolved super. 3472 /// closurizing [method], and writing to an unresolved super.
3258 /// 3473 ///
3259 /// For instance: 3474 /// For instance:
3475 ///
3260 /// class B { 3476 /// class B {
3261 /// o() {} 3477 /// o() {}
3262 /// set o(_) {} 3478 /// set o(_) {}
3263 /// } 3479 /// }
3264 /// class C extends B { 3480 /// class C extends B {
3265 /// m() => super.o++; 3481 /// m() => super.o++;
3266 /// } 3482 /// }
3267 /// 3483 ///
3268 R visitSuperMethodPostfix( 3484 R visitSuperMethodPostfix(
3269 Send node, 3485 Send node,
3270 FunctionElement method, 3486 FunctionElement method,
3271 IncDecOperator operator, 3487 IncDecOperator operator,
3272 A arg); 3488 A arg);
3273 3489
3274 /// Prefix expression with [operator] reading from an unresolved super getter 3490 /// Prefix expression with [operator] reading from an unresolved super getter
3275 /// and writing to a super [setter]. 3491 /// and writing to a super [setter].
3276 /// 3492 ///
3277 /// For instance 3493 /// For instance:
3494 ///
3278 /// class B { 3495 /// class B {
3279 /// set o(_) {} 3496 /// set o(_) {}
3280 /// } 3497 /// }
3281 /// class C extends B { 3498 /// class C extends B {
3282 /// m() => super.o++; 3499 /// m() => super.o++;
3283 /// } 3500 /// }
3284 /// 3501 ///
3285 /// 3502 ///
3286 R visitUnresolvedSuperGetterPostfix( 3503 R visitUnresolvedSuperGetterPostfix(
3287 Send node, 3504 Send node,
3288 Element element, 3505 Element element,
3289 MethodElement setter, 3506 MethodElement setter,
3290 IncDecOperator operator, 3507 IncDecOperator operator,
3291 A arg); 3508 A arg);
3292 3509
3293 /// Prefix expression with [operator] reading from a super [getter] and 3510 /// Prefix expression with [operator] reading from a super [getter] and
3294 /// writing to an unresolved super setter. 3511 /// writing to an unresolved super setter.
3295 /// 3512 ///
3296 /// For instance 3513 /// For instance:
3514 ///
3297 /// class B { 3515 /// class B {
3298 /// get o => 42 3516 /// get o => 42
3299 /// } 3517 /// }
3300 /// class C extends B { 3518 /// class C extends B {
3301 /// m() => super.o++; 3519 /// m() => super.o++;
3302 /// } 3520 /// }
3303 /// 3521 ///
3304 /// 3522 ///
3305 R visitUnresolvedSuperSetterPostfix( 3523 R visitUnresolvedSuperSetterPostfix(
3306 Send node, 3524 Send node,
3307 MethodElement getter, 3525 MethodElement getter,
3308 Element element, 3526 Element element,
3309 IncDecOperator operator, 3527 IncDecOperator operator,
3310 A arg); 3528 A arg);
3311 3529
3312 /// Postfix expression with [operator] on a type literal for a class 3530 /// Postfix expression with [operator] on a type literal for a class
3313 /// [element]. 3531 /// [element].
3314 /// 3532 ///
3315 /// For instance: 3533 /// For instance:
3534 ///
3316 /// class C {} 3535 /// class C {}
3317 /// m() => C++; 3536 /// m() => C++;
3318 /// 3537 ///
3319 R visitClassTypeLiteralPostfix( 3538 R visitClassTypeLiteralPostfix(
3320 Send node, 3539 Send node,
3321 ConstantExpression constant, 3540 ConstantExpression constant,
3322 IncDecOperator operator, 3541 IncDecOperator operator,
3323 A arg); 3542 A arg);
3324 3543
3325 /// Postfix expression with [operator] on a type literal for a typedef 3544 /// Postfix expression with [operator] on a type literal for a typedef
3326 /// [element]. 3545 /// [element].
3327 /// 3546 ///
3328 /// For instance: 3547 /// For instance:
3548 ///
3329 /// typedef F(); 3549 /// typedef F();
3330 /// m() => F++; 3550 /// m() => F++;
3331 /// 3551 ///
3332 R visitTypedefTypeLiteralPostfix( 3552 R visitTypedefTypeLiteralPostfix(
3333 Send node, 3553 Send node,
3334 ConstantExpression constant, 3554 ConstantExpression constant,
3335 IncDecOperator operator, 3555 IncDecOperator operator,
3336 A arg); 3556 A arg);
3337 3557
3338 /// Postfix expression with [operator] on a type literal for a type variable 3558 /// Postfix expression with [operator] on a type literal for a type variable
3339 /// [element]. 3559 /// [element].
3340 /// 3560 ///
3341 /// For instance: 3561 /// For instance:
3562 ///
3342 /// class C<T> { 3563 /// class C<T> {
3343 /// m() => T++; 3564 /// m() => T++;
3344 /// } 3565 /// }
3345 /// 3566 ///
3346 R visitTypeVariableTypeLiteralPostfix( 3567 R visitTypeVariableTypeLiteralPostfix(
3347 Send node, 3568 Send node,
3348 TypeVariableElement element, 3569 TypeVariableElement element,
3349 IncDecOperator operator, 3570 IncDecOperator operator,
3350 A arg); 3571 A arg);
3351 3572
3352 /// Postfix expression with [operator] on the type literal for `dynamic`. 3573 /// Postfix expression with [operator] on the type literal for `dynamic`.
3353 /// 3574 ///
3354 /// For instance: 3575 /// For instance:
3576 ///
3355 /// m() => dynamic++; 3577 /// m() => dynamic++;
3356 /// 3578 ///
3357 R visitDynamicTypeLiteralPostfix( 3579 R visitDynamicTypeLiteralPostfix(
3358 Send node, 3580 Send node,
3359 ConstantExpression constant, 3581 ConstantExpression constant,
3360 IncDecOperator operator, 3582 IncDecOperator operator,
3361 A arg); 3583 A arg);
3362 3584
3363 /// Read of the [constant]. 3585 /// Read of the [constant].
3364 /// 3586 ///
3365 /// For instance 3587 /// For instance:
3588 ///
3366 /// const c = c; 3589 /// const c = c;
3367 /// m() => c; 3590 /// m() => c;
3368 /// 3591 ///
3369 R visitConstantGet( 3592 R visitConstantGet(
3370 Send node, 3593 Send node,
3371 ConstantExpression constant, 3594 ConstantExpression constant,
3372 A arg); 3595 A arg);
3373 3596
3374 /// Invocation of the [constant] with [arguments]. 3597 /// Invocation of the [constant] with [arguments].
3375 /// 3598 ///
3376 /// For instance 3599 /// For instance:
3600 ///
3377 /// const c = null; 3601 /// const c = null;
3378 /// m() => c(null, 42); 3602 /// m() => c(null, 42);
3379 /// 3603 ///
3380 R visitConstantInvoke( 3604 R visitConstantInvoke(
3381 Send node, 3605 Send node,
3382 ConstantExpression constant, 3606 ConstantExpression constant,
3383 NodeList arguments, 3607 NodeList arguments,
3384 CallStructure callStreucture, 3608 CallStructure callStreucture,
3385 A arg); 3609 A arg);
3386 3610
3387 /// Read of the unresolved [element]. 3611 /// Read of the unresolved [element].
3388 /// 3612 ///
3389 /// For instance 3613 /// For instance:
3614 ///
3390 /// class C {} 3615 /// class C {}
3391 /// m1() => unresolved; 3616 /// m1() => unresolved;
3392 /// m2() => prefix.unresolved; 3617 /// m2() => prefix.unresolved;
3393 /// m3() => Unresolved.foo; 3618 /// m3() => Unresolved.foo;
3394 /// m4() => unresolved.foo; 3619 /// m4() => unresolved.foo;
3395 /// m5() => unresolved.Foo.bar; 3620 /// m5() => unresolved.Foo.bar;
3396 /// m6() => C.unresolved; 3621 /// m6() => C.unresolved;
3397 /// m7() => prefix.C.unresolved; 3622 /// m7() => prefix.C.unresolved;
3398 /// m8() => prefix?.unresolved; 3623 /// m8() => prefix?.unresolved;
3399 /// m9() => Unresolved?.foo; 3624 /// m9() => Unresolved?.foo;
3400 /// m10() => unresolved?.foo; 3625 /// m10() => unresolved?.foo;
3401 /// m11() => unresolved?.Foo?.bar; 3626 /// m11() => unresolved?.Foo?.bar;
3402 /// 3627 ///
3403 // TODO(johnniwinther): Split the cases in which a prefix is resolved. 3628 // TODO(johnniwinther): Split the cases in which a prefix is resolved.
3404 R visitUnresolvedGet( 3629 R visitUnresolvedGet(
3405 Send node, 3630 Send node,
3406 Element element, 3631 Element element,
3407 A arg); 3632 A arg);
3408 3633
3409 /// Read of the unresolved super [element]. 3634 /// Read of the unresolved super [element].
3410 /// 3635 ///
3411 /// For instance 3636 /// For instance:
3637 ///
3412 /// class B {} 3638 /// class B {}
3413 /// class C { 3639 /// class C {
3414 /// m() => super.foo; 3640 /// m() => super.foo;
3415 /// } 3641 /// }
3416 /// 3642 ///
3417 R visitUnresolvedSuperGet( 3643 R visitUnresolvedSuperGet(
3418 Send node, 3644 Send node,
3419 Element element, 3645 Element element,
3420 A arg); 3646 A arg);
3421 3647
3422 /// Assignment of [rhs] to the unresolved [element]. 3648 /// Assignment of [rhs] to the unresolved [element].
3423 /// 3649 ///
3424 /// For instance 3650 /// For instance:
3651 ///
3425 /// class C {} 3652 /// class C {}
3426 /// m1() => unresolved = 42; 3653 /// m1() => unresolved = 42;
3427 /// m2() => prefix.unresolved = 42; 3654 /// m2() => prefix.unresolved = 42;
3428 /// m3() => Unresolved.foo = 42; 3655 /// m3() => Unresolved.foo = 42;
3429 /// m4() => unresolved.foo = 42; 3656 /// m4() => unresolved.foo = 42;
3430 /// m5() => unresolved.Foo.bar = 42; 3657 /// m5() => unresolved.Foo.bar = 42;
3431 /// m6() => C.unresolved = 42; 3658 /// m6() => C.unresolved = 42;
3432 /// m7() => prefix.C.unresolved = 42; 3659 /// m7() => prefix.C.unresolved = 42;
3433 /// m8() => prefix?.unresolved = 42; 3660 /// m8() => prefix?.unresolved = 42;
3434 /// m9() => Unresolved?.foo = 42; 3661 /// m9() => Unresolved?.foo = 42;
3435 /// m10() => unresolved?.foo = 42; 3662 /// m10() => unresolved?.foo = 42;
3436 /// m11() => unresolved?.Foo?.bar = 42; 3663 /// m11() => unresolved?.Foo?.bar = 42;
3437 /// 3664 ///
3438 // TODO(johnniwinther): Split the cases in which a prefix is resolved. 3665 // TODO(johnniwinther): Split the cases in which a prefix is resolved.
3439 R visitUnresolvedSet( 3666 R visitUnresolvedSet(
3440 Send node, 3667 Send node,
3441 Element element, 3668 Element element,
3442 Node rhs, 3669 Node rhs,
3443 A arg); 3670 A arg);
3444 3671
3445 /// Invocation of the unresolved [element] with [arguments]. 3672 /// Invocation of the unresolved [element] with [arguments].
3446 /// 3673 ///
3447 /// For instance 3674 /// For instance:
3675 ///
3448 /// class C {} 3676 /// class C {}
3449 /// m1() => unresolved(null, 42); 3677 /// m1() => unresolved(null, 42);
3450 /// m2() => prefix.unresolved(null, 42); 3678 /// m2() => prefix.unresolved(null, 42);
3451 /// m3() => Unresolved.foo(null, 42); 3679 /// m3() => Unresolved.foo(null, 42);
3452 /// m4() => unresolved.foo(null, 42); 3680 /// m4() => unresolved.foo(null, 42);
3453 /// m5() => unresolved.Foo.bar(null, 42); 3681 /// m5() => unresolved.Foo.bar(null, 42);
3454 /// m6() => C.unresolved(null, 42); 3682 /// m6() => C.unresolved(null, 42);
3455 /// m7() => prefix.C.unresolved(null, 42); 3683 /// m7() => prefix.C.unresolved(null, 42);
3456 /// m8() => prefix?.unresolved(null, 42); 3684 /// m8() => prefix?.unresolved(null, 42);
3457 /// m9() => Unresolved?.foo(null, 42); 3685 /// m9() => Unresolved?.foo(null, 42);
3458 /// m10() => unresolved?.foo(null, 42); 3686 /// m10() => unresolved?.foo(null, 42);
3459 /// m11() => unresolved?.Foo?.bar(null, 42); 3687 /// m11() => unresolved?.Foo?.bar(null, 42);
3460 /// 3688 ///
3461 // TODO(johnniwinther): Split the cases in which a prefix is resolved. 3689 // TODO(johnniwinther): Split the cases in which a prefix is resolved.
3462 R visitUnresolvedInvoke( 3690 R visitUnresolvedInvoke(
3463 Send node, 3691 Send node,
3464 Element element, 3692 Element element,
3465 NodeList arguments, 3693 NodeList arguments,
3466 Selector selector, 3694 Selector selector,
3467 A arg); 3695 A arg);
3468 3696
3469 /// Invocation of the unresolved super [element] with [arguments]. 3697 /// Invocation of the unresolved super [element] with [arguments].
3470 /// 3698 ///
3471 /// For instance 3699 /// For instance:
3700 ///
3472 /// class B {} 3701 /// class B {}
3473 /// class C extends B { 3702 /// class C extends B {
3474 /// m() => super.foo(); 3703 /// m() => super.foo();
3475 /// } 3704 /// }
3476 /// 3705 ///
3477 R visitUnresolvedSuperInvoke( 3706 R visitUnresolvedSuperInvoke(
3478 Send node, 3707 Send node,
3479 Element element, 3708 Element element,
3480 NodeList arguments, 3709 NodeList arguments,
3481 Selector selector, 3710 Selector selector,
3482 A arg); 3711 A arg);
3483 3712
3484 /// Compound assignment of [rhs] with [operator] reading from the 3713 /// Compound assignment of [rhs] with [operator] reading from the
3485 /// non-existing static getter and writing to the static [setter]. 3714 /// non-existing static getter and writing to the static [setter].
3486 /// 3715 ///
3487 /// For instance 3716 /// For instance:
3717 ///
3488 /// class C { 3718 /// class C {
3489 /// set foo(_) {} 3719 /// set foo(_) {}
3490 /// } 3720 /// }
3491 /// m1() => C.foo += 42; 3721 /// m1() => C.foo += 42;
3492 /// 3722 ///
3493 R visitUnresolvedStaticGetterCompound( 3723 R visitUnresolvedStaticGetterCompound(
3494 Send node, 3724 Send node,
3495 Element element, 3725 Element element,
3496 MethodElement setter, 3726 MethodElement setter,
3497 AssignmentOperator operator, 3727 AssignmentOperator operator,
3498 Node rhs, 3728 Node rhs,
3499 A arg); 3729 A arg);
3500 3730
3501 /// Compound assignment of [rhs] with [operator] reading from the 3731 /// Compound assignment of [rhs] with [operator] reading from the
3502 /// non-existing top level getter and writing to the top level [setter]. 3732 /// non-existing top level getter and writing to the top level [setter].
3503 /// 3733 ///
3504 /// For instance 3734 /// For instance:
3735 ///
3505 /// set foo(_) {} 3736 /// set foo(_) {}
3506 /// m1() => foo += 42; 3737 /// m1() => foo += 42;
3507 /// 3738 ///
3508 R visitUnresolvedTopLevelGetterCompound( 3739 R visitUnresolvedTopLevelGetterCompound(
3509 Send node, 3740 Send node,
3510 Element element, 3741 Element element,
3511 MethodElement setter, 3742 MethodElement setter,
3512 AssignmentOperator operator, 3743 AssignmentOperator operator,
3513 Node rhs, 3744 Node rhs,
3514 A arg); 3745 A arg);
3515 3746
3516 /// Compound assignment of [rhs] with [operator] reading from the static 3747 /// Compound assignment of [rhs] with [operator] reading from the static
3517 /// [getter] and writing to the non-existing static setter. 3748 /// [getter] and writing to the non-existing static setter.
3518 /// 3749 ///
3519 /// For instance 3750 /// For instance:
3751 ///
3520 /// class C { 3752 /// class C {
3521 /// get foo => 42; 3753 /// get foo => 42;
3522 /// } 3754 /// }
3523 /// m1() => C.foo += 42; 3755 /// m1() => C.foo += 42;
3524 /// 3756 ///
3525 R visitUnresolvedStaticSetterCompound( 3757 R visitUnresolvedStaticSetterCompound(
3526 Send node, 3758 Send node,
3527 MethodElement getter, 3759 MethodElement getter,
3528 Element element, 3760 Element element,
3529 AssignmentOperator operator, 3761 AssignmentOperator operator,
3530 Node rhs, 3762 Node rhs,
3531 A arg); 3763 A arg);
3532 3764
3533 /// Compound assignment of [rhs] with [operator] reading from the top level 3765 /// Compound assignment of [rhs] with [operator] reading from the top level
3534 /// [getter] and writing to the non-existing top level setter. 3766 /// [getter] and writing to the non-existing top level setter.
3535 /// 3767 ///
3536 /// For instance 3768 /// For instance:
3769 ///
3537 /// get foo => 42; 3770 /// get foo => 42;
3538 /// m1() => foo += 42; 3771 /// m1() => foo += 42;
3539 /// 3772 ///
3540 R visitUnresolvedTopLevelSetterCompound( 3773 R visitUnresolvedTopLevelSetterCompound(
3541 Send node, 3774 Send node,
3542 MethodElement getter, 3775 MethodElement getter,
3543 Element element, 3776 Element element,
3544 AssignmentOperator operator, 3777 AssignmentOperator operator,
3545 Node rhs, 3778 Node rhs,
3546 A arg); 3779 A arg);
3547 3780
3548 /// Compound assignment of [rhs] with [operator] reading the closurized static 3781 /// Compound assignment of [rhs] with [operator] reading the closurized static
3549 /// [method] and trying to invoke the non-existing setter. 3782 /// [method] and trying to invoke the non-existing setter.
3550 /// 3783 ///
3551 /// For instance 3784 /// For instance:
3785 ///
3552 /// class C { 3786 /// class C {
3553 /// foo() {} 3787 /// foo() {}
3554 /// } 3788 /// }
3555 /// m1() => C.foo += 42; 3789 /// m1() => C.foo += 42;
3556 /// 3790 ///
3557 R visitStaticMethodCompound( 3791 R visitStaticMethodCompound(
3558 Send node, 3792 Send node,
3559 MethodElement method, 3793 MethodElement method,
3560 AssignmentOperator operator, 3794 AssignmentOperator operator,
3561 Node rhs, 3795 Node rhs,
3562 A arg); 3796 A arg);
3563 3797
3564 /// Compound assignment of [rhs] where both getter and setter are unresolved. 3798 /// Compound assignment of [rhs] where both getter and setter are unresolved.
3565 /// 3799 ///
3566 /// For instance 3800 /// For instance:
3801 ///
3567 /// class C {} 3802 /// class C {}
3568 /// m1() => unresolved += 42; 3803 /// m1() => unresolved += 42;
3569 /// m2() => prefix.unresolved += 42; 3804 /// m2() => prefix.unresolved += 42;
3570 /// m3() => Unresolved.foo += 42; 3805 /// m3() => Unresolved.foo += 42;
3571 /// m4() => unresolved.foo += 42; 3806 /// m4() => unresolved.foo += 42;
3572 /// m5() => unresolved.Foo.bar += 42; 3807 /// m5() => unresolved.Foo.bar += 42;
3573 /// m6() => C.unresolved += 42; 3808 /// m6() => C.unresolved += 42;
3574 /// m7() => prefix.C.unresolved += 42; 3809 /// m7() => prefix.C.unresolved += 42;
3575 /// m8() => prefix?.unresolved += 42; 3810 /// m8() => prefix?.unresolved += 42;
3576 /// m9() => Unresolved?.foo += 42; 3811 /// m9() => Unresolved?.foo += 42;
3577 /// m10() => unresolved?.foo += 42; 3812 /// m10() => unresolved?.foo += 42;
3578 /// m11() => unresolved?.Foo?.bar += 42; 3813 /// m11() => unresolved?.Foo?.bar += 42;
3579 /// 3814 ///
3580 // TODO(johnniwinther): Split the cases in which a prefix is resolved. 3815 // TODO(johnniwinther): Split the cases in which a prefix is resolved.
3581 R visitUnresolvedCompound( 3816 R visitUnresolvedCompound(
3582 Send node, 3817 Send node,
3583 Element element, 3818 Element element,
3584 AssignmentOperator operator, 3819 AssignmentOperator operator,
3585 Node rhs, 3820 Node rhs,
3586 A arg); 3821 A arg);
3587 3822
3588 /// Prefix operation of [operator] reading from the non-existing static getter 3823 /// Prefix operation of [operator] reading from the non-existing static getter
3589 /// and writing to the static [setter]. 3824 /// and writing to the static [setter].
3590 /// 3825 ///
3591 /// For instance 3826 /// For instance:
3827 ///
3592 /// class C { 3828 /// class C {
3593 /// set foo(_) {} 3829 /// set foo(_) {}
3594 /// } 3830 /// }
3595 /// m1() => ++C.foo; 3831 /// m1() => ++C.foo;
3596 /// 3832 ///
3597 R visitUnresolvedStaticGetterPrefix( 3833 R visitUnresolvedStaticGetterPrefix(
3598 Send node, 3834 Send node,
3599 Element element, 3835 Element element,
3600 MethodElement setter, 3836 MethodElement setter,
3601 IncDecOperator operator, 3837 IncDecOperator operator,
3602 A arg); 3838 A arg);
3603 3839
3604 /// Prefix operation of [operator] reading from the non-existing top level 3840 /// Prefix operation of [operator] reading from the non-existing top level
3605 /// getter and writing to the top level [setter]. 3841 /// getter and writing to the top level [setter].
3606 /// 3842 ///
3607 /// For instance 3843 /// For instance:
3844 ///
3608 /// set foo(_) {} 3845 /// set foo(_) {}
3609 /// m1() => ++foo; 3846 /// m1() => ++foo;
3610 /// 3847 ///
3611 R visitUnresolvedTopLevelGetterPrefix( 3848 R visitUnresolvedTopLevelGetterPrefix(
3612 Send node, 3849 Send node,
3613 Element element, 3850 Element element,
3614 MethodElement setter, 3851 MethodElement setter,
3615 IncDecOperator operator, 3852 IncDecOperator operator,
3616 A arg); 3853 A arg);
3617 3854
3618 /// Prefix operation of [operator] reading from the static [getter] and 3855 /// Prefix operation of [operator] reading from the static [getter] and
3619 /// writing to the non-existing static setter. 3856 /// writing to the non-existing static setter.
3620 /// 3857 ///
3621 /// For instance 3858 /// For instance:
3859 ///
3622 /// class C { 3860 /// class C {
3623 /// get foo => 42; 3861 /// get foo => 42;
3624 /// } 3862 /// }
3625 /// m1() => ++C.foo; 3863 /// m1() => ++C.foo;
3626 /// 3864 ///
3627 R visitUnresolvedStaticSetterPrefix( 3865 R visitUnresolvedStaticSetterPrefix(
3628 Send node, 3866 Send node,
3629 MethodElement getter, 3867 MethodElement getter,
3630 Element element, 3868 Element element,
3631 IncDecOperator operator, 3869 IncDecOperator operator,
3632 A arg); 3870 A arg);
3633 3871
3634 /// Postfix operation of [operator] reading from the top level [getter] and 3872 /// Postfix operation of [operator] reading from the top level [getter] and
3635 /// writing to the non-existing top level setter. 3873 /// writing to the non-existing top level setter.
3636 /// 3874 ///
3637 /// For instance 3875 /// For instance:
3876 ///
3638 /// get foo => 42; 3877 /// get foo => 42;
3639 /// m1() => ++foo; 3878 /// m1() => ++foo;
3640 /// 3879 ///
3641 R visitUnresolvedTopLevelSetterPrefix( 3880 R visitUnresolvedTopLevelSetterPrefix(
3642 Send node, 3881 Send node,
3643 MethodElement getter, 3882 MethodElement getter,
3644 Element element, 3883 Element element,
3645 IncDecOperator operator, 3884 IncDecOperator operator,
3646 A arg); 3885 A arg);
3647 3886
3648 /// Prefix operation of [operator] reading the closurized static [method] and 3887 /// Prefix operation of [operator] reading the closurized static [method] and
3649 /// trying to invoke the non-existing setter. 3888 /// trying to invoke the non-existing setter.
3650 /// 3889 ///
3651 /// For instance 3890 /// For instance:
3891 ///
3652 /// class C { 3892 /// class C {
3653 /// foo() {} 3893 /// foo() {}
3654 /// } 3894 /// }
3655 /// m1() => ++C.foo; 3895 /// m1() => ++C.foo;
3656 /// 3896 ///
3657 R visitStaticMethodPrefix( 3897 R visitStaticMethodPrefix(
3658 Send node, 3898 Send node,
3659 MethodElement method, 3899 MethodElement method,
3660 IncDecOperator operator, 3900 IncDecOperator operator,
3661 A arg); 3901 A arg);
3662 3902
3663 /// Prefix operation of [operator] reading the closurized top level [method] 3903 /// Prefix operation of [operator] reading the closurized top level [method]
3664 /// and trying to invoke the non-existing setter. 3904 /// and trying to invoke the non-existing setter.
3665 /// 3905 ///
3666 /// For instance 3906 /// For instance:
3907 ///
3667 /// class C { 3908 /// class C {
3668 /// foo() {} 3909 /// foo() {}
3669 /// } 3910 /// }
3670 /// m1() => ++C.foo; 3911 /// m1() => ++C.foo;
3671 /// 3912 ///
3672 R visitTopLevelMethodPrefix( 3913 R visitTopLevelMethodPrefix(
3673 Send node, 3914 Send node,
3674 MethodElement method, 3915 MethodElement method,
3675 IncDecOperator operator, 3916 IncDecOperator operator,
3676 A arg); 3917 A arg);
3677 3918
3678 /// Prefix operation where both getter and setter are unresolved. 3919 /// Prefix operation where both getter and setter are unresolved.
3679 /// 3920 ///
3680 /// For instance 3921 /// For instance:
3922 ///
3681 /// class C {} 3923 /// class C {}
3682 /// m1() => ++unresolved; 3924 /// m1() => ++unresolved;
3683 /// m2() => ++prefix.unresolved; 3925 /// m2() => ++prefix.unresolved;
3684 /// m3() => ++Unresolved.foo; 3926 /// m3() => ++Unresolved.foo;
3685 /// m4() => ++unresolved.foo; 3927 /// m4() => ++unresolved.foo;
3686 /// m5() => ++unresolved.Foo.bar; 3928 /// m5() => ++unresolved.Foo.bar;
3687 /// m6() => ++C.unresolved; 3929 /// m6() => ++C.unresolved;
3688 /// m7() => ++prefix.C.unresolved; 3930 /// m7() => ++prefix.C.unresolved;
3689 /// m8() => ++prefix?.unresolved; 3931 /// m8() => ++prefix?.unresolved;
3690 /// m9() => ++Unresolved?.foo; 3932 /// m9() => ++Unresolved?.foo;
3691 /// m10() => ++unresolved?.foo; 3933 /// m10() => ++unresolved?.foo;
3692 /// m11() => ++unresolved?.Foo?.bar; 3934 /// m11() => ++unresolved?.Foo?.bar;
3693 /// 3935 ///
3694 // TODO(johnniwinther): Split the cases in which a prefix is resolved. 3936 // TODO(johnniwinther): Split the cases in which a prefix is resolved.
3695 R visitUnresolvedPrefix( 3937 R visitUnresolvedPrefix(
3696 Send node, 3938 Send node,
3697 Element element, 3939 Element element,
3698 IncDecOperator operator, 3940 IncDecOperator operator,
3699 A arg); 3941 A arg);
3700 3942
3701 /// Postfix operation of [operator] reading from the non-existing static 3943 /// Postfix operation of [operator] reading from the non-existing static
3702 /// getter and writing to the static [setter]. 3944 /// getter and writing to the static [setter].
3703 /// 3945 ///
3704 /// For instance 3946 /// For instance:
3947 ///
3705 /// class C { 3948 /// class C {
3706 /// set foo(_) {} 3949 /// set foo(_) {}
3707 /// } 3950 /// }
3708 /// m1() => C.foo++; 3951 /// m1() => C.foo++;
3709 /// 3952 ///
3710 R visitUnresolvedStaticGetterPostfix( 3953 R visitUnresolvedStaticGetterPostfix(
3711 Send node, 3954 Send node,
3712 Element element, 3955 Element element,
3713 MethodElement setter, 3956 MethodElement setter,
3714 IncDecOperator operator, 3957 IncDecOperator operator,
3715 A arg); 3958 A arg);
3716 3959
3717 /// Postfix operation of [operator] reading from the non-existing top level 3960 /// Postfix operation of [operator] reading from the non-existing top level
3718 /// getter and writing to the top level [setter]. 3961 /// getter and writing to the top level [setter].
3719 /// 3962 ///
3720 /// For instance 3963 /// For instance:
3964 ///
3721 /// set foo(_) {} 3965 /// set foo(_) {}
3722 /// m1() => foo++; 3966 /// m1() => foo++;
3723 /// 3967 ///
3724 R visitUnresolvedTopLevelGetterPostfix( 3968 R visitUnresolvedTopLevelGetterPostfix(
3725 Send node, 3969 Send node,
3726 Element element, 3970 Element element,
3727 MethodElement setter, 3971 MethodElement setter,
3728 IncDecOperator operator, 3972 IncDecOperator operator,
3729 A arg); 3973 A arg);
3730 3974
3731 /// Postfix operation of [operator] reading from the static [getter] and 3975 /// Postfix operation of [operator] reading from the static [getter] and
3732 /// writing to the non-existing static setter. 3976 /// writing to the non-existing static setter.
3733 /// 3977 ///
3734 /// For instance 3978 /// For instance:
3979 ///
3735 /// class C { 3980 /// class C {
3736 /// get foo => 42; 3981 /// get foo => 42;
3737 /// } 3982 /// }
3738 /// m1() => C.foo++; 3983 /// m1() => C.foo++;
3739 /// 3984 ///
3740 R visitUnresolvedStaticSetterPostfix( 3985 R visitUnresolvedStaticSetterPostfix(
3741 Send node, 3986 Send node,
3742 MethodElement getter, 3987 MethodElement getter,
3743 Element element, 3988 Element element,
3744 IncDecOperator operator, 3989 IncDecOperator operator,
3745 A arg); 3990 A arg);
3746 3991
3747 /// Postfix operation of [operator] reading from the top level [getter] and 3992 /// Postfix operation of [operator] reading from the top level [getter] and
3748 /// writing to the non-existing top level setter. 3993 /// writing to the non-existing top level setter.
3749 /// 3994 ///
3750 /// For instance 3995 /// For instance:
3996 ///
3751 /// get foo => 42; 3997 /// get foo => 42;
3752 /// m1() => foo++; 3998 /// m1() => foo++;
3753 /// 3999 ///
3754 R visitUnresolvedTopLevelSetterPostfix( 4000 R visitUnresolvedTopLevelSetterPostfix(
3755 Send node, 4001 Send node,
3756 MethodElement getter, 4002 MethodElement getter,
3757 Element element, 4003 Element element,
3758 IncDecOperator operator, 4004 IncDecOperator operator,
3759 A arg); 4005 A arg);
3760 4006
3761 /// Postfix operation of [operator] reading the closurized static [method] and 4007 /// Postfix operation of [operator] reading the closurized static [method] and
3762 /// trying to invoke the non-existing setter. 4008 /// trying to invoke the non-existing setter.
3763 /// 4009 ///
3764 /// For instance 4010 /// For instance:
4011 ///
3765 /// class C { 4012 /// class C {
3766 /// foo() {} 4013 /// foo() {}
3767 /// } 4014 /// }
3768 /// m1() => C.foo++; 4015 /// m1() => C.foo++;
3769 /// 4016 ///
3770 R visitStaticMethodPostfix( 4017 R visitStaticMethodPostfix(
3771 Send node, 4018 Send node,
3772 MethodElement method, 4019 MethodElement method,
3773 IncDecOperator operator, 4020 IncDecOperator operator,
3774 A arg); 4021 A arg);
3775 4022
3776 /// Postfix operation of [operator] reading the closurized top level [method] 4023 /// Postfix operation of [operator] reading the closurized top level [method]
3777 /// and trying to invoke the non-existing setter. 4024 /// and trying to invoke the non-existing setter.
3778 /// 4025 ///
3779 /// For instance 4026 /// For instance:
4027 ///
3780 /// class C { 4028 /// class C {
3781 /// foo() {} 4029 /// foo() {}
3782 /// } 4030 /// }
3783 /// m1() => C.foo++; 4031 /// m1() => C.foo++;
3784 /// 4032 ///
3785 R visitTopLevelMethodPostfix( 4033 R visitTopLevelMethodPostfix(
3786 Send node, 4034 Send node,
3787 MethodElement method, 4035 MethodElement method,
3788 IncDecOperator operator, 4036 IncDecOperator operator,
3789 A arg); 4037 A arg);
3790 4038
3791 /// Postfix operation where both getter and setter are unresolved. 4039 /// Postfix operation where both getter and setter are unresolved.
3792 /// 4040 ///
3793 /// For instance 4041 /// For instance:
4042 ///
3794 /// class C {} 4043 /// class C {}
3795 /// m1() => unresolved++; 4044 /// m1() => unresolved++;
3796 /// m2() => prefix.unresolved++; 4045 /// m2() => prefix.unresolved++;
3797 /// m3() => Unresolved.foo++; 4046 /// m3() => Unresolved.foo++;
3798 /// m4() => unresolved.foo++; 4047 /// m4() => unresolved.foo++;
3799 /// m5() => unresolved.Foo.bar++; 4048 /// m5() => unresolved.Foo.bar++;
3800 /// m6() => C.unresolved++; 4049 /// m6() => C.unresolved++;
3801 /// m7() => prefix.C.unresolved++; 4050 /// m7() => prefix.C.unresolved++;
3802 /// m8() => prefix?.unresolved++; 4051 /// m8() => prefix?.unresolved++;
3803 /// m9() => Unresolved?.foo++; 4052 /// m9() => Unresolved?.foo++;
(...skipping 18 matching lines...) Expand all
3822 /// [left] and [right]. 4071 /// [left] and [right].
3823 R errorUndefinedBinaryExpression( 4072 R errorUndefinedBinaryExpression(
3824 Send node, 4073 Send node,
3825 Node left, 4074 Node left,
3826 Operator operator, 4075 Operator operator,
3827 Node right, 4076 Node right,
3828 A arg); 4077 A arg);
3829 4078
3830 /// Const invocation of a [constant] constructor. 4079 /// Const invocation of a [constant] constructor.
3831 /// 4080 ///
3832 /// For instance 4081 /// For instance:
3833 /// class C<T> { 4082 ///
3834 /// const C(a, b); 4083 /// class C<T> {
3835 /// } 4084 /// const C(a, b);
3836 /// m() => const C<int>(true, 42); 4085 /// }
4086 /// m() => const C<int>(true, 42);
3837 /// 4087 ///
3838 R visitConstConstructorInvoke( 4088 R visitConstConstructorInvoke(
3839 NewExpression node, 4089 NewExpression node,
3840 ConstructedConstantExpression constant, 4090 ConstructedConstantExpression constant,
3841 A arg); 4091 A arg);
3842 4092
3843 /// Const invocation of the `bool.fromEnvironment` constructor. 4093 /// Const invocation of the `bool.fromEnvironment` constructor.
3844 /// 4094 ///
3845 /// For instance 4095 /// For instance:
3846 /// m() => const bool.fromEnvironment('foo', defaultValue: false); 4096 ///
4097 /// m() => const bool.fromEnvironment('foo', defaultValue: false);
3847 /// 4098 ///
3848 R visitBoolFromEnvironmentConstructorInvoke( 4099 R visitBoolFromEnvironmentConstructorInvoke(
3849 NewExpression node, 4100 NewExpression node,
3850 BoolFromEnvironmentConstantExpression constant, 4101 BoolFromEnvironmentConstantExpression constant,
3851 A arg); 4102 A arg);
3852 4103
3853 /// Const invocation of the `int.fromEnvironment` constructor. 4104 /// Const invocation of the `int.fromEnvironment` constructor.
3854 /// 4105 ///
3855 /// For instance 4106 /// For instance:
3856 /// m() => const int.fromEnvironment('foo', defaultValue: 42); 4107 ///
4108 /// m() => const int.fromEnvironment('foo', defaultValue: 42);
3857 /// 4109 ///
3858 R visitIntFromEnvironmentConstructorInvoke( 4110 R visitIntFromEnvironmentConstructorInvoke(
3859 NewExpression node, 4111 NewExpression node,
3860 IntFromEnvironmentConstantExpression constant, 4112 IntFromEnvironmentConstantExpression constant,
3861 A arg); 4113 A arg);
3862 4114
3863 /// Const invocation of the `String.fromEnvironment` constructor. 4115 /// Const invocation of the `String.fromEnvironment` constructor.
3864 /// 4116 ///
3865 /// For instance 4117 /// For instance:
3866 /// m() => const String.fromEnvironment('foo', defaultValue: 'bar'); 4118 ///
4119 /// m() => const String.fromEnvironment('foo', defaultValue: 'bar');
3867 /// 4120 ///
3868 R visitStringFromEnvironmentConstructorInvoke( 4121 R visitStringFromEnvironmentConstructorInvoke(
3869 NewExpression node, 4122 NewExpression node,
3870 StringFromEnvironmentConstantExpression constant, 4123 StringFromEnvironmentConstantExpression constant,
3871 A arg); 4124 A arg);
3872 4125
3873 /// Invocation of a generative [constructor] on [type] with [arguments]. 4126 /// Invocation of a generative [constructor] on [type] with [arguments].
3874 /// 4127 ///
3875 /// For instance 4128 /// For instance:
3876 /// class C<T> { 4129 ///
3877 /// C(a, b); 4130 /// class C<T> {
3878 /// } 4131 /// C(a, b);
3879 /// m() => new C<int>(true, 42); 4132 /// }
4133 /// m() => new C<int>(true, 42);
3880 /// 4134 ///
3881 /// where [type] is `C<int>`. 4135 /// where [type] is `C<int>`.
3882 /// 4136 ///
3883 R visitGenerativeConstructorInvoke( 4137 R visitGenerativeConstructorInvoke(
3884 NewExpression node, 4138 NewExpression node,
3885 ConstructorElement constructor, 4139 ConstructorElement constructor,
3886 InterfaceType type, 4140 InterfaceType type,
3887 NodeList arguments, 4141 NodeList arguments,
3888 CallStructure callStructure, 4142 CallStructure callStructure,
3889 A arg); 4143 A arg);
3890 4144
3891 /// Invocation of a redirecting generative [constructor] on [type] with 4145 /// Invocation of a redirecting generative [constructor] on [type] with
3892 /// [arguments]. 4146 /// [arguments].
3893 /// 4147 ///
3894 /// For instance 4148 /// For instance:
3895 /// class C<T> { 4149 ///
3896 /// C(a, b) : this._(b, a); 4150 /// class C<T> {
3897 /// C._(b, a); 4151 /// C(a, b) : this._(b, a);
3898 /// } 4152 /// C._(b, a);
3899 /// m() => new C<int>(true, 42); 4153 /// }
4154 /// m() => new C<int>(true, 42);
3900 /// 4155 ///
3901 /// where [type] is `C<int>`. 4156 /// where [type] is `C<int>`.
3902 /// 4157 ///
3903 R visitRedirectingGenerativeConstructorInvoke( 4158 R visitRedirectingGenerativeConstructorInvoke(
3904 NewExpression node, 4159 NewExpression node,
3905 ConstructorElement constructor, 4160 ConstructorElement constructor,
3906 InterfaceType type, 4161 InterfaceType type,
3907 NodeList arguments, 4162 NodeList arguments,
3908 CallStructure callStructure, 4163 CallStructure callStructure,
3909 A arg); 4164 A arg);
3910 4165
3911 /// Invocation of a factory [constructor] on [type] with [arguments]. 4166 /// Invocation of a factory [constructor] on [type] with [arguments].
3912 /// 4167 ///
3913 /// For instance 4168 /// For instance:
3914 /// class C<T> { 4169 ///
3915 /// factory C(a, b) => new C<T>._(b, a); 4170 /// class C<T> {
3916 /// C._(b, a); 4171 /// factory C(a, b) => new C<T>._(b, a);
3917 /// } 4172 /// C._(b, a);
3918 /// m() => new C<int>(true, 42); 4173 /// }
4174 /// m() => new C<int>(true, 42);
3919 /// 4175 ///
3920 /// where [type] is `C<int>`. 4176 /// where [type] is `C<int>`.
3921 /// 4177 ///
3922 R visitFactoryConstructorInvoke( 4178 R visitFactoryConstructorInvoke(
3923 NewExpression node, 4179 NewExpression node,
3924 ConstructorElement constructor, 4180 ConstructorElement constructor,
3925 InterfaceType type, 4181 InterfaceType type,
3926 NodeList arguments, 4182 NodeList arguments,
3927 CallStructure callStructure, 4183 CallStructure callStructure,
3928 A arg); 4184 A arg);
3929 4185
3930 /// Invocation of a factory [constructor] on [type] with [arguments] where 4186 /// Invocation of a factory [constructor] on [type] with [arguments] where
3931 /// [effectiveTarget] and [effectiveTargetType] are the constructor effective 4187 /// [effectiveTarget] and [effectiveTargetType] are the constructor effective
3932 /// invoked and its type, respectively. 4188 /// invoked and its type, respectively.
3933 /// 4189 ///
3934 /// For instance 4190 /// For instance:
3935 /// class C<T> { 4191 ///
3936 /// factory C(a, b) = C<int>.a; 4192 /// class C<T> {
3937 /// factory C.a(a, b) = C<C<T>>.b; 4193 /// factory C(a, b) = C<int>.a;
3938 /// C.b(a, b); 4194 /// factory C.a(a, b) = C<C<T>>.b;
3939 /// } 4195 /// C.b(a, b);
3940 /// m() => new C<double>(true, 42); 4196 /// }
4197 /// m() => new C<double>(true, 42);
3941 /// 4198 ///
3942 /// where [type] is `C<double>`, [effectiveTarget] is `C.b` and 4199 /// where [type] is `C<double>`, [effectiveTarget] is `C.b` and
3943 /// [effectiveTargetType] is `C<C<int>>`. 4200 /// [effectiveTargetType] is `C<C<int>>`.
3944 /// 4201 ///
3945 R visitRedirectingFactoryConstructorInvoke( 4202 R visitRedirectingFactoryConstructorInvoke(
3946 NewExpression node, 4203 NewExpression node,
3947 ConstructorElement constructor, 4204 ConstructorElement constructor,
3948 InterfaceType type, 4205 InterfaceType type,
3949 ConstructorElement effectiveTarget, 4206 ConstructorElement effectiveTarget,
3950 InterfaceType effectiveTargetType, 4207 InterfaceType effectiveTargetType,
3951 NodeList arguments, 4208 NodeList arguments,
3952 CallStructure callStructure, 4209 CallStructure callStructure,
3953 A arg); 4210 A arg);
3954 4211
3955 /// Invocation of an unresolved [constructor] on [type] with [arguments]. 4212 /// Invocation of an unresolved [constructor] on [type] with [arguments].
3956 /// 4213 ///
3957 /// For instance 4214 /// For instance:
3958 /// class C<T> { 4215 ///
3959 /// C(); 4216 /// class C<T> {
3960 /// } 4217 /// C();
3961 /// m() => new C<int>.unresolved(true, 42); 4218 /// }
4219 /// m() => new C<int>.unresolved(true, 42);
3962 /// 4220 ///
3963 /// where [type] is `C<int>`. 4221 /// where [type] is `C<int>`.
3964 /// 4222 ///
3965 // TODO(johnniwinther): Change [type] to [InterfaceType] when is it not 4223 // TODO(johnniwinther): Change [type] to [InterfaceType] when is it not
3966 // `dynamic`. 4224 // `dynamic`.
3967 R visitUnresolvedConstructorInvoke( 4225 R visitUnresolvedConstructorInvoke(
3968 NewExpression node, 4226 NewExpression node,
3969 Element constructor, 4227 Element constructor,
3970 DartType type, 4228 DartType type,
3971 NodeList arguments, 4229 NodeList arguments,
3972 Selector selector, 4230 Selector selector,
3973 A arg); 4231 A arg);
3974 4232
3975 /// Invocation of a constructor on an unresolved [type] with [arguments]. 4233 /// Invocation of a constructor on an unresolved [type] with [arguments].
3976 /// 4234 ///
3977 /// For instance 4235 /// For instance:
3978 /// m() => new Unresolved(true, 42); 4236 ///
4237 /// m() => new Unresolved(true, 42);
3979 /// 4238 ///
3980 /// where [type] is the malformed type `Unresolved`. 4239 /// where [type] is the malformed type `Unresolved`.
3981 /// 4240 ///
3982 // TODO(johnniwinther): Change [type] to [MalformedType] when is it not 4241 // TODO(johnniwinther): Change [type] to [MalformedType] when is it not
3983 // `dynamic`. 4242 // `dynamic`.
3984 R visitUnresolvedClassConstructorInvoke( 4243 R visitUnresolvedClassConstructorInvoke(
3985 NewExpression node, 4244 NewExpression node,
3986 Element element, 4245 Element element,
3987 DartType type, 4246 DartType type,
3988 NodeList arguments, 4247 NodeList arguments,
3989 Selector selector, 4248 Selector selector,
3990 A arg); 4249 A arg);
3991 4250
3992 /// Constant invocation of a non-constant constructor. 4251 /// Constant invocation of a non-constant constructor.
3993 /// 4252 ///
3994 /// For instance 4253 /// For instance:
3995 /// class C { 4254 ///
3996 /// C(a, b); 4255 /// class C {
3997 /// } 4256 /// C(a, b);
3998 /// m() => const C(true, 42); 4257 /// }
4258 /// m() => const C(true, 42);
3999 /// 4259 ///
4000 R errorNonConstantConstructorInvoke( 4260 R errorNonConstantConstructorInvoke(
4001 NewExpression node, 4261 NewExpression node,
4002 Element element, 4262 Element element,
4003 DartType type, 4263 DartType type,
4004 NodeList arguments, 4264 NodeList arguments,
4005 CallStructure callStructure, 4265 CallStructure callStructure,
4006 A arg); 4266 A arg);
4007 4267
4008 /// Invocation of a constructor on an abstract [type] with [arguments]. 4268 /// Invocation of a constructor on an abstract [type] with [arguments].
4009 /// 4269 ///
4010 /// For instance 4270 /// For instance:
4011 /// m() => new Unresolved(true, 42); 4271 ///
4272 /// m() => new Unresolved(true, 42);
4012 /// 4273 ///
4013 /// where [type] is the malformed type `Unresolved`. 4274 /// where [type] is the malformed type `Unresolved`.
4014 /// 4275 ///
4015 R visitAbstractClassConstructorInvoke( 4276 R visitAbstractClassConstructorInvoke(
4016 NewExpression node, 4277 NewExpression node,
4017 ConstructorElement element, 4278 ConstructorElement element,
4018 InterfaceType type, 4279 InterfaceType type,
4019 NodeList arguments, 4280 NodeList arguments,
4020 CallStructure callStructure, 4281 CallStructure callStructure,
4021 A arg); 4282 A arg);
4022 4283
4023 /// Invocation of a factory [constructor] on [type] with [arguments] where 4284 /// Invocation of a factory [constructor] on [type] with [arguments] where
4024 /// [effectiveTarget] and [effectiveTargetType] are the constructor effective 4285 /// [effectiveTarget] and [effectiveTargetType] are the constructor effective
4025 /// invoked and its type, respectively. 4286 /// invoked and its type, respectively.
4026 /// 4287 ///
4027 /// For instance 4288 /// For instance:
4028 /// class C { 4289 ///
4029 /// factory C(a, b) = Unresolved; 4290 /// class C {
4030 /// factory C.a(a, b) = C.unresolved; 4291 /// factory C(a, b) = Unresolved;
4031 /// } 4292 /// factory C.a(a, b) = C.unresolved;
4032 /// m1() => new C(true, 42); 4293 /// }
4033 /// m2() => new C.a(true, 42); 4294 /// m1() => new C(true, 42);
4295 /// m2() => new C.a(true, 42);
4034 /// 4296 ///
4035 R visitUnresolvedRedirectingFactoryConstructorInvoke( 4297 R visitUnresolvedRedirectingFactoryConstructorInvoke(
4036 NewExpression node, 4298 NewExpression node,
4037 ConstructorElement constructor, 4299 ConstructorElement constructor,
4038 InterfaceType type, 4300 InterfaceType type,
4039 NodeList arguments, 4301 NodeList arguments,
4040 CallStructure callStructure, 4302 CallStructure callStructure,
4041 A arg); 4303 A arg);
4042 4304
4043 /// Invocation of [constructor] on [type] with incompatible [arguments]. 4305 /// Invocation of [constructor] on [type] with incompatible [arguments].
4044 /// 4306 ///
4045 /// For instance 4307 /// For instance:
4046 /// class C { 4308 ///
4047 /// C(a); 4309 /// class C {
4048 /// } 4310 /// C(a);
4049 /// m() => C(true, 42); 4311 /// }
4312 /// m() => C(true, 42);
4050 /// 4313 ///
4051 R visitConstructorIncompatibleInvoke( 4314 R visitConstructorIncompatibleInvoke(
4052 NewExpression node, 4315 NewExpression node,
4053 ConstructorElement constructor, 4316 ConstructorElement constructor,
4054 InterfaceType type, 4317 InterfaceType type,
4055 NodeList arguments, 4318 NodeList arguments,
4056 CallStructure callStructure, 4319 CallStructure callStructure,
4057 A arg); 4320 A arg);
4058 4321
4059 /// Read access of an invalid expression. 4322 /// Read access of an invalid expression.
4060 /// 4323 ///
4061 /// For instance 4324 /// For instance:
4062 /// import 'foo.dart' as p;
4063 /// 4325 ///
4064 /// m() => p; 4326 /// import 'foo.dart' as p;
4327 ///
4328 /// m() => p;
4065 /// 4329 ///
4066 R errorInvalidGet( 4330 R errorInvalidGet(
4067 Send node, 4331 Send node,
4068 ErroneousElement error, 4332 ErroneousElement error,
4069 A arg); 4333 A arg);
4070 4334
4071 4335
4072 /// Invocation of an invalid expression with [arguments]. 4336 /// Invocation of an invalid expression with [arguments].
4073 /// 4337 ///
4074 /// For instance 4338 /// For instance:
4075 /// import 'foo.dart' as p;
4076 /// 4339 ///
4077 /// m() => p(null, 42); 4340 /// import 'foo.dart' as p;
4341 ///
4342 /// m() => p(null, 42);
4078 /// 4343 ///
4079 R errorInvalidInvoke( 4344 R errorInvalidInvoke(
4080 Send node, 4345 Send node,
4081 ErroneousElement error, 4346 ErroneousElement error,
4082 NodeList arguments, 4347 NodeList arguments,
4083 Selector selector, 4348 Selector selector,
4084 A arg); 4349 A arg);
4085 4350
4086 /// Assignment of [rhs] to an invalid expression. 4351 /// Assignment of [rhs] to an invalid expression.
4087 /// 4352 ///
4088 /// For instance 4353 /// For instance:
4089 /// import 'foo.dart' as p;
4090 /// 4354 ///
4091 /// m() { p = 42; } 4355 /// import 'foo.dart' as p;
4356 ///
4357 /// m() { p = 42; }
4092 /// 4358 ///
4093 R errorInvalidSet( 4359 R errorInvalidSet(
4094 Send node, 4360 Send node,
4095 ErroneousElement error, 4361 ErroneousElement error,
4096 Node rhs, 4362 Node rhs,
4097 A arg); 4363 A arg);
4098 4364
4099 /// Prefix operation on an invalid expression. 4365 /// Prefix operation on an invalid expression.
4100 /// 4366 ///
4101 /// For instance 4367 /// For instance:
4102 /// import 'foo.dart' as p;
4103 /// 4368 ///
4104 /// m() => ++p; 4369 /// import 'foo.dart' as p;
4370 ///
4371 /// m() => ++p;
4105 /// 4372 ///
4106 R errorInvalidPrefix( 4373 R errorInvalidPrefix(
4107 Send node, 4374 Send node,
4108 ErroneousElement error, 4375 ErroneousElement error,
4109 IncDecOperator operator, 4376 IncDecOperator operator,
4110 A arg); 4377 A arg);
4111 4378
4112 /// Postfix operation on an invalid expression. 4379 /// Postfix operation on an invalid expression.
4113 /// 4380 ///
4114 /// For instance 4381 /// For instance:
4115 /// import 'foo.dart' as p;
4116 /// 4382 ///
4117 /// m() => p--; 4383 /// import 'foo.dart' as p;
4384 ///
4385 /// m() => p--;
4118 /// 4386 ///
4119 R errorInvalidPostfix( 4387 R errorInvalidPostfix(
4120 Send node, 4388 Send node,
4121 ErroneousElement error, 4389 ErroneousElement error,
4122 IncDecOperator operator, 4390 IncDecOperator operator,
4123 A arg); 4391 A arg);
4124 4392
4125 /// Compound assignment of [operator] with [rhs] on an invalid expression. 4393 /// Compound assignment of [operator] with [rhs] on an invalid expression.
4126 /// 4394 ///
4127 /// For instance 4395 /// For instance:
4128 /// import 'foo.dart' as p;
4129 /// 4396 ///
4130 /// m() => p += 42; 4397 /// import 'foo.dart' as p;
4398 ///
4399 /// m() => p += 42;
4131 /// 4400 ///
4132 R errorInvalidCompound( 4401 R errorInvalidCompound(
4133 Send node, 4402 Send node,
4134 ErroneousElement error, 4403 ErroneousElement error,
4135 AssignmentOperator operator, 4404 AssignmentOperator operator,
4136 Node rhs, 4405 Node rhs,
4137 A arg); 4406 A arg);
4138 4407
4408 /// Unary operation with [operator] on an invalid expression.
4409 ///
4410 /// For instance:
4411 ///
4412 /// class C {
4413 /// static m() => ~super;
4414 /// }
4415 ///
4416 R errorInvalidUnary(
4417 Send node,
4418 UnaryOperator operator,
4419 ErroneousElement error,
4420 A arg);
4421
4422 /// Equals operation on an invalid left expression.
4423 ///
4424 /// For instance:
4425 ///
4426 /// class C {
4427 /// static m() => super == null;
4428 /// }
4429 ///
4430 R errorInvalidEquals(
4431 Send node,
4432 ErroneousElement error,
4433 Node right,
4434 A arg);
4435
4436 /// Not equals operation on an invalid left expression.
4437 ///
4438 /// For instance:
4439 ///
4440 /// class C {
4441 /// static m() => super != null;
4442 /// }
4443 ///
4444 R errorInvalidNotEquals(
4445 Send node,
4446 ErroneousElement error,
4447 Node right,
4448 A arg);
4449
4450 /// Binary operation with [operator] on an invalid left expression.
4451 ///
4452 /// For instance:
4453 ///
4454 /// class C {
4455 /// static m() => super + 0;
4456 /// }
4457 ///
4458 R errorInvalidBinary(
4459 Send node,
4460 ErroneousElement error,
4461 BinaryOperator operator,
4462 Node right,
4463 A arg);
4464
4465 /// Index operation on an invalid expression.
4466 ///
4467 /// For instance:
4468 ///
4469 /// class C {
4470 /// static m() => super[0];
4471 /// }
4472 ///
4473 R errorInvalidIndex(
4474 Send node,
4475 ErroneousElement error,
4476 Node index,
4477 A arg);
4478
4479 /// Index set operation on an invalid expression.
4480 ///
4481 /// For instance:
4482 ///
4483 /// class C {
4484 /// static m() => super[0] = 42;
4485 /// }
4486 ///
4487 R errorInvalidIndexSet(
4488 Send node,
4489 ErroneousElement error,
4490 Node index,
4491 Node rhs,
4492 A arg);
4493
4494 /// Compound index set operation on an invalid expression.
4495 ///
4496 /// For instance:
4497 ///
4498 /// class C {
4499 /// static m() => super[0] += 42;
4500 /// }
4501 ///
4502 R errorInvalidCompoundIndexSet(
4503 Send node,
4504 ErroneousElement error,
4505 Node index,
4506 AssignmentOperator operator,
4507 Node rhs,
4508 A arg);
4509
4510 /// Prefix index operation on an invalid expression.
4511 ///
4512 /// For instance:
4513 ///
4514 /// class C {
4515 /// static m() => --super[0];
4516 /// }
4517 ///
4518 R errorInvalidIndexPrefix(
4519 Send node,
4520 ErroneousElement error,
4521 Node index,
4522 IncDecOperator operator,
4523 A arg);
4524
4525 /// Postfix index operation on an invalid expression.
4526 ///
4527 /// For instance:
4528 ///
4529 /// class C {
4530 /// static m() => super[0]++;
4531 /// }
4532 ///
4533 R errorInvalidIndexPostfix(
4534 Send node,
4535 ErroneousElement error,
4536 Node index,
4537 IncDecOperator operator,
4538 A arg);
4539
4139 /// Access of library through a deferred [prefix]. 4540 /// Access of library through a deferred [prefix].
4140 /// 4541 ///
4141 /// For instance 4542 /// For instance:
4142 /// import 'lib.dart' deferred as prefix;
4143 /// 4543 ///
4144 /// m() => prefix.foo; 4544 /// import 'lib.dart' deferred as prefix;
4545 ///
4546 /// m() => prefix.foo;
4145 /// 4547 ///
4146 /// This visit method is special in that it is called as a pre-step to calling 4548 /// This visit method is special in that it is called as a pre-step to calling
4147 /// the visit method for the actual access. Therefore this method cannot 4549 /// the visit method for the actual access. Therefore this method cannot
4148 /// return a result to its caller. 4550 /// return a result to its caller.
4149 void previsitDeferredAccess( 4551 void previsitDeferredAccess(
4150 Send node, 4552 Send node,
4151 PrefixElement prefix, 4553 PrefixElement prefix,
4152 A arg); 4554 A arg);
4153 } 4555 }
4154 4556
4155 abstract class SemanticDeclarationVisitor<R, A> { 4557 abstract class SemanticDeclarationVisitor<R, A> {
4156 R apply(Node node, A arg); 4558 R apply(Node node, A arg);
4157 4559
4158 /// Apply this visitor to the [parameters]. 4560 /// Apply this visitor to the [parameters].
4159 applyParameters(NodeList parameters, A arg); 4561 applyParameters(NodeList parameters, A arg);
4160 4562
4161 /// Apply this visitor to the initializers of [constructor]. 4563 /// Apply this visitor to the initializers of [constructor].
4162 applyInitializers(FunctionExpression constructor, A arg); 4564 applyInitializers(FunctionExpression constructor, A arg);
4163 4565
4164 /// A declaration of a top level [getter]. 4566 /// A declaration of a top level [getter].
4165 /// 4567 ///
4166 /// For instance 4568 /// For instance:
4569 ///
4167 /// get m => 42; 4570 /// get m => 42;
4168 /// 4571 ///
4169 R visitTopLevelGetterDeclaration( 4572 R visitTopLevelGetterDeclaration(
4170 FunctionExpression node, 4573 FunctionExpression node,
4171 MethodElement getter, 4574 MethodElement getter,
4172 Node body, 4575 Node body,
4173 A arg); 4576 A arg);
4174 4577
4175 /// A declaration of a top level [setter]. 4578 /// A declaration of a top level [setter].
4176 /// 4579 ///
4177 /// For instance 4580 /// For instance:
4581 ///
4178 /// set m(a) {} 4582 /// set m(a) {}
4179 /// 4583 ///
4180 R visitTopLevelSetterDeclaration( 4584 R visitTopLevelSetterDeclaration(
4181 FunctionExpression node, 4585 FunctionExpression node,
4182 MethodElement setter, 4586 MethodElement setter,
4183 NodeList parameters, 4587 NodeList parameters,
4184 Node body, 4588 Node body,
4185 A arg); 4589 A arg);
4186 4590
4187 /// A declaration of a top level [function]. 4591 /// A declaration of a top level [function].
4188 /// 4592 ///
4189 /// For instance 4593 /// For instance:
4594 ///
4190 /// m(a) {} 4595 /// m(a) {}
4191 /// 4596 ///
4192 R visitTopLevelFunctionDeclaration( 4597 R visitTopLevelFunctionDeclaration(
4193 FunctionExpression node, 4598 FunctionExpression node,
4194 MethodElement function, 4599 MethodElement function,
4195 NodeList parameters, 4600 NodeList parameters,
4196 Node body, 4601 Node body,
4197 A arg); 4602 A arg);
4198 4603
4199 /// A declaration of a static [getter]. 4604 /// A declaration of a static [getter].
4200 /// 4605 ///
4201 /// For instance 4606 /// For instance:
4607 ///
4202 /// class C { 4608 /// class C {
4203 /// static get m => 42; 4609 /// static get m => 42;
4204 /// } 4610 /// }
4205 /// 4611 ///
4206 R visitStaticGetterDeclaration( 4612 R visitStaticGetterDeclaration(
4207 FunctionExpression node, 4613 FunctionExpression node,
4208 MethodElement getter, 4614 MethodElement getter,
4209 Node body, 4615 Node body,
4210 A arg); 4616 A arg);
4211 4617
4212 /// A declaration of a static [setter]. 4618 /// A declaration of a static [setter].
4213 /// 4619 ///
4214 /// For instance 4620 /// For instance:
4621 ///
4215 /// class C { 4622 /// class C {
4216 /// static set m(a) {} 4623 /// static set m(a) {}
4217 /// } 4624 /// }
4218 /// 4625 ///
4219 R visitStaticSetterDeclaration( 4626 R visitStaticSetterDeclaration(
4220 FunctionExpression node, 4627 FunctionExpression node,
4221 MethodElement setter, 4628 MethodElement setter,
4222 NodeList parameters, 4629 NodeList parameters,
4223 Node body, 4630 Node body,
4224 A arg); 4631 A arg);
4225 4632
4226 /// A declaration of a static [function]. 4633 /// A declaration of a static [function].
4227 /// 4634 ///
4228 /// For instance 4635 /// For instance:
4636 ///
4229 /// class C { 4637 /// class C {
4230 /// static m(a) {} 4638 /// static m(a) {}
4231 /// } 4639 /// }
4232 /// 4640 ///
4233 R visitStaticFunctionDeclaration( 4641 R visitStaticFunctionDeclaration(
4234 FunctionExpression node, 4642 FunctionExpression node,
4235 MethodElement function, 4643 MethodElement function,
4236 NodeList parameters, 4644 NodeList parameters,
4237 Node body, 4645 Node body,
4238 A arg); 4646 A arg);
4239 4647
4240 /// A declaration of an abstract instance [getter]. 4648 /// A declaration of an abstract instance [getter].
4241 /// 4649 ///
4242 /// For instance 4650 /// For instance:
4651 ///
4243 /// abstract class C { 4652 /// abstract class C {
4244 /// get m; 4653 /// get m;
4245 /// } 4654 /// }
4246 /// 4655 ///
4247 R visitAbstractGetterDeclaration( 4656 R visitAbstractGetterDeclaration(
4248 FunctionExpression node, 4657 FunctionExpression node,
4249 MethodElement getter, 4658 MethodElement getter,
4250 A arg); 4659 A arg);
4251 4660
4252 /// A declaration of an abstract instance [setter]. 4661 /// A declaration of an abstract instance [setter].
4253 /// 4662 ///
4254 /// For instance 4663 /// For instance:
4664 ///
4255 /// abstract class C { 4665 /// abstract class C {
4256 /// set m(a); 4666 /// set m(a);
4257 /// } 4667 /// }
4258 /// 4668 ///
4259 R visitAbstractSetterDeclaration( 4669 R visitAbstractSetterDeclaration(
4260 FunctionExpression node, 4670 FunctionExpression node,
4261 MethodElement setter, 4671 MethodElement setter,
4262 NodeList parameters, 4672 NodeList parameters,
4263 A arg); 4673 A arg);
4264 4674
4265 /// A declaration of an abstract instance [method]. 4675 /// A declaration of an abstract instance [method].
4266 /// 4676 ///
4267 /// For instance 4677 /// For instance:
4678 ///
4268 /// abstract class C { 4679 /// abstract class C {
4269 /// m(a); 4680 /// m(a);
4270 /// } 4681 /// }
4271 /// 4682 ///
4272 R visitAbstractMethodDeclaration( 4683 R visitAbstractMethodDeclaration(
4273 FunctionExpression node, 4684 FunctionExpression node,
4274 MethodElement method, 4685 MethodElement method,
4275 NodeList parameters, 4686 NodeList parameters,
4276 A arg); 4687 A arg);
4277 4688
4278 /// A declaration of an instance [getter]. 4689 /// A declaration of an instance [getter].
4279 /// 4690 ///
4280 /// For instance 4691 /// For instance:
4692 ///
4281 /// class C { 4693 /// class C {
4282 /// get m => 42; 4694 /// get m => 42;
4283 /// } 4695 /// }
4284 /// 4696 ///
4285 R visitInstanceGetterDeclaration( 4697 R visitInstanceGetterDeclaration(
4286 FunctionExpression node, 4698 FunctionExpression node,
4287 MethodElement getter, 4699 MethodElement getter,
4288 Node body, 4700 Node body,
4289 A arg); 4701 A arg);
4290 4702
4291 /// A declaration of an instance [setter]. 4703 /// A declaration of an instance [setter].
4292 /// 4704 ///
4293 /// For instance 4705 /// For instance:
4706 ///
4294 /// class C { 4707 /// class C {
4295 /// set m(a) {} 4708 /// set m(a) {}
4296 /// } 4709 /// }
4297 /// 4710 ///
4298 R visitInstanceSetterDeclaration( 4711 R visitInstanceSetterDeclaration(
4299 FunctionExpression node, 4712 FunctionExpression node,
4300 MethodElement setter, 4713 MethodElement setter,
4301 NodeList parameters, 4714 NodeList parameters,
4302 Node body, 4715 Node body,
4303 A arg); 4716 A arg);
4304 4717
4305 /// A declaration of an instance [method]. 4718 /// A declaration of an instance [method].
4306 /// 4719 ///
4307 /// For instance 4720 /// For instance:
4721 ///
4308 /// class C { 4722 /// class C {
4309 /// m(a) {} 4723 /// m(a) {}
4310 /// } 4724 /// }
4311 /// 4725 ///
4312 R visitInstanceMethodDeclaration( 4726 R visitInstanceMethodDeclaration(
4313 FunctionExpression node, 4727 FunctionExpression node,
4314 MethodElement method, 4728 MethodElement method,
4315 NodeList parameters, 4729 NodeList parameters,
4316 Node body, 4730 Node body,
4317 A arg); 4731 A arg);
4318 4732
4319 /// A declaration of a local [function]. 4733 /// A declaration of a local [function].
4320 /// 4734 ///
4321 /// For instance `local` in 4735 /// For instance `local` in:
4736 ///
4322 /// m() { 4737 /// m() {
4323 /// local(a) {} 4738 /// local(a) {}
4324 /// } 4739 /// }
4325 /// 4740 ///
4326 R visitLocalFunctionDeclaration( 4741 R visitLocalFunctionDeclaration(
4327 FunctionExpression node, 4742 FunctionExpression node,
4328 LocalFunctionElement function, 4743 LocalFunctionElement function,
4329 NodeList parameters, 4744 NodeList parameters,
4330 Node body, 4745 Node body,
4331 A arg); 4746 A arg);
4332 4747
4333 /// A declaration of a [closure]. 4748 /// A declaration of a [closure].
4334 /// 4749 ///
4335 /// For instance `(a) {}` in 4750 /// For instance `(a) {}` in:
4751 ///
4336 /// m() { 4752 /// m() {
4337 /// var closure = (a) {}; 4753 /// var closure = (a) {};
4338 /// } 4754 /// }
4339 /// 4755 ///
4340 R visitClosureDeclaration( 4756 R visitClosureDeclaration(
4341 FunctionExpression node, 4757 FunctionExpression node,
4342 LocalFunctionElement closure, 4758 LocalFunctionElement closure,
4343 NodeList parameters, 4759 NodeList parameters,
4344 Node body, 4760 Node body,
4345 A arg); 4761 A arg);
4346 4762
4347 /// A declaration of the [index]th [parameter] in a constructor, setter, 4763 /// A declaration of the [index]th [parameter] in a constructor, setter,
4348 /// method or function. 4764 /// method or function.
4349 /// 4765 ///
4350 /// For instance `a` in 4766 /// For instance `a` in:
4767 ///
4351 /// m(a) {} 4768 /// m(a) {}
4352 /// 4769 ///
4353 R visitParameterDeclaration( 4770 R visitParameterDeclaration(
4354 VariableDefinitions node, 4771 VariableDefinitions node,
4355 Node definition, 4772 Node definition,
4356 ParameterElement parameter, 4773 ParameterElement parameter,
4357 int index, 4774 int index,
4358 A arg); 4775 A arg);
4359 4776
4360 /// A declaration of the [index]th optional [parameter] in a constructor, 4777 /// A declaration of the [index]th optional [parameter] in a constructor,
4361 /// method or function with the explicit [defaultValue]. If no default value 4778 /// method or function with the explicit [defaultValue]. If no default value
4362 /// is declared, [defaultValue] is `null`. 4779 /// is declared, [defaultValue] is `null`.
4363 /// 4780 ///
4364 /// For instance `a` in 4781 /// For instance `a` in:
4782 ///
4365 /// m([a = 42]) {} 4783 /// m([a = 42]) {}
4366 /// 4784 ///
4367 R visitOptionalParameterDeclaration( 4785 R visitOptionalParameterDeclaration(
4368 VariableDefinitions node, 4786 VariableDefinitions node,
4369 Node definition, 4787 Node definition,
4370 ParameterElement parameter, 4788 ParameterElement parameter,
4371 ConstantExpression defaultValue, 4789 ConstantExpression defaultValue,
4372 int index, 4790 int index,
4373 A arg); 4791 A arg);
4374 4792
4375 /// A declaration of a named [parameter] in a constructor, method or function 4793 /// A declaration of a named [parameter] in a constructor, method or function
4376 /// with the explicit [defaultValue]. If no default value is declared, 4794 /// with the explicit [defaultValue]. If no default value is declared,
4377 /// [defaultValue] is `null`. 4795 /// [defaultValue] is `null`.
4378 /// 4796 ///
4379 /// For instance `a` in 4797 /// For instance `a` in:
4798 ///
4380 /// m({a: 42}) {} 4799 /// m({a: 42}) {}
4381 /// 4800 ///
4382 R visitNamedParameterDeclaration( 4801 R visitNamedParameterDeclaration(
4383 VariableDefinitions node, 4802 VariableDefinitions node,
4384 Node definition, 4803 Node definition,
4385 ParameterElement parameter, 4804 ParameterElement parameter,
4386 ConstantExpression defaultValue, 4805 ConstantExpression defaultValue,
4387 A arg); 4806 A arg);
4388 4807
4389 /// A declaration of the [index]th [parameter] as an initializing formal in a 4808 /// A declaration of the [index]th [parameter] as an initializing formal in a
4390 /// constructor. 4809 /// constructor.
4391 /// 4810 ///
4392 /// For instance `a` in 4811 /// For instance `a` in:
4812 ///
4393 /// class C { 4813 /// class C {
4394 /// var a; 4814 /// var a;
4395 /// C(this.a); 4815 /// C(this.a);
4396 /// } 4816 /// }
4397 /// 4817 ///
4398 R visitInitializingFormalDeclaration( 4818 R visitInitializingFormalDeclaration(
4399 VariableDefinitions node, 4819 VariableDefinitions node,
4400 Node definition, 4820 Node definition,
4401 InitializingFormalElement parameter, 4821 InitializingFormalElement parameter,
4402 int index, 4822 int index,
4403 A arg); 4823 A arg);
4404 4824
4405 /// A declaration of the [index]th optional [parameter] as an initializing 4825 /// A declaration of the [index]th optional [parameter] as an initializing
4406 /// formal in a constructor with the explicit [defaultValue]. If no default 4826 /// formal in a constructor with the explicit [defaultValue]. If no default
4407 /// value is declared, [defaultValue] is `null`. 4827 /// value is declared, [defaultValue] is `null`.
4408 /// 4828 ///
4409 /// For instance `a` in 4829 /// For instance `a` in:
4830 ///
4410 /// class C { 4831 /// class C {
4411 /// var a; 4832 /// var a;
4412 /// C([this.a = 42]); 4833 /// C([this.a = 42]);
4413 /// } 4834 /// }
4414 /// 4835 ///
4415 R visitOptionalInitializingFormalDeclaration( 4836 R visitOptionalInitializingFormalDeclaration(
4416 VariableDefinitions node, 4837 VariableDefinitions node,
4417 Node definition, 4838 Node definition,
4418 InitializingFormalElement parameter, 4839 InitializingFormalElement parameter,
4419 ConstantExpression defaultValue, 4840 ConstantExpression defaultValue,
4420 int index, 4841 int index,
4421 A arg); 4842 A arg);
4422 4843
4423 /// A declaration of a named [parameter] as an initializing formal in a 4844 /// A declaration of a named [parameter] as an initializing formal in a
4424 /// constructor with the explicit [defaultValue]. If no default value is 4845 /// constructor with the explicit [defaultValue]. If no default value is
4425 /// declared, [defaultValue] is `null`. 4846 /// declared, [defaultValue] is `null`.
4426 /// 4847 ///
4427 /// For instance `a` in 4848 /// For instance `a` in:
4849 ///
4428 /// class C { 4850 /// class C {
4429 /// var a; 4851 /// var a;
4430 /// C({this.a: 42}); 4852 /// C({this.a: 42});
4431 /// } 4853 /// }
4432 /// 4854 ///
4433 R visitNamedInitializingFormalDeclaration( 4855 R visitNamedInitializingFormalDeclaration(
4434 VariableDefinitions node, 4856 VariableDefinitions node,
4435 Node definition, 4857 Node definition,
4436 InitializingFormalElement parameter, 4858 InitializingFormalElement parameter,
4437 ConstantExpression defaultValue, 4859 ConstantExpression defaultValue,
4438 A arg); 4860 A arg);
4439 4861
4440 /// A declaration of a local [variable] with the explicit [initializer]. If 4862 /// A declaration of a local [variable] with the explicit [initializer]. If
4441 /// no initializer is declared, [initializer] is `null`. 4863 /// no initializer is declared, [initializer] is `null`.
4442 /// 4864 ///
4443 /// For instance `a` in 4865 /// For instance `a` in:
4866 ///
4444 /// m() { 4867 /// m() {
4445 /// var a = 42; 4868 /// var a = 42;
4446 /// } 4869 /// }
4447 /// 4870 ///
4448 R visitLocalVariableDeclaration( 4871 R visitLocalVariableDeclaration(
4449 VariableDefinitions node, 4872 VariableDefinitions node,
4450 Node definition, 4873 Node definition,
4451 LocalVariableElement variable, 4874 LocalVariableElement variable,
4452 Node initializer, 4875 Node initializer,
4453 A arg); 4876 A arg);
4454 4877
4455 /// A declaration of a local constant [variable] initialized to [constant]. 4878 /// A declaration of a local constant [variable] initialized to [constant].
4456 /// 4879 ///
4457 /// For instance `a` in 4880 /// For instance `a` in:
4881 ///
4458 /// m() { 4882 /// m() {
4459 /// const a = 42; 4883 /// const a = 42;
4460 /// } 4884 /// }
4461 /// 4885 ///
4462 R visitLocalConstantDeclaration( 4886 R visitLocalConstantDeclaration(
4463 VariableDefinitions node, 4887 VariableDefinitions node,
4464 Node definition, 4888 Node definition,
4465 LocalVariableElement variable, 4889 LocalVariableElement variable,
4466 ConstantExpression constant, 4890 ConstantExpression constant,
4467 A arg); 4891 A arg);
4468 4892
4469 /// A declaration of a top level [field] with the explicit [initializer]. 4893 /// A declaration of a top level [field] with the explicit [initializer].
4470 /// If no initializer is declared, [initializer] is `null`. 4894 /// If no initializer is declared, [initializer] is `null`.
4471 /// 4895 ///
4472 /// For instance `a` in 4896 /// For instance `a` in:
4897 ///
4473 /// var a = 42; 4898 /// var a = 42;
4474 /// 4899 ///
4475 R visitTopLevelFieldDeclaration( 4900 R visitTopLevelFieldDeclaration(
4476 VariableDefinitions node, 4901 VariableDefinitions node,
4477 Node definition, 4902 Node definition,
4478 FieldElement field, 4903 FieldElement field,
4479 Node initializer, 4904 Node initializer,
4480 A arg); 4905 A arg);
4481 4906
4482 /// A declaration of a top level constant [field] initialized to [constant]. 4907 /// A declaration of a top level constant [field] initialized to [constant].
4483 /// 4908 ///
4484 /// For instance `a` in 4909 /// For instance `a` in:
4910 ///
4485 /// const a = 42; 4911 /// const a = 42;
4486 /// 4912 ///
4487 R visitTopLevelConstantDeclaration( 4913 R visitTopLevelConstantDeclaration(
4488 VariableDefinitions node, 4914 VariableDefinitions node,
4489 Node definition, 4915 Node definition,
4490 FieldElement field, 4916 FieldElement field,
4491 ConstantExpression constant, 4917 ConstantExpression constant,
4492 A arg); 4918 A arg);
4493 4919
4494 /// A declaration of a static [field] with the explicit [initializer]. 4920 /// A declaration of a static [field] with the explicit [initializer].
4495 /// If no initializer is declared, [initializer] is `null`. 4921 /// If no initializer is declared, [initializer] is `null`.
4496 /// 4922 ///
4497 /// For instance `a` in 4923 /// For instance `a` in:
4924 ///
4498 /// class C { 4925 /// class C {
4499 /// static var a = 42; 4926 /// static var a = 42;
4500 /// } 4927 /// }
4501 /// 4928 ///
4502 R visitStaticFieldDeclaration( 4929 R visitStaticFieldDeclaration(
4503 VariableDefinitions node, 4930 VariableDefinitions node,
4504 Node definition, 4931 Node definition,
4505 FieldElement field, 4932 FieldElement field,
4506 Node initializer, 4933 Node initializer,
4507 A arg); 4934 A arg);
4508 4935
4509 /// A declaration of a static constant [field] initialized to [constant]. 4936 /// A declaration of a static constant [field] initialized to [constant].
4510 /// 4937 ///
4511 /// For instance `a` in 4938 /// For instance `a` in:
4939 ///
4512 /// class C { 4940 /// class C {
4513 /// static const a = 42; 4941 /// static const a = 42;
4514 /// } 4942 /// }
4515 /// 4943 ///
4516 R visitStaticConstantDeclaration( 4944 R visitStaticConstantDeclaration(
4517 VariableDefinitions node, 4945 VariableDefinitions node,
4518 Node definition, 4946 Node definition,
4519 FieldElement field, 4947 FieldElement field,
4520 ConstantExpression constant, 4948 ConstantExpression constant,
4521 A arg); 4949 A arg);
4522 4950
4523 /// A declaration of an instance [field] with the explicit [initializer]. 4951 /// A declaration of an instance [field] with the explicit [initializer].
4524 /// If no initializer is declared, [initializer] is `null`. 4952 /// If no initializer is declared, [initializer] is `null`.
4525 /// 4953 ///
4526 /// For instance `a` in 4954 /// For instance `a` in:
4955 ///
4527 /// class C { 4956 /// class C {
4528 /// var a = 42; 4957 /// var a = 42;
4529 /// } 4958 /// }
4530 /// 4959 ///
4531 R visitInstanceFieldDeclaration( 4960 R visitInstanceFieldDeclaration(
4532 VariableDefinitions node, 4961 VariableDefinitions node,
4533 Node definition, 4962 Node definition,
4534 FieldElement field, 4963 FieldElement field,
4535 Node initializer, 4964 Node initializer,
4536 A arg); 4965 A arg);
4537 4966
4538 /// A declaration of a generative [constructor] with the explicit constructor 4967 /// A declaration of a generative [constructor] with the explicit constructor
4539 /// [initializers]. 4968 /// [initializers].
4540 /// 4969 ///
4541 /// For instance `C` in 4970 /// For instance `C` in:
4971 ///
4542 /// class C { 4972 /// class C {
4543 /// var a; 4973 /// var a;
4544 /// C(a) : this.a = a, super(); 4974 /// C(a) : this.a = a, super();
4545 /// } 4975 /// }
4546 /// 4976 ///
4547 // TODO(johnniwinther): Replace [initializers] with a structure like 4977 // TODO(johnniwinther): Replace [initializers] with a structure like
4548 // [InitializersStructure] when computed in resolution. 4978 // [InitializersStructure] when computed in resolution.
4549 R visitGenerativeConstructorDeclaration( 4979 R visitGenerativeConstructorDeclaration(
4550 FunctionExpression node, 4980 FunctionExpression node,
4551 ConstructorElement constructor, 4981 ConstructorElement constructor,
4552 NodeList parameters, 4982 NodeList parameters,
4553 NodeList initializers, 4983 NodeList initializers,
4554 Node body, 4984 Node body,
4555 A arg); 4985 A arg);
4556 4986
4557 /// A declaration of a redirecting generative [constructor] with 4987 /// A declaration of a redirecting generative [constructor] with
4558 /// [initializers] containing the redirecting constructor invocation. 4988 /// [initializers] containing the redirecting constructor invocation.
4559 /// 4989 ///
4560 /// For instance `C` in 4990 /// For instance `C` in:
4991 ///
4561 /// class C { 4992 /// class C {
4562 /// C() : this._(); 4993 /// C() : this._();
4563 /// C._(); 4994 /// C._();
4564 /// } 4995 /// }
4565 /// 4996 ///
4566 // TODO(johnniwinther): Replace [initializers] with a single 4997 // TODO(johnniwinther): Replace [initializers] with a single
4567 // [ThisConstructorInvokeStructure] when computed in resolution. 4998 // [ThisConstructorInvokeStructure] when computed in resolution.
4568 R visitRedirectingGenerativeConstructorDeclaration( 4999 R visitRedirectingGenerativeConstructorDeclaration(
4569 FunctionExpression node, 5000 FunctionExpression node,
4570 ConstructorElement constructor, 5001 ConstructorElement constructor,
4571 NodeList parameters, 5002 NodeList parameters,
4572 NodeList initializers, 5003 NodeList initializers,
4573 A arg); 5004 A arg);
4574 5005
4575 /// A declaration of a factory [constructor]. 5006 /// A declaration of a factory [constructor].
4576 /// 5007 ///
4577 /// For instance `C` in 5008 /// For instance `C` in:
5009 ///
4578 /// class C { 5010 /// class C {
4579 /// factory C(a) => null; 5011 /// factory C(a) => null;
4580 /// } 5012 /// }
4581 /// 5013 ///
4582 R visitFactoryConstructorDeclaration( 5014 R visitFactoryConstructorDeclaration(
4583 FunctionExpression node, 5015 FunctionExpression node,
4584 ConstructorElement constructor, 5016 ConstructorElement constructor,
4585 NodeList parameters, 5017 NodeList parameters,
4586 Node body, 5018 Node body,
4587 A arg); 5019 A arg);
4588 5020
4589 /// A declaration of a redirecting factory [constructor]. The immediate 5021 /// A declaration of a redirecting factory [constructor]. The immediate
4590 /// redirection target and its type is provided in [redirectionTarget] and 5022 /// redirection target and its type is provided in [redirectionTarget] and
4591 /// [redirectionType], respectively. 5023 /// [redirectionType], respectively.
4592 /// 5024 ///
4593 /// For instance 5025 /// For instance:
5026 ///
4594 /// class C<T> { 5027 /// class C<T> {
4595 /// factory C() = C<int>.a; 5028 /// factory C() = C<int>.a;
4596 /// factory C.a() = C<C<T>>.b; 5029 /// factory C.a() = C<C<T>>.b;
4597 /// C.b(); 5030 /// C.b();
4598 /// } 5031 /// }
4599 /// where `C` has the redirection target `C.a` of type `C<int>` and `C.a` has 5032 /// where `C` has the redirection target `C.a` of type `C<int>` and `C.a` has
4600 /// the redirection target `C.b` of type `C<C<T>>`. 5033 /// the redirection target `C.b` of type `C<C<T>>`.
4601 /// 5034 ///
4602 R visitRedirectingFactoryConstructorDeclaration( 5035 R visitRedirectingFactoryConstructorDeclaration(
4603 FunctionExpression node, 5036 FunctionExpression node,
4604 ConstructorElement constructor, 5037 ConstructorElement constructor,
4605 NodeList parameters, 5038 NodeList parameters,
4606 InterfaceType redirectionType, 5039 InterfaceType redirectionType,
4607 ConstructorElement redirectionTarget, 5040 ConstructorElement redirectionTarget,
4608 A arg); 5041 A arg);
4609 5042
4610 /// An initializer of [field] with [initializer] as found in constructor 5043 /// An initializer of [field] with [initializer] as found in constructor
4611 /// initializers. 5044 /// initializers.
4612 /// 5045 ///
4613 /// For instance `this.a = 42` in 5046 /// For instance `this.a = 42` in:
5047 ///
4614 /// class C { 5048 /// class C {
4615 /// var a; 5049 /// var a;
4616 /// C() : this.a = 42; 5050 /// C() : this.a = 42;
4617 /// } 5051 /// }
4618 /// 5052 ///
4619 R visitFieldInitializer( 5053 R visitFieldInitializer(
4620 SendSet node, 5054 SendSet node,
4621 FieldElement field, 5055 FieldElement field,
4622 Node initializer, 5056 Node initializer,
4623 A arg); 5057 A arg);
4624 5058
4625 /// An initializer of an unresolved field with [initializer] as found in 5059 /// An initializer of an unresolved field with [initializer] as found in
4626 /// generative constructor initializers. 5060 /// generative constructor initializers.
4627 /// 5061 ///
4628 /// For instance `this.a = 42` in 5062 /// For instance `this.a = 42` in:
5063 ///
4629 /// class C { 5064 /// class C {
4630 /// C() : this.a = 42; 5065 /// C() : this.a = 42;
4631 /// } 5066 /// }
4632 /// 5067 ///
4633 R errorUnresolvedFieldInitializer( 5068 R errorUnresolvedFieldInitializer(
4634 SendSet node, 5069 SendSet node,
4635 Element element, 5070 Element element,
4636 Node initializer, 5071 Node initializer,
4637 A arg); 5072 A arg);
4638 5073
4639 /// An super constructor invocation of [superConstructor] with [arguments] as 5074 /// An super constructor invocation of [superConstructor] with [arguments] as
4640 /// found in generative constructor initializers. 5075 /// found in generative constructor initializers.
4641 /// 5076 ///
4642 /// For instance `super(42)` in 5077 /// For instance `super(42)` in:
5078 ///
4643 /// class B { 5079 /// class B {
4644 /// B(a); 5080 /// B(a);
4645 /// } 5081 /// }
4646 /// class C extends B { 5082 /// class C extends B {
4647 /// C() : super(42); 5083 /// C() : super(42);
4648 /// } 5084 /// }
4649 /// 5085 ///
4650 R visitSuperConstructorInvoke( 5086 R visitSuperConstructorInvoke(
4651 Send node, 5087 Send node,
4652 ConstructorElement superConstructor, 5088 ConstructorElement superConstructor,
4653 InterfaceType type, 5089 InterfaceType type,
4654 NodeList arguments, 5090 NodeList arguments,
4655 CallStructure callStructure, 5091 CallStructure callStructure,
4656 A arg); 5092 A arg);
4657 5093
4658 /// An implicit super constructor invocation of [superConstructor] from 5094 /// An implicit super constructor invocation of [superConstructor] from
4659 /// generative constructor initializers. 5095 /// generative constructor initializers.
4660 /// 5096 ///
4661 /// For instance `super(42)` in 5097 /// For instance `super(42)` in:
5098 ///
4662 /// class B { 5099 /// class B {
4663 /// B(); 5100 /// B();
4664 /// } 5101 /// }
4665 /// class C extends B { 5102 /// class C extends B {
4666 /// C(); // Implicit super call of B(). 5103 /// C(); // Implicit super call of B().
4667 /// } 5104 /// }
4668 /// 5105 ///
4669 R visitImplicitSuperConstructorInvoke( 5106 R visitImplicitSuperConstructorInvoke(
4670 FunctionExpression node, 5107 FunctionExpression node,
4671 ConstructorElement superConstructor, 5108 ConstructorElement superConstructor,
4672 InterfaceType type, 5109 InterfaceType type,
4673 A arg); 5110 A arg);
4674 5111
4675 /// An super constructor invocation of an unresolved with [arguments] as 5112 /// An super constructor invocation of an unresolved with [arguments] as
4676 /// found in generative constructor initializers. 5113 /// found in generative constructor initializers.
4677 /// 5114 ///
4678 /// For instance `super(42)` in 5115 /// For instance `super(42)` in:
5116 ///
4679 /// class B { 5117 /// class B {
4680 /// B(a); 5118 /// B(a);
4681 /// } 5119 /// }
4682 /// class C extends B { 5120 /// class C extends B {
4683 /// C() : super.unresolved(42); 5121 /// C() : super.unresolved(42);
4684 /// } 5122 /// }
4685 /// 5123 ///
4686 R errorUnresolvedSuperConstructorInvoke( 5124 R errorUnresolvedSuperConstructorInvoke(
4687 Send node, 5125 Send node,
4688 Element element, 5126 Element element,
4689 NodeList arguments, 5127 NodeList arguments,
4690 Selector selector, 5128 Selector selector,
4691 A arg); 5129 A arg);
4692 5130
4693 /// An this constructor invocation of [thisConstructor] with [arguments] as 5131 /// An this constructor invocation of [thisConstructor] with [arguments] as
4694 /// found in a redirecting generative constructors initializer. 5132 /// found in a redirecting generative constructors initializer.
4695 /// 5133 ///
4696 /// For instance `this._(42)` in 5134 /// For instance `this._(42)` in:
5135 ///
4697 /// class C { 5136 /// class C {
4698 /// C() : this._(42); 5137 /// C() : this._(42);
4699 /// C._(a); 5138 /// C._(a);
4700 /// } 5139 /// }
4701 /// 5140 ///
4702 R visitThisConstructorInvoke( 5141 R visitThisConstructorInvoke(
4703 Send node, 5142 Send node,
4704 ConstructorElement thisConstructor, 5143 ConstructorElement thisConstructor,
4705 NodeList arguments, 5144 NodeList arguments,
4706 CallStructure callStructure, 5145 CallStructure callStructure,
4707 A arg); 5146 A arg);
4708 5147
4709 /// An this constructor invocation of an unresolved constructor with 5148 /// An this constructor invocation of an unresolved constructor with
4710 /// [arguments] as found in a redirecting generative constructors initializer. 5149 /// [arguments] as found in a redirecting generative constructors initializer.
4711 /// 5150 ///
4712 /// For instance `this._(42)` in 5151 /// For instance `this._(42)` in:
5152 ///
4713 /// class C { 5153 /// class C {
4714 /// C() : this._(42); 5154 /// C() : this._(42);
4715 /// } 5155 /// }
4716 /// 5156 ///
4717 R errorUnresolvedThisConstructorInvoke( 5157 R errorUnresolvedThisConstructorInvoke(
4718 Send node, 5158 Send node,
4719 Element element, 5159 Element element,
4720 NodeList arguments, 5160 NodeList arguments,
4721 Selector selector, 5161 Selector selector,
4722 A arg); 5162 A arg);
4723 } 5163 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/resolution/members.dart ('k') | pkg/compiler/lib/src/resolution/semantic_visitor_mixins.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698