blob: f6080e28b5573adac11f16fd241f421394221ba9 [file] [log] [blame]
// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
library elements.jumps;
import 'entities_migrated.dart' show Entity, Local;
/// The label entity defined by a labeled statement.
abstract class LabelDefinition extends Entity {
String get labelName;
JumpTarget get target;
bool get isTarget => isBreakTarget || isContinueTarget;
bool get isBreakTarget;
bool get isContinueTarget;
}
/// A jump target is the reference point of a statement or switch-case,
/// either by label or as the default target of a break or continue.
abstract class JumpTarget extends Local {
@override
String get name => 'target';
bool get isTarget => isBreakTarget || isContinueTarget;
int get nestingLevel;
List<LabelDefinition> get labels;
bool get isBreakTarget;
bool get isContinueTarget;
bool get isSwitch;
bool get isSwitchCase;
LabelDefinition addLabel(String labelName,
{bool isBreakTarget = false, bool isContinueTarget = false});
}