mirror of
https://github.com/dart-lang/sdk
synced 2024-10-06 15:39:54 +00:00
Fix for covariant
We've been silently failing to rebuild the SDK since covariant was added. Looking at making SDK build break fail the presubmit! TBR=leafp@google.com,jacobr@google.com Review-Url: https://codereview.chromium.org/2648863002 .
This commit is contained in:
parent
c40ec27266
commit
a7f7a311c0
|
@ -1510,12 +1510,12 @@ define([], function() {
|
|||
dart.isFunctionType = function(type) {
|
||||
return type instanceof dart.AbstractFunctionType || type === core.Function;
|
||||
};
|
||||
dart.isLazyJSSubtype = function(t1, t2, covariant) {
|
||||
dart.isLazyJSSubtype = function(t1, t2, isCovariant) {
|
||||
if (dart.equals(t1, t2)) return true;
|
||||
if (t1[_jsTypeCallback] == null || t2[_jsTypeCallback] == null) return true;
|
||||
return dart.isClassSubType(t1[_rawJSType], t2[_rawJSType], covariant);
|
||||
return dart.isClassSubType(t1[_rawJSType], t2[_rawJSType], isCovariant);
|
||||
};
|
||||
dart.isFunctionSubtype = function(ft1, ft2, covariant) {
|
||||
dart.isFunctionSubtype = function(ft1, ft2, isCovariant) {
|
||||
if (ft2 === core.Function) {
|
||||
return true;
|
||||
}
|
||||
|
@ -1527,26 +1527,26 @@ define([], function() {
|
|||
let args1 = ft1.args;
|
||||
let args2 = ft2.args;
|
||||
if (args1.length > args2.length) {
|
||||
return covariant ? false : null;
|
||||
return isCovariant ? false : null;
|
||||
}
|
||||
for (let i = 0; i < args1.length; ++i) {
|
||||
if (!dart._isSubtype(args2[i], args1[i], !covariant)) {
|
||||
if (!dart._isSubtype(args2[i], args1[i], !isCovariant)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
let optionals1 = ft1.optionals;
|
||||
let optionals2 = ft2.optionals;
|
||||
if (args1.length + optionals1.length < args2.length + optionals2.length) {
|
||||
return covariant ? false : null;
|
||||
return isCovariant ? false : null;
|
||||
}
|
||||
let j = 0;
|
||||
for (let i = args1.length; i < args2.length; ++i, ++j) {
|
||||
if (!dart._isSubtype(args2[i], optionals1[j], !covariant)) {
|
||||
if (!dart._isSubtype(args2[i], optionals1[j], !isCovariant)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
for (let i = 0; i < optionals2.length; ++i, ++j) {
|
||||
if (!dart._isSubtype(optionals2[i], optionals1[j], !covariant)) {
|
||||
if (!dart._isSubtype(optionals2[i], optionals1[j], !isCovariant)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -1558,15 +1558,15 @@ define([], function() {
|
|||
let n1 = named1[name];
|
||||
let n2 = named2[name];
|
||||
if (n1 === void 0) {
|
||||
return covariant ? false : null;
|
||||
return isCovariant ? false : null;
|
||||
}
|
||||
if (!dart._isSubtype(n2, n1, !covariant)) {
|
||||
if (!dart._isSubtype(n2, n1, !isCovariant)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
if (ret2 === dart.void) return true;
|
||||
if (ret1 === dart.void) return ret2 === dart.dynamic;
|
||||
if (!dart._isSubtype(ret1, ret2, covariant)) return null;
|
||||
if (!dart._isSubtype(ret1, ret2, isCovariant)) return null;
|
||||
return true;
|
||||
};
|
||||
dart._subtypeMemo = function(f) {
|
||||
|
@ -1591,7 +1591,7 @@ define([], function() {
|
|||
dart._isTop = function(type) {
|
||||
return type == core.Object || type == dart.dynamic;
|
||||
};
|
||||
dart._isSubtype = function(t1, t2, covariant) {
|
||||
dart._isSubtype = function(t1, t2, isCovariant) {
|
||||
if (t1 === t2) return true;
|
||||
if (dart._isTop(t2) || dart._isBottom(t1)) {
|
||||
return true;
|
||||
|
@ -1602,20 +1602,20 @@ define([], function() {
|
|||
return false;
|
||||
}
|
||||
if (!(t1 instanceof dart.AbstractFunctionType) && !(t2 instanceof dart.AbstractFunctionType)) {
|
||||
let result = dart.isClassSubType(t1, t2, covariant);
|
||||
let result = dart.isClassSubType(t1, t2, isCovariant);
|
||||
if (result === true || result === null) return result;
|
||||
}
|
||||
t1 = dart.getImplicitFunctionType(t1);
|
||||
if (!t1) return false;
|
||||
if (dart.isFunctionType(t1) && dart.isFunctionType(t2)) {
|
||||
return dart.isFunctionSubtype(t1, t2, covariant);
|
||||
return dart.isFunctionSubtype(t1, t2, isCovariant);
|
||||
}
|
||||
if (t1 instanceof dart.LazyJSType && t2 instanceof dart.LazyJSType) {
|
||||
return dart.isLazyJSSubtype(t1, t2, covariant);
|
||||
return dart.isLazyJSSubtype(t1, t2, isCovariant);
|
||||
}
|
||||
return false;
|
||||
};
|
||||
dart.isClassSubType = function(t1, t2, covariant) {
|
||||
dart.isClassSubType = function(t1, t2, isCovariant) {
|
||||
if (t1 == t2) return true;
|
||||
if (t1 == core.Object) return false;
|
||||
if (t1 == null) return t2 == core.Object || t2 == dart.dynamic;
|
||||
|
@ -1633,7 +1633,7 @@ define([], function() {
|
|||
}
|
||||
dart.assert(length == typeArguments2.length);
|
||||
for (let i = 0; i < length; ++i) {
|
||||
let result = dart._isSubtype(typeArguments1[i], typeArguments2[i], covariant);
|
||||
let result = dart._isSubtype(typeArguments1[i], typeArguments2[i], isCovariant);
|
||||
if (!result) {
|
||||
return result;
|
||||
}
|
||||
|
@ -1642,7 +1642,7 @@ define([], function() {
|
|||
}
|
||||
let indefinite = false;
|
||||
function definitive(t1, t2) {
|
||||
let result = dart.isClassSubType(t1, t2, covariant);
|
||||
let result = dart.isClassSubType(t1, t2, isCovariant);
|
||||
if (result == null) {
|
||||
indefinite = true;
|
||||
return false;
|
||||
|
|
|
@ -1510,12 +1510,12 @@
|
|||
dart.isFunctionType = function(type) {
|
||||
return type instanceof dart.AbstractFunctionType || type === core.Function;
|
||||
};
|
||||
dart.isLazyJSSubtype = function(t1, t2, covariant) {
|
||||
dart.isLazyJSSubtype = function(t1, t2, isCovariant) {
|
||||
if (dart.equals(t1, t2)) return true;
|
||||
if (t1[_jsTypeCallback] == null || t2[_jsTypeCallback] == null) return true;
|
||||
return dart.isClassSubType(t1[_rawJSType], t2[_rawJSType], covariant);
|
||||
return dart.isClassSubType(t1[_rawJSType], t2[_rawJSType], isCovariant);
|
||||
};
|
||||
dart.isFunctionSubtype = function(ft1, ft2, covariant) {
|
||||
dart.isFunctionSubtype = function(ft1, ft2, isCovariant) {
|
||||
if (ft2 === core.Function) {
|
||||
return true;
|
||||
}
|
||||
|
@ -1527,26 +1527,26 @@
|
|||
let args1 = ft1.args;
|
||||
let args2 = ft2.args;
|
||||
if (args1.length > args2.length) {
|
||||
return covariant ? false : null;
|
||||
return isCovariant ? false : null;
|
||||
}
|
||||
for (let i = 0; i < args1.length; ++i) {
|
||||
if (!dart._isSubtype(args2[i], args1[i], !covariant)) {
|
||||
if (!dart._isSubtype(args2[i], args1[i], !isCovariant)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
let optionals1 = ft1.optionals;
|
||||
let optionals2 = ft2.optionals;
|
||||
if (args1.length + optionals1.length < args2.length + optionals2.length) {
|
||||
return covariant ? false : null;
|
||||
return isCovariant ? false : null;
|
||||
}
|
||||
let j = 0;
|
||||
for (let i = args1.length; i < args2.length; ++i, ++j) {
|
||||
if (!dart._isSubtype(args2[i], optionals1[j], !covariant)) {
|
||||
if (!dart._isSubtype(args2[i], optionals1[j], !isCovariant)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
for (let i = 0; i < optionals2.length; ++i, ++j) {
|
||||
if (!dart._isSubtype(optionals2[i], optionals1[j], !covariant)) {
|
||||
if (!dart._isSubtype(optionals2[i], optionals1[j], !isCovariant)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -1558,15 +1558,15 @@
|
|||
let n1 = named1[name];
|
||||
let n2 = named2[name];
|
||||
if (n1 === void 0) {
|
||||
return covariant ? false : null;
|
||||
return isCovariant ? false : null;
|
||||
}
|
||||
if (!dart._isSubtype(n2, n1, !covariant)) {
|
||||
if (!dart._isSubtype(n2, n1, !isCovariant)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
if (ret2 === dart.void) return true;
|
||||
if (ret1 === dart.void) return ret2 === dart.dynamic;
|
||||
if (!dart._isSubtype(ret1, ret2, covariant)) return null;
|
||||
if (!dart._isSubtype(ret1, ret2, isCovariant)) return null;
|
||||
return true;
|
||||
};
|
||||
dart._subtypeMemo = function(f) {
|
||||
|
@ -1591,7 +1591,7 @@
|
|||
dart._isTop = function(type) {
|
||||
return type == core.Object || type == dart.dynamic;
|
||||
};
|
||||
dart._isSubtype = function(t1, t2, covariant) {
|
||||
dart._isSubtype = function(t1, t2, isCovariant) {
|
||||
if (t1 === t2) return true;
|
||||
if (dart._isTop(t2) || dart._isBottom(t1)) {
|
||||
return true;
|
||||
|
@ -1602,20 +1602,20 @@
|
|||
return false;
|
||||
}
|
||||
if (!(t1 instanceof dart.AbstractFunctionType) && !(t2 instanceof dart.AbstractFunctionType)) {
|
||||
let result = dart.isClassSubType(t1, t2, covariant);
|
||||
let result = dart.isClassSubType(t1, t2, isCovariant);
|
||||
if (result === true || result === null) return result;
|
||||
}
|
||||
t1 = dart.getImplicitFunctionType(t1);
|
||||
if (!t1) return false;
|
||||
if (dart.isFunctionType(t1) && dart.isFunctionType(t2)) {
|
||||
return dart.isFunctionSubtype(t1, t2, covariant);
|
||||
return dart.isFunctionSubtype(t1, t2, isCovariant);
|
||||
}
|
||||
if (t1 instanceof dart.LazyJSType && t2 instanceof dart.LazyJSType) {
|
||||
return dart.isLazyJSSubtype(t1, t2, covariant);
|
||||
return dart.isLazyJSSubtype(t1, t2, isCovariant);
|
||||
}
|
||||
return false;
|
||||
};
|
||||
dart.isClassSubType = function(t1, t2, covariant) {
|
||||
dart.isClassSubType = function(t1, t2, isCovariant) {
|
||||
if (t1 == t2) return true;
|
||||
if (t1 == core.Object) return false;
|
||||
if (t1 == null) return t2 == core.Object || t2 == dart.dynamic;
|
||||
|
@ -1633,7 +1633,7 @@
|
|||
}
|
||||
dart.assert(length == typeArguments2.length);
|
||||
for (let i = 0; i < length; ++i) {
|
||||
let result = dart._isSubtype(typeArguments1[i], typeArguments2[i], covariant);
|
||||
let result = dart._isSubtype(typeArguments1[i], typeArguments2[i], isCovariant);
|
||||
if (!result) {
|
||||
return result;
|
||||
}
|
||||
|
@ -1642,7 +1642,7 @@
|
|||
}
|
||||
let indefinite = false;
|
||||
function definitive(t1, t2) {
|
||||
let result = dart.isClassSubType(t1, t2, covariant);
|
||||
let result = dart.isClassSubType(t1, t2, isCovariant);
|
||||
if (result == null) {
|
||||
indefinite = true;
|
||||
return false;
|
||||
|
|
|
@ -1508,12 +1508,12 @@ dart.getImplicitFunctionType = function(type) {
|
|||
dart.isFunctionType = function(type) {
|
||||
return type instanceof dart.AbstractFunctionType || type === core.Function;
|
||||
};
|
||||
dart.isLazyJSSubtype = function(t1, t2, covariant) {
|
||||
dart.isLazyJSSubtype = function(t1, t2, isCovariant) {
|
||||
if (dart.equals(t1, t2)) return true;
|
||||
if (t1[_jsTypeCallback] == null || t2[_jsTypeCallback] == null) return true;
|
||||
return dart.isClassSubType(t1[_rawJSType], t2[_rawJSType], covariant);
|
||||
return dart.isClassSubType(t1[_rawJSType], t2[_rawJSType], isCovariant);
|
||||
};
|
||||
dart.isFunctionSubtype = function(ft1, ft2, covariant) {
|
||||
dart.isFunctionSubtype = function(ft1, ft2, isCovariant) {
|
||||
if (ft2 === core.Function) {
|
||||
return true;
|
||||
}
|
||||
|
@ -1525,26 +1525,26 @@ dart.isFunctionSubtype = function(ft1, ft2, covariant) {
|
|||
let args1 = ft1.args;
|
||||
let args2 = ft2.args;
|
||||
if (args1.length > args2.length) {
|
||||
return covariant ? false : null;
|
||||
return isCovariant ? false : null;
|
||||
}
|
||||
for (let i = 0; i < args1.length; ++i) {
|
||||
if (!dart._isSubtype(args2[i], args1[i], !covariant)) {
|
||||
if (!dart._isSubtype(args2[i], args1[i], !isCovariant)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
let optionals1 = ft1.optionals;
|
||||
let optionals2 = ft2.optionals;
|
||||
if (args1.length + optionals1.length < args2.length + optionals2.length) {
|
||||
return covariant ? false : null;
|
||||
return isCovariant ? false : null;
|
||||
}
|
||||
let j = 0;
|
||||
for (let i = args1.length; i < args2.length; ++i, ++j) {
|
||||
if (!dart._isSubtype(args2[i], optionals1[j], !covariant)) {
|
||||
if (!dart._isSubtype(args2[i], optionals1[j], !isCovariant)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
for (let i = 0; i < optionals2.length; ++i, ++j) {
|
||||
if (!dart._isSubtype(optionals2[i], optionals1[j], !covariant)) {
|
||||
if (!dart._isSubtype(optionals2[i], optionals1[j], !isCovariant)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -1556,15 +1556,15 @@ dart.isFunctionSubtype = function(ft1, ft2, covariant) {
|
|||
let n1 = named1[name];
|
||||
let n2 = named2[name];
|
||||
if (n1 === void 0) {
|
||||
return covariant ? false : null;
|
||||
return isCovariant ? false : null;
|
||||
}
|
||||
if (!dart._isSubtype(n2, n1, !covariant)) {
|
||||
if (!dart._isSubtype(n2, n1, !isCovariant)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
if (ret2 === dart.void) return true;
|
||||
if (ret1 === dart.void) return ret2 === dart.dynamic;
|
||||
if (!dart._isSubtype(ret1, ret2, covariant)) return null;
|
||||
if (!dart._isSubtype(ret1, ret2, isCovariant)) return null;
|
||||
return true;
|
||||
};
|
||||
dart._subtypeMemo = function(f) {
|
||||
|
@ -1589,7 +1589,7 @@ dart._isBottom = function(type) {
|
|||
dart._isTop = function(type) {
|
||||
return type == core.Object || type == dart.dynamic;
|
||||
};
|
||||
dart._isSubtype = function(t1, t2, covariant) {
|
||||
dart._isSubtype = function(t1, t2, isCovariant) {
|
||||
if (t1 === t2) return true;
|
||||
if (dart._isTop(t2) || dart._isBottom(t1)) {
|
||||
return true;
|
||||
|
@ -1600,20 +1600,20 @@ dart._isSubtype = function(t1, t2, covariant) {
|
|||
return false;
|
||||
}
|
||||
if (!(t1 instanceof dart.AbstractFunctionType) && !(t2 instanceof dart.AbstractFunctionType)) {
|
||||
let result = dart.isClassSubType(t1, t2, covariant);
|
||||
let result = dart.isClassSubType(t1, t2, isCovariant);
|
||||
if (result === true || result === null) return result;
|
||||
}
|
||||
t1 = dart.getImplicitFunctionType(t1);
|
||||
if (!t1) return false;
|
||||
if (dart.isFunctionType(t1) && dart.isFunctionType(t2)) {
|
||||
return dart.isFunctionSubtype(t1, t2, covariant);
|
||||
return dart.isFunctionSubtype(t1, t2, isCovariant);
|
||||
}
|
||||
if (t1 instanceof dart.LazyJSType && t2 instanceof dart.LazyJSType) {
|
||||
return dart.isLazyJSSubtype(t1, t2, covariant);
|
||||
return dart.isLazyJSSubtype(t1, t2, isCovariant);
|
||||
}
|
||||
return false;
|
||||
};
|
||||
dart.isClassSubType = function(t1, t2, covariant) {
|
||||
dart.isClassSubType = function(t1, t2, isCovariant) {
|
||||
if (t1 == t2) return true;
|
||||
if (t1 == core.Object) return false;
|
||||
if (t1 == null) return t2 == core.Object || t2 == dart.dynamic;
|
||||
|
@ -1631,7 +1631,7 @@ dart.isClassSubType = function(t1, t2, covariant) {
|
|||
}
|
||||
dart.assert(length == typeArguments2.length);
|
||||
for (let i = 0; i < length; ++i) {
|
||||
let result = dart._isSubtype(typeArguments1[i], typeArguments2[i], covariant);
|
||||
let result = dart._isSubtype(typeArguments1[i], typeArguments2[i], isCovariant);
|
||||
if (!result) {
|
||||
return result;
|
||||
}
|
||||
|
@ -1640,7 +1640,7 @@ dart.isClassSubType = function(t1, t2, covariant) {
|
|||
}
|
||||
let indefinite = false;
|
||||
function definitive(t1, t2) {
|
||||
let result = dart.isClassSubType(t1, t2, covariant);
|
||||
let result = dart.isClassSubType(t1, t2, isCovariant);
|
||||
if (result == null) {
|
||||
indefinite = true;
|
||||
return false;
|
||||
|
|
|
@ -1511,12 +1511,12 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
dart.isFunctionType = function(type) {
|
||||
return type instanceof dart.AbstractFunctionType || type === core.Function;
|
||||
};
|
||||
dart.isLazyJSSubtype = function(t1, t2, covariant) {
|
||||
dart.isLazyJSSubtype = function(t1, t2, isCovariant) {
|
||||
if (dart.equals(t1, t2)) return true;
|
||||
if (t1[_jsTypeCallback] == null || t2[_jsTypeCallback] == null) return true;
|
||||
return dart.isClassSubType(t1[_rawJSType], t2[_rawJSType], covariant);
|
||||
return dart.isClassSubType(t1[_rawJSType], t2[_rawJSType], isCovariant);
|
||||
};
|
||||
dart.isFunctionSubtype = function(ft1, ft2, covariant) {
|
||||
dart.isFunctionSubtype = function(ft1, ft2, isCovariant) {
|
||||
if (ft2 === core.Function) {
|
||||
return true;
|
||||
}
|
||||
|
@ -1528,26 +1528,26 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
let args1 = ft1.args;
|
||||
let args2 = ft2.args;
|
||||
if (args1.length > args2.length) {
|
||||
return covariant ? false : null;
|
||||
return isCovariant ? false : null;
|
||||
}
|
||||
for (let i = 0; i < args1.length; ++i) {
|
||||
if (!dart._isSubtype(args2[i], args1[i], !covariant)) {
|
||||
if (!dart._isSubtype(args2[i], args1[i], !isCovariant)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
let optionals1 = ft1.optionals;
|
||||
let optionals2 = ft2.optionals;
|
||||
if (args1.length + optionals1.length < args2.length + optionals2.length) {
|
||||
return covariant ? false : null;
|
||||
return isCovariant ? false : null;
|
||||
}
|
||||
let j = 0;
|
||||
for (let i = args1.length; i < args2.length; ++i, ++j) {
|
||||
if (!dart._isSubtype(args2[i], optionals1[j], !covariant)) {
|
||||
if (!dart._isSubtype(args2[i], optionals1[j], !isCovariant)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
for (let i = 0; i < optionals2.length; ++i, ++j) {
|
||||
if (!dart._isSubtype(optionals2[i], optionals1[j], !covariant)) {
|
||||
if (!dart._isSubtype(optionals2[i], optionals1[j], !isCovariant)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -1559,15 +1559,15 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
let n1 = named1[name];
|
||||
let n2 = named2[name];
|
||||
if (n1 === void 0) {
|
||||
return covariant ? false : null;
|
||||
return isCovariant ? false : null;
|
||||
}
|
||||
if (!dart._isSubtype(n2, n1, !covariant)) {
|
||||
if (!dart._isSubtype(n2, n1, !isCovariant)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
if (ret2 === dart.void) return true;
|
||||
if (ret1 === dart.void) return ret2 === dart.dynamic;
|
||||
if (!dart._isSubtype(ret1, ret2, covariant)) return null;
|
||||
if (!dart._isSubtype(ret1, ret2, isCovariant)) return null;
|
||||
return true;
|
||||
};
|
||||
dart._subtypeMemo = function(f) {
|
||||
|
@ -1592,7 +1592,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
dart._isTop = function(type) {
|
||||
return type == core.Object || type == dart.dynamic;
|
||||
};
|
||||
dart._isSubtype = function(t1, t2, covariant) {
|
||||
dart._isSubtype = function(t1, t2, isCovariant) {
|
||||
if (t1 === t2) return true;
|
||||
if (dart._isTop(t2) || dart._isBottom(t1)) {
|
||||
return true;
|
||||
|
@ -1603,20 +1603,20 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
return false;
|
||||
}
|
||||
if (!(t1 instanceof dart.AbstractFunctionType) && !(t2 instanceof dart.AbstractFunctionType)) {
|
||||
let result = dart.isClassSubType(t1, t2, covariant);
|
||||
let result = dart.isClassSubType(t1, t2, isCovariant);
|
||||
if (result === true || result === null) return result;
|
||||
}
|
||||
t1 = dart.getImplicitFunctionType(t1);
|
||||
if (!t1) return false;
|
||||
if (dart.isFunctionType(t1) && dart.isFunctionType(t2)) {
|
||||
return dart.isFunctionSubtype(t1, t2, covariant);
|
||||
return dart.isFunctionSubtype(t1, t2, isCovariant);
|
||||
}
|
||||
if (t1 instanceof dart.LazyJSType && t2 instanceof dart.LazyJSType) {
|
||||
return dart.isLazyJSSubtype(t1, t2, covariant);
|
||||
return dart.isLazyJSSubtype(t1, t2, isCovariant);
|
||||
}
|
||||
return false;
|
||||
};
|
||||
dart.isClassSubType = function(t1, t2, covariant) {
|
||||
dart.isClassSubType = function(t1, t2, isCovariant) {
|
||||
if (t1 == t2) return true;
|
||||
if (t1 == core.Object) return false;
|
||||
if (t1 == null) return t2 == core.Object || t2 == dart.dynamic;
|
||||
|
@ -1634,7 +1634,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
}
|
||||
dart.assert(length == typeArguments2.length);
|
||||
for (let i = 0; i < length; ++i) {
|
||||
let result = dart._isSubtype(typeArguments1[i], typeArguments2[i], covariant);
|
||||
let result = dart._isSubtype(typeArguments1[i], typeArguments2[i], isCovariant);
|
||||
if (!result) {
|
||||
return result;
|
||||
}
|
||||
|
@ -1643,7 +1643,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
}
|
||||
let indefinite = false;
|
||||
function definitive(t1, t2) {
|
||||
let result = dart.isClassSubType(t1, t2, covariant);
|
||||
let result = dart.isClassSubType(t1, t2, isCovariant);
|
||||
if (result == null) {
|
||||
indefinite = true;
|
||||
return false;
|
||||
|
|
Binary file not shown.
|
@ -560,22 +560,22 @@ getImplicitFunctionType(type) {
|
|||
bool isFunctionType(type) => JS('bool', '# instanceof # || # === #', type,
|
||||
AbstractFunctionType, type, Function);
|
||||
|
||||
isLazyJSSubtype(LazyJSType t1, LazyJSType t2, covariant) {
|
||||
isLazyJSSubtype(LazyJSType t1, LazyJSType t2, isCovariant) {
|
||||
if (t1 == t2) return true;
|
||||
|
||||
// All anonymous JS types are subtypes of each other.
|
||||
if (t1._jsTypeCallback == null || t2._jsTypeCallback == null) return true;
|
||||
return isClassSubType(t1._rawJSType, t2._rawJSType, covariant);
|
||||
return isClassSubType(t1._rawJSType, t2._rawJSType, isCovariant);
|
||||
}
|
||||
|
||||
/// Returns true if [ft1] <: [ft2].
|
||||
/// Returns false if [ft1] </: [ft2] in both spec and strong mode
|
||||
/// Returns null if [ft1] </: [ft2] in strong mode, but spec mode
|
||||
/// may differ
|
||||
/// If [covariant] is true, then we are checking subtyping in a covariant
|
||||
/// If [isCovariant] is true, then we are checking subtyping in a covariant
|
||||
/// position, and hence the direction of the check for function types
|
||||
/// corresponds to the direction of the check according to the Dart spec.
|
||||
isFunctionSubtype(ft1, ft2, covariant) => JS(
|
||||
isFunctionSubtype(ft1, ft2, isCovariant) => JS(
|
||||
'',
|
||||
'''(() => {
|
||||
if ($ft2 === $Function) {
|
||||
|
@ -595,11 +595,11 @@ isFunctionSubtype(ft1, ft2, covariant) => JS(
|
|||
if (args1.length > args2.length) {
|
||||
// If we're in a covariant position, then Dart's arity rules
|
||||
// agree with strong mode, otherwise we can't be sure.
|
||||
return ($covariant) ? false : null;
|
||||
return ($isCovariant) ? false : null;
|
||||
}
|
||||
|
||||
for (let i = 0; i < args1.length; ++i) {
|
||||
if (!$_isSubtype(args2[i], args1[i], !$covariant)) {
|
||||
if (!$_isSubtype(args2[i], args1[i], !$isCovariant)) {
|
||||
// Even if isSubtype returns false, assignability
|
||||
// means that we can't be definitive
|
||||
return null;
|
||||
|
@ -610,18 +610,18 @@ isFunctionSubtype(ft1, ft2, covariant) => JS(
|
|||
let optionals2 = $ft2.optionals;
|
||||
|
||||
if (args1.length + optionals1.length < args2.length + optionals2.length) {
|
||||
return ($covariant) ? false : null;
|
||||
return ($isCovariant) ? false : null;
|
||||
}
|
||||
|
||||
let j = 0;
|
||||
for (let i = args1.length; i < args2.length; ++i, ++j) {
|
||||
if (!$_isSubtype(args2[i], optionals1[j], !$covariant)) {
|
||||
if (!$_isSubtype(args2[i], optionals1[j], !$isCovariant)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
for (let i = 0; i < optionals2.length; ++i, ++j) {
|
||||
if (!$_isSubtype(optionals2[i], optionals1[j], !$covariant)) {
|
||||
if (!$_isSubtype(optionals2[i], optionals1[j], !$isCovariant)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -635,9 +635,9 @@ isFunctionSubtype(ft1, ft2, covariant) => JS(
|
|||
let n1 = named1[name];
|
||||
let n2 = named2[name];
|
||||
if (n1 === void 0) {
|
||||
return ($covariant) ? false : null;
|
||||
return ($isCovariant) ? false : null;
|
||||
}
|
||||
if (!$_isSubtype(n2, n1, !$covariant)) {
|
||||
if (!$_isSubtype(n2, n1, !$isCovariant)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -650,7 +650,7 @@ isFunctionSubtype(ft1, ft2, covariant) => JS(
|
|||
// Dart allows void functions to subtype dynamic functions, but not
|
||||
// other functions.
|
||||
if (ret1 === $_void) return (ret2 === $dynamic);
|
||||
if (!$_isSubtype(ret1, ret2, $covariant)) return null;
|
||||
if (!$_isSubtype(ret1, ret2, $isCovariant)) return null;
|
||||
return true;
|
||||
})()''');
|
||||
|
||||
|
@ -687,7 +687,7 @@ _isBottom(type) => JS('bool', '# == #', type, bottom);
|
|||
|
||||
_isTop(type) => JS('bool', '# == # || # == #', type, Object, type, dynamic);
|
||||
|
||||
_isSubtype(t1, t2, covariant) => JS(
|
||||
_isSubtype(t1, t2, isCovariant) => JS(
|
||||
'',
|
||||
'''(() => {
|
||||
if ($t1 === $t2) return true;
|
||||
|
@ -709,7 +709,7 @@ _isSubtype(t1, t2, covariant) => JS(
|
|||
// currently distinguish between generic typedefs and classes.
|
||||
if (!($t1 instanceof $AbstractFunctionType) &&
|
||||
!($t2 instanceof $AbstractFunctionType)) {
|
||||
let result = $isClassSubType($t1, $t2, $covariant);
|
||||
let result = $isClassSubType($t1, $t2, $isCovariant);
|
||||
if (result === true || result === null) return result;
|
||||
}
|
||||
|
||||
|
@ -721,17 +721,17 @@ _isSubtype(t1, t2, covariant) => JS(
|
|||
if (!t1) return false;
|
||||
|
||||
if ($isFunctionType($t1) && $isFunctionType($t2)) {
|
||||
return $isFunctionSubtype($t1, $t2, $covariant);
|
||||
return $isFunctionSubtype($t1, $t2, $isCovariant);
|
||||
}
|
||||
|
||||
if ($t1 instanceof $LazyJSType && $t2 instanceof $LazyJSType) {
|
||||
return $isLazyJSSubtype($t1, $t2, $covariant);
|
||||
return $isLazyJSSubtype($t1, $t2, $isCovariant);
|
||||
}
|
||||
|
||||
return false;
|
||||
})()''');
|
||||
|
||||
isClassSubType(t1, t2, covariant) => JS(
|
||||
isClassSubType(t1, t2, isCovariant) => JS(
|
||||
'',
|
||||
'''(() => {
|
||||
// We support Dart's covariant generics with the caveat that we do not
|
||||
|
@ -765,7 +765,7 @@ isClassSubType(t1, t2, covariant) => JS(
|
|||
$assert_(length == typeArguments2.length);
|
||||
for (let i = 0; i < length; ++i) {
|
||||
let result =
|
||||
$_isSubtype(typeArguments1[i], typeArguments2[i], $covariant);
|
||||
$_isSubtype(typeArguments1[i], typeArguments2[i], $isCovariant);
|
||||
if (!result) {
|
||||
return result;
|
||||
}
|
||||
|
@ -775,7 +775,7 @@ isClassSubType(t1, t2, covariant) => JS(
|
|||
|
||||
let indefinite = false;
|
||||
function definitive(t1, t2) {
|
||||
let result = $isClassSubType(t1, t2, $covariant);
|
||||
let result = $isClassSubType(t1, t2, $isCovariant);
|
||||
if (result == null) {
|
||||
indefinite = true;
|
||||
return false;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
[error] Couldn't infer type parameter 'T'; '_ControllerEventSinkWrapper<dynamic>' must be of type 'EventSink<T>'. (dart:async/stream.dart, line 1346, col 16)
|
||||
[error] The argument type '_ControllerEventSinkWrapper' can't be assigned to the parameter type 'EventSink<T>'. (dart:async/stream.dart, line 1346, col 53)
|
||||
[error] Type parameter bound types must be instantiated. (dart:collection/queue.dart, line 99, col 29)
|
||||
[error] Invalid override. The type of 'ChunkedConverter.bind' ('(dynamic) → dynamic') isn't a subtype of 'Converter<S, T>.bind' ('(Stream<S>) → Stream<T>'). (dart:convert/chunked_conversion.dart, line 14, col 3)
|
||||
[error] Invalid override. The type of 'ChunkedConverter.bind' ('(dynamic) → dynamic') isn't a subtype of 'StreamTransformer<S, T>.bind' ('(Stream<S>) → Stream<T>'). (dart:convert/chunked_conversion.dart, line 14, col 3)
|
||||
[error] Invalid override. The type of 'ChunkedConverter.startChunkedConversion' ('(dynamic) → dynamic') isn't a subtype of 'Converter<S, T>.startChunkedConversion' ('(Sink<T>) → Sink<S>'). (dart:convert/chunked_conversion.dart, line 15, col 3)
|
||||
|
|
Loading…
Reference in a new issue