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

Unified Diff: pkg/compiler/lib/src/js_backend/codegen/codegen.dart

Issue 1088493002: Assignment expressions in tree IR. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 8 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
Index: pkg/compiler/lib/src/js_backend/codegen/codegen.dart
diff --git a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
index da111581ca403443c11e4acec84d2a09b83f3d32..125b1646f3949bd0b78d4849270491588bf75b2a 100644
--- a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
+++ b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
@@ -395,6 +395,13 @@ class CodeGenerator extends tree_ir.StatementVisitor
}
@override
+ js.Expression visitAssign(tree_ir.Assign node) {
+ return new js.Assignment(
+ buildVariableAccess(node.variable),
+ visitExpression(node.value));
+ }
+
+ @override
void visitContinue(tree_ir.Continue node) {
tree_ir.Statement fallthrough = this.fallthrough;
if (node.target.binding == fallthrough) {
@@ -444,17 +451,6 @@ class CodeGenerator extends tree_ir.StatementVisitor
}
@override
- void visitAssign(tree_ir.Assign node) {
- tree_ir.Expression value = node.value;
- js.Expression definition = visitExpression(value);
-
- accumulator.add(new js.ExpressionStatement(new js.Assignment(
- buildVariableAccess(node.variable),
- definition)));
- visitStatement(node.next);
- }
-
- @override
void visitBreak(tree_ir.Break node) {
tree_ir.Statement fallthrough = this.fallthrough;
if (node.target.binding.next == fallthrough) {
@@ -560,14 +556,12 @@ class CodeGenerator extends tree_ir.StatementVisitor
}
@override
- void visitSetField(tree_ir.SetField node) {
+ js.Assignment visitSetField(tree_ir.SetField node) {
js.PropertyAccess field =
new js.PropertyAccess.field(
visitExpression(node.object),
glue.instanceFieldPropertyName(node.field));
- js.Assignment asn = new js.Assignment(field, visitExpression(node.value));
- accumulator.add(new js.ExpressionStatement(asn));
- visitStatement(node.next);
+ return new js.Assignment(field, visitExpression(node.value));
}
js.Expression buildStaticHelperInvocation(FunctionElement helper,
@@ -626,6 +620,11 @@ class CodeGenerator extends tree_ir.StatementVisitor
return errorUnsupportedNode(node);
}
+ @override
+ visitVariableDeclaration(tree_ir.VariableDeclaration node) {
+ return errorUnsupportedNode(node);
+ }
+
errorUnsupportedNode(tree_ir.DartSpecificNode node) {
throw "Unsupported node in JS backend: $node";
}

Powered by Google App Engine
This is Rietveld 408576698