| Index: lib/runtime/dart_sdk.js
|
| diff --git a/lib/runtime/dart_sdk.js b/lib/runtime/dart_sdk.js
|
| index 2b80cf605c72208f5852d37756d467bc541e9ef9..f730a6dbd76105bfac3cef8e2a771db39d9571eb 100644
|
| --- a/lib/runtime/dart_sdk.js
|
| +++ b/lib/runtime/dart_sdk.js
|
| @@ -500,7 +500,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| return false;
|
| };
|
| dart.strongInstanceOf = function(obj, type, ignoreFromWhiteList) {
|
| - let actual = dart.realRuntimeType(obj);
|
| + let actual = dart.getReifiedType(obj);
|
| if (dart.isSubtype(actual, type) || actual == dart.jsobject || actual == core.int && type == core.double) return true;
|
| if (ignoreFromWhiteList == void 0) return false;
|
| if (dart.isGroundType(type)) return false;
|
| @@ -514,12 +514,12 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| dart.is = function(obj, type) {
|
| if (dart.strongInstanceOf(obj, type)) return true;
|
| if (dart.isGroundType(type)) return false;
|
| - let actual = dart.realRuntimeType(obj);
|
| + let actual = dart.getReifiedType(obj);
|
| dart.throwStrongModeError('Strong mode is check failure: ' + dart.typeName(actual) + ' does not soundly subtype ' + dart.typeName(type));
|
| };
|
| dart.as = function(obj, type) {
|
| if (dart.instanceOfOrNull(obj, type)) return obj;
|
| - let actual = dart.realRuntimeType(obj);
|
| + let actual = dart.getReifiedType(obj);
|
| if (dart.isGroundType(type)) dart.throwCastError(actual, type);
|
| if (dart._ignoreTypeFailure(actual, type)) return obj;
|
| dart.throwStrongModeError('Strong mode cast failure from ' + dart.typeName(actual) + ' to ' + dart.typeName(type));
|
| @@ -529,7 +529,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| return null;
|
| }
|
| if (Math.floor(obj) != obj) {
|
| - dart.throwCastError(dart.realRuntimeType(obj), core.int);
|
| + dart.throwCastError(dart.getReifiedType(obj), core.int);
|
| }
|
| return obj;
|
| };
|
| @@ -612,7 +612,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| };
|
| dart.constants = new Map();
|
| dart.const = function(obj) {
|
| - let objectKey = [dart.realRuntimeType(obj)];
|
| + let objectKey = [dart.getReifiedType(obj)];
|
| for (let name of dart.getOwnNamesAndSymbols(obj)) {
|
| objectKey.push(name);
|
| objectKey.push(obj[name]);
|
| @@ -709,16 +709,17 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| };
|
| dart.runtimeType = function(obj) {
|
| let result = dart.checkPrimitiveType(obj);
|
| - if (result !== null) return result;
|
| - result = obj.runtimeType;
|
| - if (result) return result;
|
| - return dart._nonPrimitiveRuntimeType(obj);
|
| + if (result !== null) return dart.wrapType(result);
|
| + return obj.runtimeType;
|
| };
|
| dart.getFunctionType = function(obj) {
|
| let args = Array(obj.length).fill(dart.dynamic);
|
| return dart.definiteFunctionType(dart.bottom, args);
|
| };
|
| - dart.realRuntimeType = function(obj) {
|
| + dart.objectRuntimeType = function(obj) {
|
| + return dart.wrapType(dart.getReifiedType(obj));
|
| + };
|
| + dart.getReifiedType = function(obj) {
|
| let result = dart.checkPrimitiveType(obj);
|
| if (result !== null) return result;
|
| return dart._nonPrimitiveRuntimeType(obj);
|
| @@ -734,6 +735,12 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| }
|
| return result;
|
| };
|
| + dart.wrapType = function(type) {
|
| + if (type.hasOwnProperty(dart._typeObject)) {
|
| + return type[dart._typeObject];
|
| + }
|
| + return type[dart._typeObject] = new dart.WrappedType(type);
|
| + };
|
| dart.read = function(value) {
|
| return value[dart._runtimeType];
|
| };
|
| @@ -756,6 +763,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| dart._mixins = Symbol("mixins");
|
| dart.implements = Symbol("implements");
|
| dart.metadata = Symbol("metadata");
|
| + dart._typeObject = Symbol("typeObject");
|
| dart.TypeRep = class TypeRep {
|
| get name() {
|
| return this.toString();
|
| @@ -788,6 +796,15 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| }
|
| };
|
| dart.jsobject = new dart.JSObject();
|
| + dart.WrappedType = class WrappedType extends dart.TypeRep {
|
| + constructor(type) {
|
| + super();
|
| + this._runtimeType = type;
|
| + }
|
| + toString() {
|
| + return dart.typeName(this._runtimeType);
|
| + }
|
| + };
|
| dart.AbstractFunctionType = class AbstractFunctionType extends dart.TypeRep {
|
| constructor() {
|
| super();
|
| @@ -945,15 +962,19 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| if (tag === core.Type) {
|
| let name = type.name;
|
| let args = dart.getGenericArgs(type);
|
| - if (args) {
|
| - name += '<';
|
| - for (let i = 0; i < args.length; ++i) {
|
| - if (i > 0) name += ', ';
|
| - name += dart.typeName(args[i]);
|
| - }
|
| - name += '>';
|
| - }
|
| - return name;
|
| + if (!args) return name;
|
| + let result = name;
|
| + let allDynamic = true;
|
| + result += '<';
|
| + for (let i = 0; i < args.length; ++i) {
|
| + if (i > 0) name += ', ';
|
| + let argName = dart.typeName(args[i]);
|
| + if (argName != 'dynamic') allDynamic = false;
|
| + result += argName;
|
| + }
|
| + result += '>';
|
| + if (allDynamic) return name;
|
| + return result;
|
| }
|
| if (tag) return "Not a type: " + tag.name;
|
| return "JSObject<" + type.name + ">";
|
| @@ -1227,7 +1248,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| dart.throw(new core.NoSuchMethodError(this, invocation.memberName, invocation.positionalArguments, invocation.namedArguments));
|
| }
|
| get runtimeType() {
|
| - return dart.realRuntimeType(this);
|
| + return dart.objectRuntimeType(this);
|
| }
|
| };
|
| dart.setSignature(core.Object, {
|
| @@ -1283,14 +1304,14 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| };
|
| dart.fn(_debugger.isRegularDartObject, () => dart.definiteFunctionType(core.bool, [dart.dynamic]));
|
| _debugger.getObjectTypeName = function(object) {
|
| - let realRuntimeType = dart.realRuntimeType(object);
|
| - if (realRuntimeType == null) {
|
| + let reifiedType = dart.getReifiedType(object);
|
| + if (reifiedType == null) {
|
| if (_debugger._typeof(object) == 'function') {
|
| return '[[Raw JavaScript Function]]';
|
| }
|
| return '<Error getting type name>';
|
| }
|
| - return _debugger.getTypeName(dart.as(realRuntimeType, core.Type));
|
| + return _debugger.getTypeName(dart.as(reifiedType, core.Type));
|
| };
|
| dart.fn(_debugger.getObjectTypeName, () => dart.definiteFunctionType(core.String, [dart.dynamic]));
|
| _debugger.getTypeName = function(type) {
|
| @@ -1530,7 +1551,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| return true;
|
| }
|
| [_addMembers](current, object, properties) {
|
| - let className = dart.dload(dart.realRuntimeType(current), 'name');
|
| + let className = dart.dload(dart.getReifiedType(current), 'name');
|
| for (let name of _debugger.getOwnPropertyNames(current)) {
|
| if (name == 'constructor' || name == '__proto__' || dart.equals(name, className)) continue;
|
| if (dart.notNull(_debugger.hasMethod(object, name))) {
|
| @@ -1588,13 +1609,13 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| _debugger.FunctionFormatter = class FunctionFormatter extends _debugger.Formatter {
|
| accept(object) {
|
| if (_debugger._typeof(object) != 'function') return false;
|
| - return dart.realRuntimeType(object) != null;
|
| + return dart.getReifiedType(object) != null;
|
| }
|
| hasChildren(object) {
|
| return true;
|
| }
|
| preview(object) {
|
| - return dart.as(dart.typeName(dart.realRuntimeType(object)), core.String);
|
| + return dart.as(dart.typeName(dart.getReifiedType(object)), core.String);
|
| }
|
| children(object) {
|
| return dart.list([new _debugger.NameValuePair({name: 'signature', value: this.preview(object)}), new _debugger.NameValuePair({name: 'JavaScript Function', value: object, skipDart: true})], _debugger.NameValuePair);
|
| @@ -1671,7 +1692,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| }
|
| [_getType](object) {
|
| if (dart.is(object, core.Type)) return object;
|
| - return dart.realRuntimeType(object);
|
| + return dart.getReifiedType(object);
|
| }
|
| preview(object) {
|
| let entry = dart.as(object, _debugger.ClassMetadata);
|
| @@ -8927,7 +8948,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| return dart.toString(_js_helper.getRuntimeType(object));
|
| }
|
| static objectToString(object) {
|
| - let name = dart.typeName(dart.realRuntimeType(object));
|
| + let name = dart.typeName(dart.getReifiedType(object));
|
| return `Instance of '${name}'`;
|
| }
|
| static dateNow() {
|
| @@ -9992,7 +10013,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| };
|
| dart.fn(_js_helper.stringJoinUnchecked);
|
| _js_helper.getRuntimeType = function(object) {
|
| - return dart.realRuntimeType(object);
|
| + return dart.getReifiedType(object);
|
| };
|
| dart.fn(_js_helper.getRuntimeType, () => dart.definiteFunctionType(core.Type, [dart.dynamic]));
|
| _js_helper.getIndex = function(array, index) {
|
| @@ -29359,7 +29380,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| } else if (o instanceof Date) {
|
| let ms = o.getTime();
|
| return new core.DateTime.fromMillisecondsSinceEpoch(dart.asInt(ms));
|
| - } else if (dart.is(o, js._DartObject) && dart.jsobject != dart.realRuntimeType(o)) {
|
| + } else if (dart.is(o, js._DartObject) && dart.jsobject != dart.getReifiedType(o)) {
|
| return o[_dartObj];
|
| } else {
|
| return js._putIfAbsent(js._dartProxies, o, js._wrapToDart);
|
|
|