| Index: sdk/lib/_internal/compiler/js_lib/js_rti.dart
|
| diff --git a/sdk/lib/_internal/compiler/js_lib/js_rti.dart b/sdk/lib/_internal/compiler/js_lib/js_rti.dart
|
| index 2d462802a897e6b88d7c5839c08ddff4078520aa..ec6ae53b14aa8f5210d2eb1fd1c34736bd4a0266 100644
|
| --- a/sdk/lib/_internal/compiler/js_lib/js_rti.dart
|
| +++ b/sdk/lib/_internal/compiler/js_lib/js_rti.dart
|
| @@ -451,20 +451,15 @@ bool isSubtype(var s, var t) {
|
| // constructed from the type of [t].
|
| var typeOfS = isJsArray(s) ? getIndex(s, 0) : s;
|
| var typeOfT = isJsArray(t) ? getIndex(t, 0) : t;
|
| +
|
| // Check for a subtyping flag.
|
| - var name = runtimeTypeToString(typeOfT);
|
| // Get the necessary substitution of the type arguments, if there is one.
|
| var substitution;
|
| if (isNotIdentical(typeOfT, typeOfS)) {
|
| - // TODO(floitsch): change this to:
|
| - // if (!JS_BUILTIN('depends:none;effects:none;returns:bool',
|
| - // JsBuiltin.implementsType,
|
| - // typeOfSPrototype, name)) {
|
| - // return false;
|
| - // }
|
| - var test = '${JS_OPERATOR_IS_PREFIX()}${name}';
|
| + if (!builtinIsSubtype(typeOfS, runtimeTypeToString(typeOfT))) {
|
| + return false;
|
| + }
|
| var typeOfSPrototype = JS('', '#.prototype', typeOfS);
|
| - if (hasNoField(typeOfSPrototype, test)) return false;
|
| var field = '${JS_OPERATOR_AS_PREFIX()}${runtimeTypeToString(typeOfT)}';
|
| substitution = getField(typeOfSPrototype, field);
|
| }
|
|
|