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

Unified Diff: frog/leg/elements/elements.dart

Issue 9632018: Switch-implementation. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Add missing handling of default in unparser. Created 8 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | frog/leg/lib/js_helper.dart » ('j') | frog/leg/lib/js_helper.dart » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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();
}
« no previous file with comments | « no previous file | frog/leg/lib/js_helper.dart » ('j') | frog/leg/lib/js_helper.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698