Index: pkg/dev_compiler/lib/js/common/dart_sdk.js |
diff --git a/pkg/dev_compiler/lib/js/common/dart_sdk.js b/pkg/dev_compiler/lib/js/common/dart_sdk.js |
index 123c87b78c38518ac09f2ad5c9b980c5edb4f8de..00228df08a958568bfc7a01c28d59977e36e9527 100644 |
--- a/pkg/dev_compiler/lib/js/common/dart_sdk.js |
+++ b/pkg/dev_compiler/lib/js/common/dart_sdk.js |
@@ -1209,10 +1209,20 @@ |
dart.tagLazy = function(value, compute) { |
dart.defineLazyProperty(value, dart._runtimeType, {get: compute}); |
}; |
+ dart._warn = function(arg) { |
+ console.warn(arg); |
+ }; |
const _jsTypeCallback = Symbol('_jsTypeCallback'); |
const _rawJSType = Symbol('_rawJSType'); |
+ const _dartName = Symbol('_dartName'); |
dart._isInstanceOfLazyJSType = function(o, t) { |
if (t[_jsTypeCallback] != null) { |
+ if (t[_rawJSType] == null) { |
+ let expected = t[_dartName]; |
+ let actual = dart.typeName(dart.getReifiedType(o)); |
+ dart._warn(dart.str`Cannot find native JavaScript type (${expected}) ` + dart.str`to type check ${actual}`); |
+ return true; |
+ } |
return dart.is(o, t[_rawJSType]); |
} |
if (o == null) return false; |
@@ -1220,6 +1230,12 @@ |
}; |
dart._asInstanceOfLazyJSType = function(o, t) { |
if (t[_jsTypeCallback] != null) { |
+ if (t[_rawJSType] == null) { |
+ let expected = t[_dartName]; |
+ let actual = dart.typeName(dart.getReifiedType(o)); |
+ dart._warn(dart.str`Cannot find native JavaScript type (${expected}) ` + dart.str`to type check ${actual}`); |
+ return o; |
+ } |
return dart.as(o, t[_rawJSType]); |
} |
if (o == null) return null; |
@@ -1254,6 +1270,9 @@ |
dart.LazyJSType.prototype.as = function as_T(object) { |
return dart._asInstanceOfLazyJSType(object, this); |
}; |
+ dart.LazyJSType.prototype._check = function check_T(object) { |
+ return dart._asInstanceOfLazyJSType(object, this); |
+ }; |
}; |
dart._functionType = function(definite, returnType, args, extra) { |
if (args === void 0 && extra === void 0) { |
@@ -2216,7 +2235,6 @@ |
return 'dynamic'; |
} |
}; |
- const _dartName = Symbol('_dartName'); |
dart.LazyJSType = class LazyJSType extends core.Object { |
new(jsTypeCallback, dartName) { |
this[_jsTypeCallback] = jsTypeCallback; |