Chromium Code Reviews| 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); |
|
Jennifer Messerly
2016/10/18 18:46:01
nice idea splitting this out into its own flag :)
|
| 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); |