Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(52)

Unified Diff: pkg/dev_compiler/lib/js/common/dart_sdk.js

Issue 2542833002: Some fixes for lazy JS types (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
Download patch
« no previous file with comments | « pkg/dev_compiler/lib/js/amd/dart_sdk.js ('k') | pkg/dev_compiler/lib/js/es6/dart_sdk.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
« no previous file with comments | « pkg/dev_compiler/lib/js/amd/dart_sdk.js ('k') | pkg/dev_compiler/lib/js/es6/dart_sdk.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698