Index: pkg/dev_compiler/lib/src/compiler/code_generator.dart |
diff --git a/pkg/dev_compiler/lib/src/compiler/code_generator.dart b/pkg/dev_compiler/lib/src/compiler/code_generator.dart |
index 9cbc9ec0944963f19f5db971f50c5027fa1cbfb1..c673e0f91b2c825747328d52a2a8208d6e1939e8 100644 |
--- a/pkg/dev_compiler/lib/src/compiler/code_generator.dart |
+++ b/pkg/dev_compiler/lib/src/compiler/code_generator.dart |
@@ -625,7 +625,7 @@ class CodeGenerator extends GeneralizingAstVisitor |
if (node.type == null) { |
// TODO(jmesserly): if the type fails to resolve, should we generate code |
// that throws instead? |
- assert(options.unsafeForceCompile); |
+ assert(options.unsafeForceCompile || options.replCompile); |
return js.call('dart.dynamic'); |
} |
return _emitType(node.type); |
@@ -3065,8 +3065,12 @@ class CodeGenerator extends GeneralizingAstVisitor |
[l, l, name, name, _visit(rhs)]) |
]); |
} |
- return js.call('dart.dput(#, #, #)', |
- [_visit(target), _emitMemberName(id.name), _visit(rhs)]); |
+ return js.call('dart.#(#, #, #)', [ |
+ _emitDynamicOperationName('dput'), |
+ _visit(target), |
+ _emitMemberName(id.name), |
+ _visit(rhs) |
+ ]); |
} |
var accessor = id.staticElement; |
@@ -3351,10 +3355,16 @@ class CodeGenerator extends GeneralizingAstVisitor |
return new JS.Call(jsTarget, args); |
} |
if (typeArgs != null) { |
- return js.call('dart.dgsend(#, #, #, #)', |
- [jsTarget, new JS.ArrayInitializer(typeArgs), memberName, args]); |
+ return js.call('dart.#(#, #, #, #)', [ |
+ _emitDynamicOperationName('dgsend'), |
+ jsTarget, |
+ new JS.ArrayInitializer(typeArgs), |
+ memberName, |
+ args |
+ ]); |
} else { |
- return js.call('dart.dsend(#, #, #)', [jsTarget, memberName, args]); |
+ return js.call('dart.#(#, #, #)', |
+ [_emitDynamicOperationName('dsend'), jsTarget, memberName, args]); |
} |
} |
if (_isObjectMemberCall(target, name)) { |
@@ -4635,6 +4645,9 @@ class CodeGenerator extends GeneralizingAstVisitor |
return _emitFunctionTypeArguments(type, instantiated); |
} |
+ JS.LiteralString _emitDynamicOperationName(String name) => |
+ js.string(options.replCompile ? '${name}Repl' : name); |
+ |
JS.Expression _emitAccessInternal(Expression target, Element member, |
String memberName, List<JS.Expression> typeArgs) { |
bool isStatic = member is ClassMemberElement && member.isStatic; |
@@ -4649,7 +4662,8 @@ class CodeGenerator extends GeneralizingAstVisitor |
[l, l, name, l, name]) |
]); |
} |
- return js.call('dart.dload(#, #)', [_visit(target), name]); |
+ return js.call('dart.#(#, #)', |
+ [_emitDynamicOperationName('dload'), _visit(target), name]); |
} |
var jsTarget = _visit(target); |