diff --git a/sdk/lib/_internal/js_runtime/lib/rti.dart b/sdk/lib/_internal/js_runtime/lib/rti.dart index 6ed7d7cf30175..eac34739293d8 100644 --- a/sdk/lib/_internal/js_runtime/lib/rti.dart +++ b/sdk/lib/_internal/js_runtime/lib/rti.dart @@ -1877,14 +1877,6 @@ bool _isSubtype(universe, Rti s, sEnv, Rti t, tEnv) { if (isNullType(s)) return true; - if (Rti._isFunctionType(t)) { - return _isFunctionSubtype(universe, s, sEnv, t, tEnv); - } - - if (Rti._isFunctionType(s)) { - return isFunctionType(t); - } - if (isFutureOrType(t)) { // [t] is FutureOr. Rti tTypeArgument = Rti._getFutureOrArgument(t); @@ -1904,6 +1896,14 @@ bool _isSubtype(universe, Rti s, sEnv, Rti t, tEnv) { } } + if (Rti._isFunctionType(t)) { + return _isFunctionSubtype(universe, s, sEnv, t, tEnv); + } + + if (Rti._isFunctionType(s)) { + return isFunctionType(t); + } + assert(Rti._getKind(t) == Rti.kindInterface); String tName = Rti._getInterfaceName(t); var tArgs = Rti._getInterfaceTypeArguments(t);