Index: pkg/dev_compiler/lib/js/amd/dart_sdk.js |
diff --git a/pkg/dev_compiler/lib/js/amd/dart_sdk.js b/pkg/dev_compiler/lib/js/amd/dart_sdk.js |
index 7fa954bd0bed042e954a79280c9a1ba292c2689f..6ba576051f6d40b3028063b8cfbe60a9eaf048b2 100644 |
--- a/pkg/dev_compiler/lib/js/amd/dart_sdk.js |
+++ b/pkg/dev_compiler/lib/js/amd/dart_sdk.js |
@@ -1209,10 +1209,20 @@ define([], function() { |
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 @@ define([], function() { |
}; |
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 @@ define([], function() { |
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 @@ define([], function() { |
return 'dynamic'; |
} |
}; |
- const _dartName = Symbol('_dartName'); |
dart.LazyJSType = class LazyJSType extends core.Object { |
new(jsTypeCallback, dartName) { |
this[_jsTypeCallback] = jsTypeCallback; |