Index: sdk/lib/_internal/compiler/implementation/js_backend/backend.dart |
diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart b/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart |
index 3bc06c91da6a14d4f45bf466365ad3a304afe449..498b66d97127811970eb48fb195516fc33f57ecc 100644 |
--- a/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart |
+++ b/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart |
@@ -995,11 +995,13 @@ class JavaScriptBackend extends Backend { |
} |
void registerIsCheck(DartType type, Enqueuer world) { |
- if (!type.isRaw) { |
+ bool isTypeVariable = type.kind == TypeKind.TYPE_VARIABLE; |
+ if (!type.isRaw || isTypeVariable) { |
enqueueInResolution(getSetRuntimeTypeInfo()); |
enqueueInResolution(getGetRuntimeTypeInfo()); |
enqueueInResolution(getGetRuntimeTypeArgument()); |
enqueueInResolution(getCheckArguments()); |
+ if (isTypeVariable) enqueueInResolution(getGetObjectIsSubtype()); |
} |
// [registerIsCheck] is also called for checked mode checks, so we |
// need to register checked mode helpers. |
@@ -1444,6 +1446,10 @@ class JavaScriptBackend extends Backend { |
return compiler.findHelper(const SourceString('checkArguments')); |
} |
+ Element getGetObjectIsSubtype() { |
+ return compiler.findHelper(const SourceString('objectIsSubtype')); |
+ } |
+ |
Element getThrowNoSuchMethod() { |
return compiler.findHelper(const SourceString('throwNoSuchMethod')); |
} |