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