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

Side by Side Diff: pkg/compiler/lib/src/ssa/kernel_ast_adapter.dart

Issue 3009463002: Handle labelled continue statements (Closed)
Patch Set: Updated cf. comments Created 3 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 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
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
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 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/ssa/jump_handler.dart ('k') | tests/compiler/dart2js/jumps/data/nested_loops.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698