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 9a05a589e8227ad157530bf829e44da0241278ef..6e02f1d8a7d27bca93d0edd1dfd3b36720610d22 100644 |
--- a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart |
+++ b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart |
@@ -609,7 +609,7 @@ class CodeGenerator extends tree_ir.StatementVisitor |
js.Expression argumentNames = new js.ArrayInitializer( |
node.selector.namedArguments.map(js.string).toList(growable: false)); |
return buildStaticHelperInvocation(glue.createInvocationMirrorMethod, |
- [name, internalName, kind, arguments, argumentNames]); |
+ <js.Expression>[name, internalName, kind, arguments, argumentNames]); |
} |
@override |
@@ -695,6 +695,21 @@ class CodeGenerator extends tree_ir.StatementVisitor |
return glue.generateTypeRepresentation(node.dartType, arguments); |
} |
+ js.Node handleForeignCode(tree_ir.ForeignCode node) { |
+ registry.registerStaticUse(node.dependency); |
+ return node.codeTemplate.instantiate(visitExpressionList(node.arguments)); |
+ } |
+ |
+ @override |
+ js.Expression visitForeignExpression(tree_ir.ForeignExpression node) { |
+ return handleForeignCode(node); |
+ } |
+ |
+ @override |
+ visitForeignStatement(tree_ir.ForeignStatement node) { |
+ return handleForeignCode(node); |
+ } |
+ |
visitFunctionExpression(tree_ir.FunctionExpression node) { |
// FunctionExpressions are currently unused. |
// We might need them if we want to emit raw JS nested functions. |