Chromium Code Reviews| Index: frog/leg/elements/elements.dart |
| diff --git a/frog/leg/elements/elements.dart b/frog/leg/elements/elements.dart |
| index 4850bc075138726cbe2bab1ebd806ba234b72312..02b100c26b2b49e2f8f00d9cb1c644c1f26eb390 100644 |
| --- a/frog/leg/elements/elements.dart |
| +++ b/frog/leg/elements/elements.dart |
| @@ -847,17 +847,21 @@ class LabelElement extends Element { |
| bool get isTarget() => isBreakTarget || isContinueTarget; |
| Node parseNode(DiagnosticListener l) => label; |
| + |
| + Token position() => label.token; |
| + String toString() => "${labelName}:"; |
| } |
| // Represents a reference to a statement, either a label or the |
| // default target of a break or continue. |
| class StatementElement extends Element { |
| final Statement statement; |
| + final int nestingLevel; |
| Link<LabelElement> labels = const EmptyLink<LabelElement>(); |
| bool isBreakTarget = false; |
| bool isContinueTarget = false; |
| - StatementElement(this.statement, Element enclosingElement) |
| + StatementElement(this.statement, this.nestingLevel, Element enclosingElement) |
| : super(const SourceString(""), ElementKind.STATEMENT, enclosingElement); |
| bool get isTarget() => isBreakTarget || isContinueTarget; |
| @@ -869,4 +873,10 @@ class StatementElement extends Element { |
| } |
| Node parseNode(DiagnosticListener l) => statement; |
| + |
| + String implicitLabel() => |
| + (statement is SwitchStatement) ? '\$$nestingLevel' : null; |
|
ahe
2012/03/13 10:17:15
I think this belongs in the SSA builder.
Lasse Reichstein Nielsen
2012/03/13 12:09:38
I'll move it somewhere else.
|
| + |
| + Token position() => statement.getBeginToken(); |
| + String toString() => statement.toString(); |
| } |