| OLD | NEW |
| 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 file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import 'package:kernel/ast.dart' as ir; | 5 import 'package:kernel/ast.dart' as ir; |
| 6 | 6 |
| 7 import '../closure.dart'; | 7 import '../closure.dart'; |
| 8 import '../common.dart'; | 8 import '../common.dart'; |
| 9 import '../compiler.dart'; | 9 import '../compiler.dart'; |
| 10 import '../constants/expressions.dart'; | 10 import '../constants/expressions.dart'; |
| (...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 550 | 550 |
| 551 if (makeContinueLabel) { | 551 if (makeContinueLabel) { |
| 552 labels.add( | 552 labels.add( |
| 553 new LabelDefinitionX(null, 'L${index++}', this)..setContinueTarget()); | 553 new LabelDefinitionX(null, 'L${index++}', this)..setContinueTarget()); |
| 554 isContinueTarget = true; | 554 isContinueTarget = true; |
| 555 } | 555 } |
| 556 } | 556 } |
| 557 | 557 |
| 558 @override | 558 @override |
| 559 LabelDefinition<ast.Node> addLabel(ast.Label label, String labelName, | 559 LabelDefinition<ast.Node> addLabel(ast.Label label, String labelName, |
| 560 {bool isBreakTarget: false}) { | 560 {bool isBreakTarget: false, bool isContinueTarget: false}) { |
| 561 LabelDefinitionX result = new LabelDefinitionX(label, labelName, this); | 561 LabelDefinitionX result = new LabelDefinitionX(label, labelName, this); |
| 562 labels.add(result); | 562 labels.add(result); |
| 563 if (isBreakTarget) { | 563 if (isBreakTarget) { |
| 564 result.setBreakTarget(); | 564 result.setBreakTarget(); |
| 565 } | 565 } |
| 566 if (isContinueTarget) { |
| 567 result.setContinueTarget(); |
| 568 } |
| 566 return result; | 569 return result; |
| 567 } | 570 } |
| 568 | 571 |
| 569 @override | 572 @override |
| 570 ExecutableElement get executableContext => null; | 573 ExecutableElement get executableContext => null; |
| 571 | 574 |
| 572 @override | 575 @override |
| 573 MemberElement get memberContext => null; | 576 MemberElement get memberContext => null; |
| 574 | 577 |
| 575 @override | 578 @override |
| 576 bool get isSwitch => targetStatement is ir.SwitchStatement; | 579 bool get isSwitch => targetStatement is ir.SwitchStatement; |
| 577 | 580 |
| 581 bool get isSwitchCase => targetStatement is ir.SwitchCase; |
| 582 |
| 578 @override | 583 @override |
| 579 bool get isTarget => isBreakTarget || isContinueTarget; | 584 bool get isTarget => isBreakTarget || isContinueTarget; |
| 580 | 585 |
| 581 @override | 586 @override |
| 582 List<LabelDefinition<ast.Node>> labels; | 587 List<LabelDefinition<ast.Node>> labels; |
| 583 | 588 |
| 584 @override | 589 @override |
| 585 String get name => 'target'; | 590 String get name => 'target'; |
| 586 | 591 |
| 587 @override | 592 @override |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 728 TypeMask selectorTypeOf(Selector selector, TypeMask mask) { | 733 TypeMask selectorTypeOf(Selector selector, TypeMask mask) { |
| 729 return TypeMaskFactory.inferredTypeForSelector( | 734 return TypeMaskFactory.inferredTypeForSelector( |
| 730 selector, mask, _globalInferenceResults); | 735 selector, mask, _globalInferenceResults); |
| 731 } | 736 } |
| 732 | 737 |
| 733 TypeMask typeFromNativeBehavior( | 738 TypeMask typeFromNativeBehavior( |
| 734 native.NativeBehavior nativeBehavior, ClosedWorld closedWorld) { | 739 native.NativeBehavior nativeBehavior, ClosedWorld closedWorld) { |
| 735 return TypeMaskFactory.fromNativeBehavior(nativeBehavior, closedWorld); | 740 return TypeMaskFactory.fromNativeBehavior(nativeBehavior, closedWorld); |
| 736 } | 741 } |
| 737 } | 742 } |
| OLD | NEW |