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

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

Issue 742023002: Handle named and optional arguments in cps-ir. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 1 month 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 9dbaad40aa98b688eb834730d87bc21b3207a19c..879848ebd241e1639a5bb0289babd2ace68f6955 100644
--- a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
+++ b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart
@@ -132,14 +132,17 @@ class CodeGenerator extends tree_ir.Visitor<dynamic, js.Expression> {
// TODO: implement visitConditional
}
- @override
- js.Expression visitConstant(tree_ir.Constant node) {
- ConstantValue constant = node.expression.value;
+ js.Expression buildConstant(ConstantValue constant) {
registry.registerCompileTimeConstant(constant);
return glue.constantReference(constant);
}
@override
+ js.Expression visitConstant(tree_ir.Constant node) {
+ return buildConstant(node.expression.value);
+ }
+
+ @override
js.Expression visitFunctionExpression(tree_ir.FunctionExpression node) {
return giveup(node);
// TODO: implement visitFunctionExpression
@@ -163,8 +166,16 @@ class CodeGenerator extends tree_ir.Visitor<dynamic, js.Expression> {
registry.registerStaticInvocation(element);
+ compileConstant(ParameterElement parameter) {
floitsch 2014/11/20 13:14:43 Add return type.
sigurdm 2014/11/21 09:52:53 Done.
+ return buildConstant(glue.getConstantForVariable(parameter).value);
+ }
+
js.Expression elementAccess = glue.elementAccess(node.target);
- return new js.Call(elementAccess, visitArguments(node.arguments));
+ List<js.Expression> arguments =
+ node.selector.makeArgumentsList2(node.arguments, element,
+ visitExpression,
+ compileConstant);
+ return new js.Call(elementAccess, arguments);
}
@override

Powered by Google App Engine
This is Rietveld 408576698