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

Side by Side Diff: pkg/compiler/lib/src/kernel/unresolved.dart

Issue 2944843002: All strong mode cleaning of dart2js. (Closed)
Patch Set: More issues discovered during testing. Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « pkg/compiler/lib/src/kernel/types.dart ('k') | pkg/compiler/lib/src/native/resolver.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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.md file. 3 // BSD-style license that can be found in the LICENSE.md file.
4 4
5 import 'package:kernel/ast.dart' as ir; 5 import 'package:kernel/ast.dart' as ir;
6 6
7 import "../elements/elements.dart" 7 import "../elements/elements.dart"
8 show 8 show
9 AstElement, 9 AstElement,
10 ConstructorElement, 10 ConstructorElement,
11 Element, 11 Element,
12 ErroneousElement, 12 ErroneousElement,
13 FunctionElement, 13 FunctionElement,
14 MethodElement; 14 GetterElement,
15 MethodElement,
16 SetterElement;
15 import "../elements/operators.dart" 17 import "../elements/operators.dart"
16 show AssignmentOperator, BinaryOperator, IncDecOperator, UnaryOperator; 18 show AssignmentOperator, BinaryOperator, IncDecOperator, UnaryOperator;
17 import "../elements/resolution_types.dart" 19 import "../elements/resolution_types.dart"
18 show ResolutionDartType, ResolutionInterfaceType; 20 show ResolutionDartType, ResolutionInterfaceType;
19 import "../tree/tree.dart" show Expression, NewExpression, Node, NodeList, Send; 21 import "../tree/tree.dart"
22 show Expression, NewExpression, Node, NodeList, Send, SendSet;
20 import "../universe/call_structure.dart" show CallStructure; 23 import "../universe/call_structure.dart" show CallStructure;
21 import "../universe/selector.dart" show Selector; 24 import "../universe/selector.dart" show Selector;
22 import 'accessors.dart'; 25 import 'accessors.dart';
23 import "kernel.dart" show Kernel; 26 import "kernel.dart" show Kernel;
24 27
25 abstract class UnresolvedVisitor { 28 abstract class UnresolvedVisitor {
26 Kernel get kernel; 29 Kernel get kernel;
27 30
28 // Implemented in KernelVisitor 31 // Implemented in KernelVisitor
29 AstElement get currentElement; 32 AstElement get currentElement;
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 NodeList arguments, 180 NodeList arguments,
178 Selector selector, 181 Selector selector,
179 _) { 182 _) {
180 ir.Expression receiver = new ir.TypeLiteral(kernel.interfaceTypeToIr(type)); 183 ir.Expression receiver = new ir.TypeLiteral(kernel.interfaceTypeToIr(type));
181 String methodName = 184 String methodName =
182 node.send.selector != null ? '${node.send.selector}' : type.name; 185 node.send.selector != null ? '${node.send.selector}' : type.name;
183 return buildThrowNoSuchMethodError(kernel.getUnresolvedConstructorBuilder(), 186 return buildThrowNoSuchMethodError(kernel.getUnresolvedConstructorBuilder(),
184 receiver, methodName, buildArguments(arguments), constructor); 187 receiver, methodName, buildArguments(arguments), constructor);
185 } 188 }
186 189
187 ir.Expression visitUnresolvedCompound( 190 ir.Expression visitUnresolvedCompound(Send node, ErroneousElement element,
188 Send node, Element element, AssignmentOperator operator, Node rhs, _) { 191 AssignmentOperator operator, Node rhs, _) {
189 return buildThrowUnresolvedGetter('${node.selector}'); 192 return buildThrowUnresolvedGetter('${node.selector}');
190 } 193 }
191 194
192 ir.Expression visitUnresolvedGet(Send node, Element element, _) { 195 ir.Expression visitUnresolvedGet(Send node, Element element, _) {
193 return buildThrowUnresolvedGetter('${node.selector}'); 196 return buildThrowUnresolvedGetter('${node.selector}');
194 } 197 }
195 198
196 ir.Expression visitUnresolvedInvoke( 199 ir.Expression visitUnresolvedInvoke(
197 Send node, Element element, NodeList arguments, Selector selector, _) { 200 Send node, Element element, NodeList arguments, Selector selector, _) {
198 // TODO(asgerf): Should we use a type literal as receiver for unresolved 201 // TODO(asgerf): Should we use a type literal as receiver for unresolved
199 // static invocations? 202 // static invocations?
200 return buildThrowNoSuchMethodError(kernel.getGenericNoSuchMethodBuilder(), 203 return buildThrowNoSuchMethodError(kernel.getGenericNoSuchMethodBuilder(),
201 new ir.NullLiteral(), element.name, buildArguments(arguments), element); 204 new ir.NullLiteral(), element.name, buildArguments(arguments), element);
202 } 205 }
203 206
204 ir.Expression visitUnresolvedPostfix( 207 ir.Expression visitUnresolvedPostfix(
205 Send node, Element element, IncDecOperator operator, _) { 208 Send node, ErroneousElement element, IncDecOperator operator, _) {
206 return buildThrowUnresolvedGetter('${node.selector}'); 209 return buildThrowUnresolvedGetter('${node.selector}');
207 } 210 }
208 211
209 ir.Expression visitUnresolvedPrefix( 212 ir.Expression visitUnresolvedPrefix(
210 Send node, Element element, IncDecOperator operator, _) { 213 Send node, ErroneousElement element, IncDecOperator operator, _) {
211 return buildThrowUnresolvedGetter('${node.selector}'); 214 return buildThrowUnresolvedGetter('${node.selector}');
212 } 215 }
213 216
214 ir.Expression visitUnresolvedRedirectingFactoryConstructorInvoke( 217 ir.Expression visitUnresolvedRedirectingFactoryConstructorInvoke(
215 NewExpression node, 218 NewExpression node,
216 ConstructorElement constructor, 219 ConstructorElement constructor,
217 ResolutionInterfaceType type, 220 ResolutionInterfaceType type,
218 NodeList arguments, 221 NodeList arguments,
219 CallStructure callStructure, 222 CallStructure callStructure,
220 _) { 223 _) {
221 // The body of the factory will throw an error. 224 // The body of the factory will throw an error.
222 return new ir.StaticInvocation( 225 return new ir.StaticInvocation(
223 possiblyErroneousFunctionToIr(constructor), buildArguments(arguments)); 226 possiblyErroneousFunctionToIr(constructor), buildArguments(arguments));
224 } 227 }
225 228
226 ir.Expression visitUnresolvedSet(Send node, Element element, Node rhs, _) { 229 ir.Expression visitUnresolvedSet(SendSet node, Element element, Node rhs, _) {
227 return buildThrowUnresolvedSetter('${node.selector}', visitForValue(rhs)); 230 return buildThrowUnresolvedSetter('${node.selector}', visitForValue(rhs));
228 } 231 }
229 232
230 ir.Expression visitUnresolvedSetIfNull( 233 ir.Expression visitUnresolvedSetIfNull(
231 Send node, Element element, Node rhs, _) { 234 Send node, Element element, Node rhs, _) {
232 return buildThrowUnresolvedGetter('${node.selector}'); 235 return buildThrowUnresolvedGetter('${node.selector}');
233 } 236 }
234 237
235 ir.Expression visitUnresolvedStaticGetterCompound(Send node, Element element, 238 ir.Expression visitUnresolvedStaticGetterCompound(Send node, Element element,
236 MethodElement setter, AssignmentOperator operator, Node rhs, _) { 239 MethodElement setter, AssignmentOperator operator, Node rhs, _) {
(...skipping 14 matching lines...) Expand all
251 } 254 }
252 255
253 ir.Expression visitUnresolvedStaticGetterSetIfNull( 256 ir.Expression visitUnresolvedStaticGetterSetIfNull(
254 Send node, Element element, MethodElement setter, Node rhs, _) { 257 Send node, Element element, MethodElement setter, Node rhs, _) {
255 return buildThrowUnresolvedGetter( 258 return buildThrowUnresolvedGetter(
256 '${node.selector}', kernel.getUnresolvedStaticGetterBuilder()); 259 '${node.selector}', kernel.getUnresolvedStaticGetterBuilder());
257 } 260 }
258 261
259 ir.Expression visitUnresolvedStaticSetterCompound( 262 ir.Expression visitUnresolvedStaticSetterCompound(
260 Send node, 263 Send node,
261 MethodElement getter, 264 GetterElement getter,
262 Element element, 265 Element element,
263 AssignmentOperator operator, 266 AssignmentOperator operator,
264 Node rhs, 267 Node rhs,
265 _) { 268 _) {
266 return buildThrowUnresolvedSetter('${node.selector}', visitForValue(rhs), 269 return buildThrowUnresolvedSetter('${node.selector}', visitForValue(rhs),
267 kernel.getUnresolvedStaticSetterBuilder()); 270 kernel.getUnresolvedStaticSetterBuilder());
268 } 271 }
269 272
270 ir.Expression visitUnresolvedStaticSetterPostfix(Send node, 273 ir.Expression visitUnresolvedStaticSetterPostfix(Send node,
271 MethodElement getter, Element element, IncDecOperator operator, _) { 274 GetterElement getter, Element element, IncDecOperator operator, _) {
272 var accessor = new ClassStaticAccessor( 275 var accessor = new ClassStaticAccessor(
273 this, getter.name, possiblyErroneousFunctionToIr(getter), null); 276 this, getter.name, possiblyErroneousFunctionToIr(getter), null);
274 var result = accessor.buildPostfixIncrement( 277 var result = accessor.buildPostfixIncrement(
275 new ir.Name(operator.selectorName), 278 new ir.Name(operator.selectorName),
276 voidContext: isVoidContext); 279 voidContext: isVoidContext);
277 associateCompoundComponents(accessor, node); 280 associateCompoundComponents(accessor, node);
278 return result; 281 return result;
279 } 282 }
280 283
281 ir.Expression visitUnresolvedStaticSetterPrefix(Send node, 284 ir.Expression visitUnresolvedStaticSetterPrefix(Send node,
282 MethodElement getter, Element element, IncDecOperator operator, _) { 285 GetterElement getter, Element element, IncDecOperator operator, _) {
283 var accessor = new ClassStaticAccessor( 286 var accessor = new ClassStaticAccessor(
284 this, getter.name, possiblyErroneousFunctionToIr(getter), null); 287 this, getter.name, possiblyErroneousFunctionToIr(getter), null);
285 var result = accessor.buildPrefixIncrement( 288 var result = accessor.buildPrefixIncrement(
286 new ir.Name(operator.selectorName), 289 new ir.Name(operator.selectorName),
287 voidContext: isVoidContext); 290 voidContext: isVoidContext);
288 associateCompoundComponents(accessor, node); 291 associateCompoundComponents(accessor, node);
289 return result; 292 return result;
290 } 293 }
291 294
292 ir.Expression visitUnresolvedStaticSetterSetIfNull( 295 ir.Expression visitUnresolvedStaticSetterSetIfNull(
293 Send node, MethodElement getter, Element element, Node rhs, _) { 296 Send node, GetterElement getter, Element element, Node rhs, _) {
294 var accessor = new ClassStaticAccessor( 297 var accessor = new ClassStaticAccessor(
295 this, getter.name, possiblyErroneousFunctionToIr(getter), null); 298 this, getter.name, possiblyErroneousFunctionToIr(getter), null);
296 return accessor.buildNullAwareAssignment(visitForValue(rhs), null, 299 return accessor.buildNullAwareAssignment(visitForValue(rhs), null,
297 voidContext: isVoidContext); 300 voidContext: isVoidContext);
298 } 301 }
299 302
300 ir.Expression visitUnresolvedSuperBinary( 303 ir.Expression visitUnresolvedSuperBinary(
301 Send node, Element element, BinaryOperator operator, Node argument, _) { 304 Send node, Element element, BinaryOperator operator, Node argument, _) {
302 // TODO(sra): This is incorrect when the superclass defines noSuchMethod. 305 // TODO(sra): This is incorrect when the superclass defines noSuchMethod.
303 return buildThrowNoSuchMethodError( 306 return buildThrowNoSuchMethodError(
304 kernel.getUnresolvedSuperMethodBuilder(), 307 kernel.getUnresolvedSuperMethodBuilder(),
305 new ir.ThisExpression(), 308 new ir.ThisExpression(),
306 operator.selectorName, 309 operator.selectorName,
307 new ir.Arguments(<ir.Expression>[visitForValue(argument)])); 310 new ir.Arguments(<ir.Expression>[visitForValue(argument)]));
308 } 311 }
309 312
310 ir.Expression visitUnresolvedSuperCompound( 313 ir.Expression visitUnresolvedSuperCompound(
311 Send node, Element element, AssignmentOperator operator, Node rhs, _) { 314 Send node, Element element, AssignmentOperator operator, Node rhs, _) {
312 return buildThrowUnresolvedSuperGetter('${node.selector}'); 315 return buildThrowUnresolvedSuperGetter('${node.selector}');
313 } 316 }
314 317
315 ir.Expression visitUnresolvedSuperCompoundIndexSet(Send node, Element element, 318 ir.Expression visitUnresolvedSuperCompoundIndexSet(SendSet node,
316 Node index, AssignmentOperator operator, Node rhs, _) { 319 Element element, Node index, AssignmentOperator operator, Node rhs, _) {
317 return buildUnresolvedSuperIndexAccessor(index, element) 320 return buildUnresolvedSuperIndexAccessor(index, element)
318 .buildCompoundAssignment( 321 .buildCompoundAssignment(
319 new ir.Name(operator.selectorName), visitForValue(rhs)); 322 new ir.Name(operator.selectorName), visitForValue(rhs));
320 } 323 }
321 324
322 ir.Expression visitUnresolvedSuperGet(Send node, Element element, _) { 325 ir.Expression visitUnresolvedSuperGet(Send node, Element element, _) {
323 return buildThrowUnresolvedSuperGetter('${node.selector}'); 326 return buildThrowUnresolvedSuperGetter('${node.selector}');
324 } 327 }
325 328
326 ir.Expression visitUnresolvedSuperGetterCompound(Send node, Element element, 329 ir.Expression visitUnresolvedSuperGetterCompound(
327 MethodElement setter, AssignmentOperator operator, Node rhs, _) { 330 SendSet node,
331 Element element,
332 SetterElement setter,
333 AssignmentOperator operator,
334 Node rhs,
335 _) {
328 return buildThrowUnresolvedSuperGetter('${node.selector}'); 336 return buildThrowUnresolvedSuperGetter('${node.selector}');
329 } 337 }
330 338
331 ir.Expression visitUnresolvedSuperGetterCompoundIndexSet( 339 ir.Expression visitUnresolvedSuperGetterCompoundIndexSet(
332 Send node, 340 SendSet node,
333 Element element, 341 Element element,
334 MethodElement setter, 342 MethodElement setter,
335 Node index, 343 Node index,
336 AssignmentOperator operator, 344 AssignmentOperator operator,
337 Node rhs, 345 Node rhs,
338 _) { 346 _) {
339 return buildThrowUnresolvedSuperGetter('${node.selector}'); 347 return buildThrowUnresolvedSuperGetter('${node.selector}');
340 } 348 }
341 349
342 ir.Expression visitUnresolvedSuperGetterIndexPostfix( 350 ir.Expression visitUnresolvedSuperGetterIndexPostfix(
343 Send node, 351 SendSet node,
344 Element element, 352 Element element,
345 MethodElement setter, 353 MethodElement setter,
346 Node index, 354 Node index,
347 IncDecOperator operator, 355 IncDecOperator operator,
348 _) { 356 _) {
349 return buildThrowUnresolvedSuperGetter('${node.selector}'); 357 return buildThrowUnresolvedSuperGetter('${node.selector}');
350 } 358 }
351 359
352 ir.Expression visitUnresolvedSuperGetterIndexPrefix( 360 ir.Expression visitUnresolvedSuperGetterIndexPrefix(
353 Send node, 361 SendSet node,
354 Element element, 362 Element element,
355 MethodElement setter, 363 MethodElement setter,
356 Node index, 364 Node index,
357 IncDecOperator operator, 365 IncDecOperator operator,
358 _) { 366 _) {
359 return buildThrowUnresolvedSuperGetter('${node.selector}'); 367 return buildThrowUnresolvedSuperGetter('${node.selector}');
360 } 368 }
361 369
362 ir.Expression visitUnresolvedSuperGetterPostfix(Send node, Element element, 370 ir.Expression visitUnresolvedSuperGetterPostfix(SendSet node, Element element,
363 MethodElement setter, IncDecOperator operator, _) { 371 SetterElement setter, IncDecOperator operator, _) {
364 return buildThrowUnresolvedSuperGetter('${node.selector}'); 372 return buildThrowUnresolvedSuperGetter('${node.selector}');
365 } 373 }
366 374
367 ir.Expression visitUnresolvedSuperGetterPrefix(Send node, Element element, 375 ir.Expression visitUnresolvedSuperGetterPrefix(SendSet node, Element element,
368 MethodElement setter, IncDecOperator operator, _) { 376 SetterElement setter, IncDecOperator operator, _) {
369 return buildThrowUnresolvedSuperGetter('${node.selector}'); 377 return buildThrowUnresolvedSuperGetter('${node.selector}');
370 } 378 }
371 379
372 ir.Expression visitUnresolvedSuperGetterSetIfNull( 380 ir.Expression visitUnresolvedSuperGetterSetIfNull(
373 Send node, Element element, MethodElement setter, Node rhs, _) { 381 Send node, Element element, MethodElement setter, Node rhs, _) {
374 return buildThrowUnresolvedSuperGetter('${node.selector}'); 382 return buildThrowUnresolvedSuperGetter('${node.selector}');
375 } 383 }
376 384
377 ir.Expression visitUnresolvedSuperIndex( 385 ir.Expression visitUnresolvedSuperIndex(
378 Send node, Element element, Node index, _) { 386 Send node, Element element, Node index, _) {
379 return buildUnresolvedSuperIndexAccessor(index, element).buildSimpleRead(); 387 return buildUnresolvedSuperIndexAccessor(index, element).buildSimpleRead();
380 } 388 }
381 389
382 ir.Expression visitUnresolvedSuperIndexPostfix( 390 ir.Expression visitUnresolvedSuperIndexPostfix(
383 Send node, Element element, Node index, IncDecOperator operator, _) { 391 Send node, Element element, Node index, IncDecOperator operator, _) {
384 return buildUnresolvedSuperIndexAccessor(index, element).buildSimpleRead(); 392 return buildUnresolvedSuperIndexAccessor(index, element).buildSimpleRead();
385 } 393 }
386 394
387 ir.Expression visitUnresolvedSuperIndexPrefix( 395 ir.Expression visitUnresolvedSuperIndexPrefix(
388 Send node, Element element, Node index, IncDecOperator operator, _) { 396 Send node, Element element, Node index, IncDecOperator operator, _) {
389 return buildUnresolvedSuperIndexAccessor(index, element).buildSimpleRead(); 397 return buildUnresolvedSuperIndexAccessor(index, element).buildSimpleRead();
390 } 398 }
391 399
392 ir.Expression visitUnresolvedSuperIndexSet( 400 ir.Expression visitUnresolvedSuperIndexSet(
393 Send node, Element element, Node index, Node rhs, _) { 401 SendSet node, ErroneousElement element, Node index, Node rhs, _) {
394 return buildUnresolvedSuperIndexAccessor(index, element) 402 return buildUnresolvedSuperIndexAccessor(index, element)
395 .buildAssignment(visitForValue(rhs)); 403 .buildAssignment(visitForValue(rhs));
396 } 404 }
397 405
398 ir.Expression visitUnresolvedSuperInvoke( 406 ir.Expression visitUnresolvedSuperInvoke(
399 Send node, Element element, NodeList arguments, Selector selector, _) { 407 Send node, Element element, NodeList arguments, Selector selector, _) {
400 // TODO(asgerf): Should really invoke 'super.noSuchMethod'. 408 // TODO(asgerf): Should really invoke 'super.noSuchMethod'.
401 return buildThrowNoSuchMethodError(kernel.getUnresolvedSuperMethodBuilder(), 409 return buildThrowNoSuchMethodError(kernel.getUnresolvedSuperMethodBuilder(),
402 new ir.ThisExpression(), '${node.selector}', buildArguments(arguments)); 410 new ir.ThisExpression(), '${node.selector}', buildArguments(arguments));
403 } 411 }
404 412
405 ir.Expression visitUnresolvedSuperPostfix( 413 ir.Expression visitUnresolvedSuperPostfix(
406 Send node, Element element, IncDecOperator operator, _) { 414 SendSet node, Element element, IncDecOperator operator, _) {
407 return buildThrowUnresolvedSuperGetter('${node.selector}'); 415 return buildThrowUnresolvedSuperGetter('${node.selector}');
408 } 416 }
409 417
410 ir.Expression visitUnresolvedSuperPrefix( 418 ir.Expression visitUnresolvedSuperPrefix(
411 Send node, Element element, IncDecOperator operator, _) { 419 SendSet node, Element element, IncDecOperator operator, _) {
412 return buildThrowUnresolvedSuperGetter('${node.selector}'); 420 return buildThrowUnresolvedSuperGetter('${node.selector}');
413 } 421 }
414 422
415 ir.Expression visitUnresolvedSuperSetIfNull( 423 ir.Expression visitUnresolvedSuperSetIfNull(
416 Send node, Element element, Node rhs, _) { 424 Send node, Element element, Node rhs, _) {
417 return buildThrowUnresolvedSuperGetter('${node.selector}'); 425 return buildThrowUnresolvedSuperGetter('${node.selector}');
418 } 426 }
419 427
420 ir.Expression visitUnresolvedSuperSetterCompound( 428 ir.Expression visitUnresolvedSuperSetterCompound(
421 Send node, 429 Send node,
422 MethodElement getter, 430 GetterElement getter,
423 Element element, 431 Element element,
424 AssignmentOperator operator, 432 AssignmentOperator operator,
425 Node rhs, 433 Node rhs,
426 _) { 434 _) {
427 return buildUnresolvedSuperPropertyAccessor('${node.selector}', getter) 435 return buildUnresolvedSuperPropertyAccessor('${node.selector}', getter)
428 .buildCompoundAssignment( 436 .buildCompoundAssignment(
429 new ir.Name(operator.selectorName), visitForValue(rhs)); 437 new ir.Name(operator.selectorName), visitForValue(rhs));
430 } 438 }
431 439
432 ir.Expression visitUnresolvedSuperSetterCompoundIndexSet( 440 ir.Expression visitUnresolvedSuperSetterCompoundIndexSet(
433 Send node, 441 SendSet node,
434 MethodElement getter, 442 MethodElement getter,
435 Element element, 443 Element element,
436 Node index, 444 Node index,
437 AssignmentOperator operator, 445 AssignmentOperator operator,
438 Node rhs, 446 Node rhs,
439 _) { 447 _) {
440 return buildUnresolvedSuperIndexAccessor(index, element) 448 return buildUnresolvedSuperIndexAccessor(index, element)
441 .buildCompoundAssignment( 449 .buildCompoundAssignment(
442 new ir.Name(operator.selectorName), visitForValue(rhs)); 450 new ir.Name(operator.selectorName), visitForValue(rhs));
443 } 451 }
444 452
445 ir.Expression visitUnresolvedSuperSetterIndexPostfix( 453 ir.Expression visitUnresolvedSuperSetterIndexPostfix(
446 Send node, 454 SendSet node,
447 MethodElement indexFunction, 455 MethodElement indexFunction,
448 Element element, 456 Element element,
449 Node index, 457 Node index,
450 IncDecOperator operator, 458 IncDecOperator operator,
451 _) { 459 _) {
452 return buildUnresolvedSuperIndexAccessor(index, element) 460 return buildUnresolvedSuperIndexAccessor(index, element)
453 .buildPostfixIncrement(new ir.Name(operator.selectorName)); 461 .buildPostfixIncrement(new ir.Name(operator.selectorName));
454 } 462 }
455 463
456 ir.Expression visitUnresolvedSuperSetterIndexPrefix( 464 ir.Expression visitUnresolvedSuperSetterIndexPrefix(
457 Send node, 465 SendSet node,
458 MethodElement indexFunction, 466 MethodElement indexFunction,
459 Element element, 467 Element element,
460 Node index, 468 Node index,
461 IncDecOperator operator, 469 IncDecOperator operator,
462 _) { 470 _) {
463 return buildUnresolvedSuperIndexAccessor(index, element) 471 return buildUnresolvedSuperIndexAccessor(index, element)
464 .buildPrefixIncrement(new ir.Name(operator.selectorName)); 472 .buildPrefixIncrement(new ir.Name(operator.selectorName));
465 } 473 }
466 474
467 ir.Expression visitUnresolvedSuperSetterPostfix(Send node, 475 ir.Expression visitUnresolvedSuperSetterPostfix(SendSet node,
468 MethodElement getter, Element element, IncDecOperator operator, _) { 476 GetterElement getter, Element element, IncDecOperator operator, _) {
469 return buildUnresolvedSuperPropertyAccessor('${node.selector}', getter) 477 return buildUnresolvedSuperPropertyAccessor('${node.selector}', getter)
470 .buildPostfixIncrement(new ir.Name(operator.selectorName)); 478 .buildPostfixIncrement(new ir.Name(operator.selectorName));
471 } 479 }
472 480
473 ir.Expression visitUnresolvedSuperSetterPrefix(Send node, 481 ir.Expression visitUnresolvedSuperSetterPrefix(SendSet node,
474 MethodElement getter, Element element, IncDecOperator operator, _) { 482 GetterElement getter, Element element, IncDecOperator operator, _) {
475 return buildUnresolvedSuperPropertyAccessor('${node.selector}', getter) 483 return buildUnresolvedSuperPropertyAccessor('${node.selector}', getter)
476 .buildPrefixIncrement(new ir.Name(operator.selectorName)); 484 .buildPrefixIncrement(new ir.Name(operator.selectorName));
477 } 485 }
478 486
479 ir.Expression visitUnresolvedSuperSetterSetIfNull( 487 ir.Expression visitUnresolvedSuperSetterSetIfNull(
480 Send node, MethodElement getter, Element element, Node rhs, _) { 488 Send node, GetterElement getter, Element element, Node rhs, _) {
481 return buildUnresolvedSuperPropertyAccessor('${node.selector}', getter) 489 return buildUnresolvedSuperPropertyAccessor('${node.selector}', getter)
482 .buildNullAwareAssignment(visitForValue(rhs), null); 490 .buildNullAwareAssignment(visitForValue(rhs), null);
483 } 491 }
484 492
485 ir.Expression visitUnresolvedSuperUnary( 493 ir.Expression visitUnresolvedSuperUnary(
486 Send node, UnaryOperator operator, Element element, _) { 494 Send node, UnaryOperator operator, Element element, _) {
487 // TODO(asgerf): Should really call 'super.noSuchMethod'. 495 // TODO(asgerf): Should really call 'super.noSuchMethod'.
488 return buildThrowNoSuchMethodError( 496 return buildThrowNoSuchMethodError(
489 kernel.getUnresolvedSuperMethodBuilder(), 497 kernel.getUnresolvedSuperMethodBuilder(),
490 new ir.ThisExpression(), 498 new ir.ThisExpression(),
(...skipping 25 matching lines...) Expand all
516 } 524 }
517 525
518 ir.Expression visitUnresolvedTopLevelGetterSetIfNull( 526 ir.Expression visitUnresolvedTopLevelGetterSetIfNull(
519 Send node, Element element, MethodElement setter, Node rhs, _) { 527 Send node, Element element, MethodElement setter, Node rhs, _) {
520 return buildThrowUnresolvedGetter( 528 return buildThrowUnresolvedGetter(
521 '${node.selector}', kernel.getUnresolvedTopLevelGetterBuilder()); 529 '${node.selector}', kernel.getUnresolvedTopLevelGetterBuilder());
522 } 530 }
523 531
524 ir.Expression visitUnresolvedTopLevelSetterCompound( 532 ir.Expression visitUnresolvedTopLevelSetterCompound(
525 Send node, 533 Send node,
526 MethodElement getter, 534 GetterElement getter,
527 Element element, 535 Element element,
528 AssignmentOperator operator, 536 AssignmentOperator operator,
529 Node rhs, 537 Node rhs,
530 _) { 538 _) {
531 var accessor = new TopLevelStaticAccessor( 539 var accessor = new TopLevelStaticAccessor(
532 this, getter.name, possiblyErroneousFunctionToIr(getter), null); 540 this, getter.name, possiblyErroneousFunctionToIr(getter), null);
533 var result = accessor.buildCompoundAssignment( 541 var result = accessor.buildCompoundAssignment(
534 new ir.Name(operator.selectorName), visitForValue(rhs), 542 new ir.Name(operator.selectorName), visitForValue(rhs),
535 voidContext: isVoidContext); 543 voidContext: isVoidContext);
536 associateCompoundComponents(accessor, node); 544 associateCompoundComponents(accessor, node);
537 return result; 545 return result;
538 } 546 }
539 547
540 ir.Expression visitUnresolvedTopLevelSetterPostfix(Send node, 548 ir.Expression visitUnresolvedTopLevelSetterPostfix(Send node,
541 MethodElement getter, Element element, IncDecOperator operator, _) { 549 GetterElement getter, Element element, IncDecOperator operator, _) {
542 var accessor = new TopLevelStaticAccessor( 550 var accessor = new TopLevelStaticAccessor(
543 this, getter.name, possiblyErroneousFunctionToIr(getter), null); 551 this, getter.name, possiblyErroneousFunctionToIr(getter), null);
544 var result = accessor.buildPostfixIncrement( 552 var result = accessor.buildPostfixIncrement(
545 new ir.Name(operator.selectorName), 553 new ir.Name(operator.selectorName),
546 voidContext: isVoidContext); 554 voidContext: isVoidContext);
547 associateCompoundComponents(accessor, node); 555 associateCompoundComponents(accessor, node);
548 return result; 556 return result;
549 } 557 }
550 558
551 ir.Expression visitUnresolvedTopLevelSetterPrefix(Send node, 559 ir.Expression visitUnresolvedTopLevelSetterPrefix(Send node,
552 MethodElement getter, Element element, IncDecOperator operator, _) { 560 GetterElement getter, Element element, IncDecOperator operator, _) {
553 var accessor = new TopLevelStaticAccessor( 561 var accessor = new TopLevelStaticAccessor(
554 this, getter.name, possiblyErroneousFunctionToIr(getter), null); 562 this, getter.name, possiblyErroneousFunctionToIr(getter), null);
555 var result = accessor.buildPrefixIncrement( 563 var result = accessor.buildPrefixIncrement(
556 new ir.Name(operator.selectorName), 564 new ir.Name(operator.selectorName),
557 voidContext: isVoidContext); 565 voidContext: isVoidContext);
558 associateCompoundComponents(accessor, node); 566 associateCompoundComponents(accessor, node);
559 return result; 567 return result;
560 } 568 }
561 569
562 ir.Expression visitUnresolvedTopLevelSetterSetIfNull( 570 ir.Expression visitUnresolvedTopLevelSetterSetIfNull(
563 Send node, MethodElement getter, Element element, Node rhs, _) { 571 Send node, GetterElement getter, Element element, Node rhs, _) {
564 var accessor = new TopLevelStaticAccessor( 572 var accessor = new TopLevelStaticAccessor(
565 this, getter.name, possiblyErroneousFunctionToIr(getter), null); 573 this, getter.name, possiblyErroneousFunctionToIr(getter), null);
566 return accessor.buildNullAwareAssignment(visitForValue(rhs), null, 574 return accessor.buildNullAwareAssignment(visitForValue(rhs), null,
567 voidContext: isVoidContext); 575 voidContext: isVoidContext);
568 } 576 }
569 577
570 ir.Expression visitUnresolvedSuperGetterIndexSetIfNull(Send node, 578 ir.Expression visitUnresolvedSuperGetterIndexSetIfNull(SendSet node,
571 Element element, MethodElement setter, Node index, Node rhs, _) { 579 Element element, MethodElement setter, Node index, Node rhs, _) {
572 return buildUnresolvedSuperIndexAccessor(index, element) 580 return buildUnresolvedSuperIndexAccessor(index, element)
573 .buildNullAwareAssignment(visitForValue(rhs), null); 581 .buildNullAwareAssignment(visitForValue(rhs), null);
574 } 582 }
575 583
576 ir.Expression visitUnresolvedSuperSetterIndexSetIfNull(Send node, 584 ir.Expression visitUnresolvedSuperSetterIndexSetIfNull(SendSet node,
577 MethodElement getter, Element element, Node index, Node rhs, _) { 585 MethodElement getter, Element element, Node index, Node rhs, _) {
578 return buildUnresolvedSuperIndexAccessor(index, element) 586 return buildUnresolvedSuperIndexAccessor(index, element)
579 .buildNullAwareAssignment(visitForValue(rhs), null); 587 .buildNullAwareAssignment(visitForValue(rhs), null);
580 } 588 }
581 589
582 ir.Expression visitUnresolvedSuperIndexSetIfNull( 590 ir.Expression visitUnresolvedSuperIndexSetIfNull(
583 Send node, Element element, Node index, Node rhs, _) { 591 Send node, Element element, Node index, Node rhs, _) {
584 return buildUnresolvedSuperIndexAccessor(index, element) 592 return buildUnresolvedSuperIndexAccessor(index, element)
585 .buildNullAwareAssignment(visitForValue(rhs), null); 593 .buildNullAwareAssignment(visitForValue(rhs), null);
586 } 594 }
587 595
588 ir.Expression visitUnresolvedSuperSet( 596 ir.Expression visitUnresolvedSuperSet(
589 Send node, Element element, Node rhs, _) { 597 Send node, Element element, Node rhs, _) {
590 return buildThrowUnresolvedSuperSetter( 598 return buildThrowUnresolvedSuperSetter(
591 '${node.selector}', visitForValue(rhs)); 599 '${node.selector}', visitForValue(rhs));
592 } 600 }
593 } 601 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/kernel/types.dart ('k') | pkg/compiler/lib/src/native/resolver.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698