Index: dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart |
diff --git a/dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart b/dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart |
index 7627c616995c244e97ff9de83a03247cfd232386..09093d0b68f3c4b9c08068c85f8ff51683ba536a 100644 |
--- a/dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart |
+++ b/dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart |
@@ -800,6 +800,11 @@ class JavaScriptBackend extends Backend { |
enqueueClass(enqueuer, jsPlainJavaScriptObjectClass, elements); |
} |
} |
+ if (cls == compiler.closureClass) { |
+ enqueue(enqueuer, |
+ compiler.findHelper('closureFromTearOff'), |
+ elements); |
+ } |
ClassElement result = null; |
if (cls == compiler.stringClass || cls == jsStringClass) { |
addInterceptors(jsStringClass, enqueuer, elements); |
@@ -978,6 +983,7 @@ class JavaScriptBackend extends Backend { |
} |
void registerIsCheck(DartType type, Enqueuer world, TreeElements elements) { |
+ enqueueInResolution(getThrowRuntimeError(), elements); |
type = type.unalias(compiler); |
enqueueClass(world, compiler.boolClass, elements); |
bool inCheckedMode = compiler.enableTypeAssertions; |
@@ -1035,6 +1041,7 @@ class JavaScriptBackend extends Backend { |
} |
void registerAsCheck(DartType type, Enqueuer world, TreeElements elements) { |
+ enqueueInResolution(getThrowRuntimeError(), elements); |
type = type.unalias(compiler); |
if (!world.isResolutionQueue) { |
// All helpers are added to resolution queue in enqueueHelpers. These |
@@ -1712,6 +1719,8 @@ class JavaScriptBackend extends Backend { |
* system. |
*/ |
bool isAccessibleByReflection(Element element) { |
+ // TODO(ahe): This isn't sufficient: simply importing dart:mirrors |
+ // causes hasInsufficientMirrorsUsed to become true. |
if (hasInsufficientMirrorsUsed) return true; |
return isNeededForReflection(element); |
} |