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

Unified Diff: lib/runtime/dart_sdk.js

Side-by-side diff isn't available for this file because of its large size.
Issue 2061373003: implement user-defined nSM, Object members on functions (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: fix Created 4 years, 6 months 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 | « no previous file | lib/src/compiler/code_generator.dart » ('j') | lib/src/compiler/code_generator.dart » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/runtime/dart_sdk.js
diff --git a/lib/runtime/dart_sdk.js b/lib/runtime/dart_sdk.js
index 1e2d45a6872eeb3936267e7786530acaced04cdb..2a9ddbc490f681555f45f02f254bf36f4eff6937 100644
--- a/lib/runtime/dart_sdk.js
+++ b/lib/runtime/dart_sdk.js
@@ -33,6 +33,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
let ListOfObject = () => (ListOfObject = dart.constFn(core.List$(core.Object)))();
let JSArrayOfListOfObject = () => (JSArrayOfListOfObject = dart.constFn(_interceptors.JSArray$(ListOfObject())))();
let JSArrayOfObject = () => (JSArrayOfObject = dart.constFn(_interceptors.JSArray$(core.Object)))();
+ let MapOfSymbol$dynamic = () => (MapOfSymbol$dynamic = dart.constFn(core.Map$(core.Symbol, dart.dynamic)))();
let MapOfString$int = () => (MapOfString$int = dart.constFn(core.Map$(core.String, core.int)))();
let ListOfString = () => (ListOfString = dart.constFn(core.List$(core.String)))();
let JSArrayOfFormatter = () => (JSArrayOfFormatter = dart.constFn(_interceptors.JSArray$(_debugger.Formatter)))();
@@ -473,6 +474,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
let CompleterOfAudioBuffer = () => (CompleterOfAudioBuffer = dart.constFn(async.Completer$(web_audio.AudioBuffer)))();
let EventStreamProviderOfAudioProcessingEvent = () => (EventStreamProviderOfAudioProcessingEvent = dart.constFn(html$.EventStreamProvider$(web_audio.AudioProcessingEvent)))();
let StringAndStringToint = () => (StringAndStringToint = dart.constFn(dart.definiteFunctionType(core.int, [core.String, core.String])))();
+ let dynamicTodynamic$ = () => (dynamicTodynamic$ = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic])))();
let dynamicToString = () => (dynamicToString = dart.constFn(dart.definiteFunctionType(core.String, [dart.dynamic])))();
let dynamicToListOfString = () => (dynamicToListOfString = dart.constFn(dart.definiteFunctionType(ListOfString(), [dart.dynamic])))();
let dynamicToList = () => (dynamicToList = dart.constFn(dart.definiteFunctionType(core.List, [dart.dynamic])))();
@@ -492,7 +494,6 @@ dart_library.library('dart_sdk', null, /* Imports */[
let StringTobool = () => (StringTobool = dart.constFn(dart.definiteFunctionType(core.bool, [core.String])))();
let FunctionTovoid = () => (FunctionTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.Function])))();
let StringAndStringToString = () => (StringAndStringToString = dart.constFn(dart.definiteFunctionType(core.String, [core.String, core.String])))();
- let dynamicTodynamic$ = () => (dynamicTodynamic$ = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic])))();
let TypeAndStringTodynamic = () => (TypeAndStringTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.Type, core.String])))();
let dynamicAnddynamicTodynamic$ = () => (dynamicAnddynamicTodynamic$ = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic, dart.dynamic])))();
let ListOfEToListOfE = () => (ListOfEToListOfE = dart.constFn(dart.definiteFunctionType(E => [core.List$(E), [core.List$(E)]])))();
@@ -911,14 +912,6 @@ dart_library.library('dart_sdk', null, /* Imports */[
return sig;
});
};
- dart.canonicalMember = function(obj, name) {
- if (typeof name === 'symbol') return name;
- if (obj != null && obj[dart._extensionType]) return dart.dartx[name];
- if (name == 'constructor' || name == 'prototype') {
- name = '+' + name;
- }
- return name;
- };
dart.setType = function(obj, type) {
obj.__proto__ = type.prototype;
return obj;
@@ -944,213 +937,214 @@ dart_library.library('dart_sdk', null, /* Imports */[
ctor.prototype = clazz.prototype;
dart.defineProperty(clazz, name, {value: ctor, configurable: true});
};
- dart.throwCastError = function(object, actual, type) {
- dart.throw(new _js_helper.CastErrorImplementation(object, dart.typeName(actual), dart.typeName(type)));
- };
- dart.throwTypeError = function(object, actual, type) {
- dart.throw(new _js_helper.TypeErrorImplementation(object, dart.typeName(actual), dart.typeName(type)));
- };
- dart.throwStrongModeCastError = function(object, actual, type) {
- dart.throw(new _js_helper.StrongModeCastError(object, dart.typeName(actual), dart.typeName(type)));
- };
- dart.throwStrongModeTypeError = function(object, actual, type) {
- dart.throw(new _js_helper.StrongModeTypeError(object, dart.typeName(actual), dart.typeName(type)));
+ dart.fn = function(closure, t) {
+ if (t == null) {
+ t = dart.definiteFunctionType(dart.dynamic, Array(closure.length).fill(dart.dynamic), void 0);
+ }
+ dart.tag(closure, t);
+ return closure;
};
- dart.throwUnimplementedError = function(message) {
- dart.throw(new core.UnimplementedError(message));
+ dart.lazyFn = function(closure, computeType) {
+ dart.tagLazy(closure, computeType);
+ return closure;
};
- dart.throwAssertionError = function() {
- dart.throw(new core.AssertionError());
+ dart._checkPrimitiveType = function(obj) {
+ if (obj == null) return core.Null;
+ if (typeof obj == "number") {
+ if (Math.floor(obj) == obj) {
+ return core.int;
+ }
+ return core.double;
+ }
+ if (typeof obj == "boolean") {
+ return core.bool;
+ }
+ if (typeof obj == "string") {
+ return core.String;
+ }
+ if (typeof obj == "symbol") {
+ return dart.jsobject;
+ }
+ return null;
};
- dart.throwNullValueError = function() {
- dart.throw(new core.NoSuchMethodError(null, new core.Symbol('<Unexpected Null Value>'), null, null, null));
+ dart.getFunctionType = function(obj) {
+ let args = Array(obj.length).fill(dart.dynamic);
+ return dart.definiteFunctionType(dart.bottom, args, void 0);
};
- dart.syncStar = function(gen, E, ...args) {
- const SyncIterable_E = dart.getGenericClass(_js_helper.SyncIterable)(E);
- return new SyncIterable_E(gen, args);
+ dart.getReifiedType = function(obj) {
+ let result = dart._checkPrimitiveType(obj);
+ if (result != null) return result;
+ return dart._nonPrimitiveRuntimeType(obj);
};
- dart.async = function(gen, T, ...args) {
- let iter;
- function onValue(res) {
- if (res === void 0) res = null;
- return next(iter.next(res));
+ dart._nonPrimitiveRuntimeType = function(obj) {
+ let result = dart._getRuntimeType(obj);
+ if (result != null) return result;
+ result = dart.getExtensionType(obj);
+ if (result != null) return result;
+ result = obj.constructor;
+ if (result === Function) {
+ return dart.jsobject;
}
- function onError(err) {
- return next(iter.throw(err));
+ if (result == null) {
+ return dart.jsobject;
}
- function next(ret) {
- if (ret.done) return ret.value;
- let future = ret.value;
- if (!dart.is(future, dart.getGenericClass(async.Future))) {
- future = async.Future.value(future);
- }
- return future.then(dart.dynamic)(onValue, {onError: onError});
+ return result;
+ };
+ dart.wrapType = function(type) {
+ if (type.hasOwnProperty(dart._typeObject)) {
+ return type[dart._typeObject];
}
- return dart.getGenericClass(async.Future)(T).new(function() {
- iter = gen.apply(null, args)[Symbol.iterator]();
- return onValue();
- });
+ return type[dart._typeObject] = new dart.WrappedType(type);
};
- dart.asyncStar = function(gen, T, ...args) {
- return new dart._AsyncStarStreamController(gen, T, args).controller.stream;
+ const _wrappedType = Symbol('_wrappedType');
+ dart.unwrapType = function(obj) {
+ return dart.dload(obj, _wrappedType);
};
- dart._canonicalFieldName = function(obj, name, args, displayName) {
- name = dart.canonicalMember(obj, name);
- if (name) return name;
- dart.throwNoSuchMethodFunc(obj, displayName, args);
+ dart._getRuntimeType = function(value) {
+ return value[dart._runtimeType];
};
- dart.dload = function(obj, field) {
- field = dart._canonicalFieldName(obj, field, [], field);
- dart._trackCall(obj, field);
- if (dart.hasMethod(obj, field)) {
- return dart.bind(obj, field);
- }
- let result = obj[field];
- return result;
+ dart.tag = function(value, t) {
+ value[dart._runtimeType] = t;
};
- dart.dput = function(obj, field, value) {
- field = dart._canonicalFieldName(obj, field, [value], field);
- dart._trackCall(obj, field);
- obj[field] = value;
- return value;
+ dart.tagComputed = function(value, compute) {
+ dart.defineProperty(value, dart._runtimeType, {get: compute});
};
- dart._checkApply = function(type, actuals) {
- if (actuals.length < type.args.length) return false;
- let index = 0;
- for (let i = 0; i < type.args.length; ++i) {
- if (!dart.instanceOfOrNull(actuals[i], type.args[i])) return false;
- ++index;
- }
- if (actuals.length == type.args.length) return true;
- let extras = actuals.length - type.args.length;
- if (type.optionals.length > 0) {
- if (extras > type.optionals.length) return false;
- for (let i = 0, j = index; i < extras; ++i, ++j) {
- if (!dart.instanceOfOrNull(actuals[j], type.optionals[i])) return false;
- }
+ dart.tagLazy = function(value, compute) {
+ dart.defineLazyProperty(value, dart._runtimeType, {get: compute});
+ };
+ dart._initialize2 = function() {
+ dart.TypeRep.prototype.is = function is_T(object) {
+ return dart.is(object, this);
+ };
+ dart.TypeRep.prototype.as = function as_T(object) {
+ return dart.as(object, this);
+ };
+ dart.TypeRep.prototype._check = function check_T(object) {
+ return dart.check(object, this);
+ };
+ dart.Dynamic.prototype.is = function is_Dynamic(object) {
return true;
- }
- if (extras != 1) return false;
- if (dart.getOwnPropertyNames(type.named).length == 0) return false;
- let opts = actuals[index];
- let names = dart.getOwnPropertyNames(opts);
- if (names.length == 0) return false;
- for (var name of names) {
- if (!dart.hasOwnProperty.call(type.named, name)) {
- return false;
+ };
+ dart.Dynamic.prototype.as = function as_Dynamic(object) {
+ return object;
+ };
+ dart.Dynamic.prototype._check = function check_Dynamic(object) {
+ return object;
+ };
+ };
+ dart._functionType = function(definite, returnType, args, extra) {
+ if (args === void 0 && extra === void 0) {
+ const fnTypeParts = returnType;
+ function makeGenericFnType(...types) {
+ let parts = fnTypeParts.apply(null, types);
+ return dart.FunctionType.create(definite, parts[0], parts[1], parts[2]);
}
- if (!dart.instanceOfOrNull(opts[name], type.named[name])) return false;
+ makeGenericFnType[dart._typeFormalCount] = fnTypeParts.length;
+ return makeGenericFnType;
}
- return true;
+ return dart.FunctionType.create(definite, returnType, args, extra);
};
- dart._dartSymbol = function(name) {
- return dart.const(core.Symbol.new(name.toString()));
+ dart.functionType = function(returnType, args, extra) {
+ return dart._functionType(false, returnType, args, extra);
};
- dart.throwNoSuchMethod = function(obj, name, pArgs, nArgs, extras) {
- dart.throw(new core.NoSuchMethodError(obj, dart._dartSymbol(name), pArgs, nArgs, extras));
+ dart.definiteFunctionType = function(returnType, args, extra) {
+ return dart._functionType(true, returnType, args, extra);
};
- dart.throwNoSuchMethodFunc = function(obj, name, pArgs, opt_func) {
- if (obj === void 0) obj = opt_func;
- dart.throwNoSuchMethod(obj, name, pArgs);
+ dart.typedef = function(name, closure) {
+ return new dart.Typedef(name, closure);
};
- dart._checkAndCall = function(f, ftype, obj, typeArgs, args, name) {
- dart._trackCall(obj, name);
- let originalFunction = f;
- if (!(f instanceof Function)) {
- if (f != null) {
- ftype = dart.getMethodType(f, 'call');
- f = f.call;
+ dart.typeName = function(type) {
+ if (type === void 0) return "undefined type";
+ if (type === null) return "null type";
+ if (type instanceof dart.TypeRep) {
+ if (type instanceof dart.Typedef) {
+ return type.name + "(" + type.functionType.toString() + ")";
}
- if (!(f instanceof Function)) {
- dart.throwNoSuchMethodFunc(obj, name, args, originalFunction);
+ return type.toString();
+ }
+ let tag = dart._getRuntimeType(type);
+ if (tag === core.Type) {
+ let name = type.name;
+ let args = dart.getGenericArgs(type);
+ if (!args) return name;
+ let result = name;
+ let allDynamic = true;
+ result += '<';
+ for (let i = 0; i < args.length; ++i) {
+ if (i > 0) result += ', ';
+ let argName = dart.typeName(args[i]);
+ if (argName != 'dynamic') allDynamic = false;
+ result += argName;
}
+ result += '>';
+ if (allDynamic) return name;
+ return result;
}
- if (ftype === void 0) {
- ftype = dart._getRuntimeType(f);
+ if (tag) return "Not a type: " + tag.name;
+ return "JSObject<" + type.name + ">";
+ };
+ dart.getImplicitFunctionType = function(type) {
+ if (dart.test(dart.isFunctionType(type))) return type;
+ return dart.getMethodTypeFromType(type, 'call');
+ };
+ dart.isFunctionType = function(type) {
+ return type instanceof dart.AbstractFunctionType || type === core.Function;
+ };
+ dart.isFunctionSubtype = function(ft1, ft2, covariant) {
+ if (ft2 === core.Function) {
+ return true;
}
- if (!ftype) {
- if (typeArgs != null) {
- dart.throwStrongModeError('call to JS object `' + obj + '` with type arguments <' + typeArgs + '> is not supported.');
- }
- return f.apply(obj, args);
+ if (ft1 === core.Function) {
+ return false;
}
- let formalCount = ftype[dart._typeFormalCount];
- if (formalCount != null) {
- if (typeArgs == null) {
- typeArgs = Array(formalCount).fill(dart.dynamic);
- } else if (typeArgs.length != formalCount) {
- dart.throwStrongModeError('incorrect number of arguments to generic function ' + dart.typeName(ftype) + ', got <' + typeArgs + '> expected ' + formalCount + '.');
+ let ret1 = ft1.returnType;
+ let ret2 = ft2.returnType;
+ let args1 = ft1.args;
+ let args2 = ft2.args;
+ if (args1.length > args2.length) {
+ return covariant ? false : null;
+ }
+ for (let i = 0; i < args1.length; ++i) {
+ if (!dart._isSubtype(args2[i], args1[i], !covariant)) {
+ return null;
}
- ftype = ftype.apply(null, typeArgs);
- } else if (typeArgs != null) {
- dart.throwStrongModeError('got type arguments to non-generic function ' + dart.typeName(ftype) + ', got <' + typeArgs + '> expected none.');
}
- if (dart._checkApply(ftype, args)) {
- if (typeArgs != null) {
- return f.apply(obj, typeArgs).apply(obj, args);
+ let optionals1 = ft1.optionals;
+ let optionals2 = ft2.optionals;
+ if (args1.length + optionals1.length < args2.length + optionals2.length) {
+ return covariant ? false : null;
+ }
+ let j = 0;
+ for (let i = args1.length; i < args2.length; ++i, ++j) {
+ if (!dart._isSubtype(args2[i], optionals1[j], !covariant)) {
+ return null;
}
- return f.apply(obj, args);
}
- dart.throwNoSuchMethodFunc(obj, name, args, originalFunction);
- };
- dart.dcall = function(f, ...args) {
- return dart._checkAndCall(f, dart._getRuntimeType(f), void 0, null, args, 'call');
- };
- dart.dgcall = function(f, typeArgs, ...args) {
- return dart._checkAndCall(f, dart._getRuntimeType(f), void 0, typeArgs, args, 'call');
- };
- dart.getDynamicStats = function() {
- let ret = JSArrayOfListOfObject().of([]);
- let keys = dart._callMethodStats[dartx.keys][dartx.toList]();
- keys[dartx.sort](dart.fn((a, b) => dart._callMethodStats[dartx.get](b)[dartx.compareTo](dart._callMethodStats[dartx.get](a)), StringAndStringToint()));
- for (let key of keys) {
- let count = dart._callMethodStats[dartx.get](key);
- ret[dartx.add](JSArrayOfObject().of([key, count]));
- }
- return ret;
- };
- dart.clearDynamicStats = function() {
- dart._callMethodStats[dartx.clear]();
- };
- dart._trackCall = function(obj, name) {
- if (!dart.trackProfile) return;
- let actual = dart.getReifiedType(obj);
- let stackStr = new Error().stack;
- let stack = stackStr[dartx.split]('\n at ');
- let src = '';
- for (let i = 2; i < dart.notNull(stack[dartx.length]); ++i) {
- let frame = stack[dartx.get](i);
- if (!dart.test(frame[dartx.contains]('dev_compiler/lib/runtime/dart_sdk.js'))) {
- src = frame;
- break;
+ for (let i = 0; i < optionals2.length; ++i, ++j) {
+ if (!dart._isSubtype(optionals2[i], optionals1[j], !covariant)) {
+ return null;
}
}
- name = dart.str`${dart.typeName(actual)}.${name} <${src}>`;
- if (dart.test(dart._callMethodStats[dartx.containsKey](name))) {
- dart._callMethodStats[dartx.set](core.String._check(name), dart.notNull(dart._callMethodStats[dartx.get](name)) + 1);
- } else {
- dart._callMethodStats[dartx.set](core.String._check(name), 1);
+ let named1 = ft1.named;
+ let named2 = ft2.named;
+ let names = dart.getOwnPropertyNames(named2);
+ for (let i = 0; i < names.length; ++i) {
+ let name = names[i];
+ let n1 = named1[name];
+ let n2 = named2[name];
+ if (n1 === void 0) {
+ return covariant ? false : null;
+ }
+ if (!dart._isSubtype(n2, n1, !covariant)) {
+ return null;
+ }
}
+ if (ret2 === dart.void) return true;
+ if (ret1 === dart.void) return ret2 === dart.dynamic;
+ if (!dart._isSubtype(ret1, ret2, covariant)) return null;
+ return true;
};
- dart._callMethod = function(obj, name, typeArgs, args, displayName) {
- let symbol = dart._canonicalFieldName(obj, name, args, displayName);
- let f = obj != null ? obj[symbol] : null;
- let ftype = dart.getMethodType(obj, symbol);
- return dart._checkAndCall(f, ftype, obj, typeArgs, args, displayName);
- };
- dart.dsend = function(obj, method, ...args) {
- return dart._callMethod(obj, method, null, args, method);
- };
- dart.dgsend = function(obj, typeArgs, method, ...args) {
- return dart._callMethod(obj, method, typeArgs, args, method);
- };
- dart.dindex = function(obj, index) {
- return dart._callMethod(obj, 'get', null, [index], '[]');
- };
- dart.dsetindex = function(obj, index, value) {
- return dart._callMethod(obj, 'set', null, [index, value], '[]=');
- };
- dart._ignoreMemo = function(f) {
+ dart._subtypeMemo = function(f) {
let memo = new Map();
return (t1, t2) => {
let map = memo.get(t1);
@@ -1166,581 +1160,597 @@ dart_library.library('dart_sdk', null, /* Imports */[
return result;
};
};
- dart.strongInstanceOf = function(obj, type, ignoreFromWhiteList) {
- let actual = dart.getReifiedType(obj);
- let result = dart.isSubtype(actual, type);
- if (result || actual == dart.jsobject || actual == core.int && type == core.double) return true;
- if (result === false) return false;
- if (ignoreFromWhiteList == void 0) return result;
- if (dart._ignoreTypeFailure(actual, type)) return true;
- return result;
+ dart._isBottom = function(type) {
+ return type == dart.bottom;
};
- dart.instanceOfOrNull = function(obj, type) {
- if (obj == null || dart.strongInstanceOf(obj, type, true)) return true;
- return false;
+ dart._isTop = function(type) {
+ return type == core.Object || type == dart.dynamic;
};
- dart.is = function(obj, type) {
- let result = dart.strongInstanceOf(obj, type);
- if (result !== null) return result;
- let actual = dart.getReifiedType(obj);
- dart.throwStrongModeError('Strong mode is-check failure: ' + dart.typeName(actual) + ' does not soundly subtype ' + dart.typeName(type));
+ dart._isSubtype = function(t1, t2, covariant) {
+ if (t1 === t2) return true;
+ if (dart._isTop(t2) || dart._isBottom(t1)) {
+ return true;
+ }
+ if (dart._isBottom(t2)) return null;
+ if (dart._isTop(t1)) {
+ if (t1 === dart.dynamic) return null;
+ return false;
+ }
+ if (!(t1 instanceof dart.AbstractFunctionType) && !(t2 instanceof dart.AbstractFunctionType)) {
+ let result = dart.isClassSubType(t1, t2, covariant);
+ 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 false;
};
- dart.as = function(obj, type) {
- if (type == dart.dynamic || obj == null) return obj;
- let result = dart.strongInstanceOf(obj, type, true);
- if (result) return obj;
- dart._throwCastError(obj, type, result);
+ dart.isClassSubType = function(t1, t2, covariant) {
+ if (t1 == t2) return true;
+ if (t1 == core.Object) return false;
+ if (t1 == null) return t2 == core.Object || t2 == dart.dynamic;
+ let raw1 = dart.getGenericClass(t1);
+ let raw2 = dart.getGenericClass(t2);
+ if (raw1 != null && raw1 == raw2) {
+ let typeArguments1 = dart.getGenericArgs(t1);
+ let typeArguments2 = dart.getGenericArgs(t2);
+ let length = typeArguments1.length;
+ if (typeArguments2.length == 0) {
+ return true;
+ } else if (length == 0) {
+ if (typeArguments2.every(dart._isTop)) return true;
+ return null;
+ }
+ dart.assert(length == typeArguments2.length);
+ for (let i = 0; i < length; ++i) {
+ let result = dart._isSubtype(typeArguments1[i], typeArguments2[i], covariant);
+ if (!result) {
+ return result;
+ }
+ }
+ return true;
+ }
+ let indefinite = false;
+ function definitive(t1, t2) {
+ let result = dart.isClassSubType(t1, t2, covariant);
+ if (result == null) {
+ indefinite = true;
+ return false;
+ }
+ return result;
+ }
+ if (definitive(t1.__proto__, t2)) return true;
+ let mixins = dart.getMixins(t1);
+ if (mixins) {
+ for (let m1 of mixins) {
+ if (m1 != null && definitive(m1, t2)) return true;
+ }
+ }
+ let getInterfaces = dart.getImplements(t1);
+ if (getInterfaces) {
+ for (let i1 of getInterfaces()) {
+ if (i1 != null && definitive(i1, t2)) return true;
+ }
+ }
+ if (indefinite) return null;
+ return false;
};
- dart.check = function(obj, type) {
- if (type == dart.dynamic || obj == null) return obj;
- let result = dart.strongInstanceOf(obj, type, true);
- if (result) return obj;
- dart._throwTypeError(obj, type, result);
+ dart.isGroundType = function(type) {
+ if (type instanceof dart.AbstractFunctionType) {
+ if (!dart._isTop(type.returnType)) return false;
+ for (let i = 0; i < type.args.length; ++i) {
+ if (!dart._isBottom(type.args[i])) return false;
+ }
+ for (let i = 0; i < type.optionals.length; ++i) {
+ if (!dart._isBottom(type.optionals[i])) return false;
+ }
+ let names = dart.getOwnPropertyNames(type.named);
+ for (let i = 0; i < names.length; ++i) {
+ if (!dart._isBottom(type.named[names[i]])) return false;
+ }
+ return true;
+ }
+ let typeArgs = dart.getGenericArgs(type);
+ if (!typeArgs) return true;
+ for (let t of typeArgs) {
+ if (t != core.Object && t != dart.dynamic) return false;
+ }
+ return true;
};
- dart.test = function(obj) {
- if (typeof obj == 'boolean') return obj;
- return dart.booleanConversionFailed(obj);
+ dart.throwCastError = function(object, actual, type) {
+ dart.throw(new _js_helper.CastErrorImplementation(object, dart.typeName(actual), dart.typeName(type)));
};
- dart.booleanConversionFailed = function(obj) {
- if (obj == null) {
- dart.throw(new _js_helper.BooleanConversionAssertionError());
- }
- let actual = dart.getReifiedType(obj);
- let expected = core.bool;
- dart.throw(new _js_helper.TypeErrorImplementation.fromMessage(dart.str`type '${dart.typeName(actual)}' is not a subtype of ` + dart.str`type '${dart.typeName(expected)}' in boolean expression`));
+ dart.throwTypeError = function(object, actual, type) {
+ dart.throw(new _js_helper.TypeErrorImplementation(object, dart.typeName(actual), dart.typeName(type)));
};
- dart._throwCastError = function(obj, type, result) {
- let actual = dart.getReifiedType(obj);
- if (result == false) dart.throwCastError(obj, actual, type);
- dart.throwStrongModeCastError(obj, actual, type);
+ dart.throwStrongModeCastError = function(object, actual, type) {
+ dart.throw(new _js_helper.StrongModeCastError(object, dart.typeName(actual), dart.typeName(type)));
};
- dart._throwTypeError = function(obj, type, result) {
- let actual = dart.getReifiedType(obj);
- if (result == false) dart.throwTypeError(obj, actual, type);
- dart.throwStrongModeTypeError(obj, actual, type);
+ dart.throwStrongModeTypeError = function(object, actual, type) {
+ dart.throw(new _js_helper.StrongModeTypeError(object, dart.typeName(actual), dart.typeName(type)));
};
- dart.asInt = function(obj) {
- if (obj == null) return null;
- if (Math.floor(obj) != obj) {
- dart.throwCastError(obj, dart.getReifiedType(obj), core.int);
- }
- return obj;
+ dart.throwUnimplementedError = function(message) {
+ dart.throw(new core.UnimplementedError(message));
};
- dart.addSimpleTypeTests = function(ctor) {
- ctor.is = function is_C(object) {
- if (object instanceof this) return true;
- return dart.is(object, this);
- };
- ctor.as = function as_C(object) {
- if (object instanceof this) return object;
- return dart.as(object, this);
- };
- ctor._check = function check_C(object) {
- if (object instanceof this) return object;
- return dart.check(object, this);
- };
+ dart.throwAssertionError = function() {
+ dart.throw(new core.AssertionError());
};
- dart.addTypeTests = function(ctor) {
- ctor.as = function as_G(object) {
- return dart.as(object, this);
- };
- ctor.is = function is_G(object) {
- return dart.is(object, this);
- };
- ctor._check = function check_G(object) {
- return dart.check(object, this);
- };
+ dart.throwNullValueError = function() {
+ dart.throw(new core.NoSuchMethodError(null, new core.Symbol('<Unexpected Null Value>'), null, null, null));
};
- dart.equals = function(x, y) {
- if (x == null || y == null) return x == y;
- let eq = x['=='];
- return eq ? eq.call(x, y) : x === y;
- };
- dart.notNull = function(x) {
- if (x == null) dart.throwNullValueError();
- return x;
+ dart.syncStar = function(gen, E, ...args) {
+ const SyncIterable_E = dart.getGenericClass(_js_helper.SyncIterable)(E);
+ return new SyncIterable_E(gen, args);
};
- dart.map = function(values, K, V) {
- if (K === void 0) K = null;
- if (V === void 0) V = null;
- return (() => {
- if (K == null) K = dart.dynamic;
- if (V == null) V = dart.dynamic;
- let map = dart.getGenericClass(collection.LinkedHashMap)(K, V).new();
- if (Array.isArray(values)) {
- for (let i = 0, end = values.length - 1; i < end; i += 2) {
- let key = values[i];
- let value = values[i + 1];
- map.set(key, value);
- }
- } else if (typeof values === 'object') {
- for (let key of dart.getOwnPropertyNames(values)) {
- map.set(key, values[key]);
- }
+ dart.async = function(gen, T, ...args) {
+ let iter;
+ function onValue(res) {
+ if (res === void 0) res = null;
+ return next(iter.next(res));
+ }
+ function onError(err) {
+ return next(iter.throw(err));
+ }
+ function next(ret) {
+ if (ret.done) return ret.value;
+ let future = ret.value;
+ if (!dart.is(future, dart.getGenericClass(async.Future))) {
+ future = async.Future.value(future);
}
- return map;
- })();
- };
- dart.assert = function(condition) {
- if (!condition) dart.throwAssertionError();
- };
- dart.throw = function(obj) {
- if (obj != null && (typeof obj == 'object' || typeof obj == 'function')) {
- dart._stack.set(obj, new Error());
+ return future.then(dart.dynamic)(onValue, {onError: onError});
}
- throw obj;
- };
- dart.getError = function(exception) {
- var stack = dart._stack.get(exception);
- return stack !== void 0 ? stack : exception;
- };
- dart.stackPrint = function(exception) {
- var error = dart.getError(exception);
- console.log(error.stack ? error.stack : 'No stack trace for: ' + error);
+ return dart.getGenericClass(async.Future)(T).new(function() {
+ iter = gen.apply(null, args)[Symbol.iterator]();
+ return onValue();
+ });
};
- dart.stackTrace = function(exception) {
- var error = dart.getError(exception);
- return _js_helper.getTraceFromException(error);
+ dart.asyncStar = function(gen, T, ...args) {
+ return new dart._AsyncStarStreamController(gen, T, args).controller.stream;
};
- dart.nullSafe = function(obj, ...callbacks) {
- if (obj == null) return obj;
- for (const callback of callbacks) {
- obj = callback(obj);
- if (obj == null) break;
+ dart.dload = function(obj, field) {
+ let f = dart._canonicalMember(obj, field);
+ dart._trackCall(obj, f);
+ if (f != null) {
+ if (dart.test(dart.hasMethod(obj, f))) return dart.bind(obj, f, void 0);
+ return obj[f];
}
- return obj;
+ return dart.noSuchMethod(obj, new dart._Invocation(core.String._check(field), [], {isGetter: true}));
};
- dart.multiKeyPutIfAbsent = function(map, keys, valueFn) {
- for (let k of keys) {
- let value = map.get(k);
- if (!value) {
- map.set(k, value = new Map());
- }
- map = value;
+ dart.dput = function(obj, field, value) {
+ let f = dart._canonicalMember(obj, field);
+ dart._trackCall(obj, f);
+ if (f != null) {
+ return obj[f] = value;
}
- if (map.has(dart._value)) return map.get(dart._value);
- let value = valueFn();
- map.set(dart._value, value);
- return value;
+ return dart.noSuchMethod(obj, new dart._Invocation(core.String._check(field), [value], {isSetter: true}));
};
- dart.const = function(obj) {
- function lookupNonTerminal(map, key) {
- let result = map.get(key);
- if (result !== void 0) return result;
- map.set(key, result = new Map());
- return result;
- }
- let names = dart.getOwnNamesAndSymbols(obj);
- let count = names.length;
- let map = lookupNonTerminal(dart.constants, count);
- for (let i = 0; i < count; i++) {
- let name = names[i];
- map = lookupNonTerminal(map, name);
- map = lookupNonTerminal(map, obj[name]);
+ dart._checkApply = function(type, actuals) {
+ if (actuals.length < type.args.length) return false;
+ let index = 0;
+ for (let i = 0; i < type.args.length; ++i) {
+ if (!dart.instanceOfOrNull(actuals[i], type.args[i])) return false;
+ ++index;
}
- let type = dart.getReifiedType(obj);
- let value = map.get(type);
- if (value) return value;
- map.set(type, obj);
- return obj;
- };
- dart.constList = function(elements, elementType) {
- function lookupNonTerminal(map, key) {
- let result = map.get(key);
- if (result !== void 0) return result;
- map.set(key, result = new Map());
- return result;
+ if (actuals.length == type.args.length) return true;
+ let extras = actuals.length - type.args.length;
+ if (type.optionals.length > 0) {
+ if (extras > type.optionals.length) return false;
+ for (let i = 0, j = index; i < extras; ++i, ++j) {
+ if (!dart.instanceOfOrNull(actuals[j], type.optionals[i])) return false;
+ }
+ return true;
}
- let count = elements.length;
- let map = lookupNonTerminal(dart.constantLists, count);
- for (let i = 0; i < count; i++) {
- map = lookupNonTerminal(map, elements[i]);
+ if (extras != 1) return false;
+ if (dart.getOwnPropertyNames(type.named).length == 0) return false;
+ let opts = actuals[index];
+ let names = dart.getOwnPropertyNames(opts);
+ if (names.length == 0) return false;
+ for (var name of names) {
+ if (!dart.hasOwnProperty.call(type.named, name)) {
+ return false;
+ }
+ if (!dart.instanceOfOrNull(opts[name], type.named[name])) return false;
}
- let value = map.get(elementType);
- if (value) return value;
- value = dart.list(elements, elementType);
- map.set(elementType, value);
- return value;
+ return true;
};
- dart.hashCode = function(obj) {
- if (obj == null) return 0;
- switch (typeof obj) {
- case "number":
- {
- return obj & 0x1FFFFFFF;
+ dart._dartSymbol = function(name) {
+ return dart.const(core.Symbol.new(name.toString()));
+ };
+ dart._checkAndCall = function(f, ftype, obj, typeArgs, args, name) {
+ dart._trackCall(obj, name);
+ let originalTarget = obj === void 0 ? f : obj;
+ function callNSM() {
+ let namedArgs = null;
+ if (args.length > 0 && args[args.length - 1].__proto__ == Object.prototype) {
+ namedArgs = args.pop();
}
- case "boolean":
- {
- return obj ? 2 * 3 * 23 * 3761 : 269 * 811;
+ return dart.noSuchMethod(originalTarget, new dart._Invocation(name, args, {namedArguments: namedArgs, isMethod: true}));
+ }
+ if (!(f instanceof Function)) {
+ if (f != null) {
+ ftype = dart.getMethodType(f, 'call');
+ f = f.call;
+ }
+ if (!(f instanceof Function)) {
+ return callNSM();
}
}
- let extension = dart.getExtensionType(obj);
- if (extension != null) {
- return obj[dartx.hashCode];
+ if (ftype === void 0) {
+ ftype = dart._getRuntimeType(f);
}
- return obj.hashCode;
- };
- dart.toString = function(obj) {
- if (obj == null) return "null";
- let extension = dart.getExtensionType(obj);
- if (extension != null) {
- return obj[dartx.toString]();
+ if (!ftype) {
+ if (typeArgs != null) {
+ dart.throwStrongModeError('call to JS object `' + obj + '` with type arguments <' + typeArgs + '> is not supported.');
+ }
+ return f.apply(obj, args);
}
- return obj.toString();
- };
- dart.noSuchMethod = function(obj, invocation) {
- if (obj == null) {
- dart.throw(new core.NoSuchMethodError(null, invocation.memberName, invocation.positionalArguments, invocation.namedArguments));
+ let formalCount = ftype[dart._typeFormalCount];
+ if (formalCount != null) {
+ if (typeArgs == null) {
+ typeArgs = Array(formalCount).fill(dart.dynamic);
+ } else if (typeArgs.length != formalCount) {
+ dart.throwStrongModeError('incorrect number of arguments to generic function ' + dart.typeName(ftype) + ', got <' + typeArgs + '> expected ' + formalCount + '.');
+ }
+ ftype = ftype.apply(null, typeArgs);
+ } else if (typeArgs != null) {
+ dart.throwStrongModeError('got type arguments to non-generic function ' + dart.typeName(ftype) + ', got <' + typeArgs + '> expected none.');
}
- let extension = dart.getExtensionType(obj);
- if (extension != null) {
- return obj[dartx.noSuchMethod](invocation);
+ if (dart._checkApply(ftype, args)) {
+ if (typeArgs != null) {
+ return f.apply(obj, typeArgs).apply(obj, args);
+ }
+ return f.apply(obj, args);
}
- return obj.noSuchMethod(invocation);
- };
- dart.constFn = function(x) {
- return () => x;
+ return callNSM();
};
- dart.runtimeType = function(obj) {
- let result = dart._checkPrimitiveType(obj);
- if (result != null) return dart.wrapType(result);
- let extension = dart.getExtensionType(obj);
- if (extension != null) {
- return obj[dartx.runtimeType];
- }
- return obj.runtimeType;
+ dart.dcall = function(f, ...args) {
+ return dart._checkAndCall(f, dart._getRuntimeType(f), void 0, null, args, 'call');
};
- dart.str = function(strings, ...values) {
- let s = strings[0];
- for (let i = 0, len = values.length; i < len;) {
- s += dart.notNull(dart.toString(values[i])) + strings[++i];
- }
- return s;
+ dart.dgcall = function(f, typeArgs, ...args) {
+ return dart._checkAndCall(f, dart._getRuntimeType(f), void 0, typeArgs, args, 'call');
};
- dart.fn = function(closure, t) {
- if (t == null) {
- t = dart.definiteFunctionType(dart.dynamic, Array(closure.length).fill(dart.dynamic), void 0);
+ dart.getDynamicStats = function() {
+ let ret = JSArrayOfListOfObject().of([]);
+ let keys = dart._callMethodStats[dartx.keys][dartx.toList]();
+ keys[dartx.sort](dart.fn((a, b) => dart._callMethodStats[dartx.get](b)[dartx.compareTo](dart._callMethodStats[dartx.get](a)), StringAndStringToint()));
+ for (let key of keys) {
+ let count = dart._callMethodStats[dartx.get](key);
+ ret[dartx.add](JSArrayOfObject().of([key, count]));
}
- dart.tag(closure, t);
- return closure;
+ return ret;
};
- dart.lazyFn = function(closure, computeType) {
- dart.tagLazy(closure, computeType);
- return closure;
+ dart.clearDynamicStats = function() {
+ dart._callMethodStats[dartx.clear]();
};
- dart._checkPrimitiveType = function(obj) {
- if (obj == null) return core.Null;
- if (typeof obj == "number") {
- if (Math.floor(obj) == obj) {
- return core.int;
+ dart._trackCall = function(obj, name) {
+ if (!dart.trackProfile) return;
+ let actual = dart.getReifiedType(obj);
+ let stackStr = new Error().stack;
+ let stack = stackStr[dartx.split]('\n at ');
+ let src = '';
+ for (let i = 2; i < dart.notNull(stack[dartx.length]); ++i) {
+ let frame = stack[dartx.get](i);
+ if (!dart.test(frame[dartx.contains]('dev_compiler/lib/runtime/dart_sdk.js'))) {
+ src = frame;
+ break;
}
- return core.double;
}
- if (typeof obj == "boolean") {
- return core.bool;
- }
- if (typeof obj == "string") {
- return core.String;
+ name = dart.str`${dart.typeName(actual)}.${name} <${src}>`;
+ if (dart.test(dart._callMethodStats[dartx.containsKey](name))) {
+ dart._callMethodStats[dartx.set](core.String._check(name), dart.notNull(dart._callMethodStats[dartx.get](name)) + 1);
+ } else {
+ dart._callMethodStats[dartx.set](core.String._check(name), 1);
}
- if (typeof obj == "symbol") {
- return dart.jsobject;
+ };
+ dart._callMethod = function(obj, name, typeArgs, args, displayName) {
+ let symbol = dart._canonicalMember(obj, name);
+ if (symbol == null) {
+ return dart.noSuchMethod(obj, new dart._Invocation(core.String._check(displayName), core.List._check(args), {isMethod: true}));
}
- return null;
+ let f = obj != null ? obj[symbol] : null;
+ let ftype = dart.getMethodType(obj, symbol);
+ return dart._checkAndCall(f, ftype, obj, typeArgs, args, displayName);
};
- dart.getFunctionType = function(obj) {
- let args = Array(obj.length).fill(dart.dynamic);
- return dart.definiteFunctionType(dart.bottom, args, void 0);
+ dart.dsend = function(obj, method, ...args) {
+ return dart._callMethod(obj, method, null, args, method);
};
- dart.getReifiedType = function(obj) {
- let result = dart._checkPrimitiveType(obj);
- if (result != null) return result;
- return dart._nonPrimitiveRuntimeType(obj);
+ dart.dgsend = function(obj, typeArgs, method, ...args) {
+ return dart._callMethod(obj, method, typeArgs, args, method);
};
- dart._nonPrimitiveRuntimeType = function(obj) {
- let result = dart._getRuntimeType(obj);
- if (result != null) return result;
- result = dart.getExtensionType(obj);
- if (result != null) return result;
- result = obj.constructor;
- if (result === Function) {
- return dart.jsobject;
- }
- if (result == null) {
- return dart.jsobject;
- }
+ dart.dindex = function(obj, index) {
+ return dart._callMethod(obj, 'get', null, [index], '[]');
+ };
+ dart.dsetindex = function(obj, index, value) {
+ return dart._callMethod(obj, 'set', null, [index, value], '[]=');
+ };
+ dart._ignoreMemo = function(f) {
+ let memo = new Map();
+ return (t1, t2) => {
+ let map = memo.get(t1);
+ let result;
+ if (map) {
+ result = map.get(t2);
+ if (result !== void 0) return result;
+ } else {
+ memo.set(t1, map = new Map());
+ }
+ result = f(t1, t2);
+ map.set(t2, result);
+ return result;
+ };
+ };
+ dart.strongInstanceOf = function(obj, type, ignoreFromWhiteList) {
+ let actual = dart.getReifiedType(obj);
+ let result = dart.isSubtype(actual, type);
+ if (result || actual == dart.jsobject || actual == core.int && type == core.double) return true;
+ if (result === false) return false;
+ if (ignoreFromWhiteList == void 0) return result;
+ if (dart._ignoreTypeFailure(actual, type)) return true;
return result;
};
- dart.wrapType = function(type) {
- if (type.hasOwnProperty(dart._typeObject)) {
- return type[dart._typeObject];
- }
- return type[dart._typeObject] = new dart.WrappedType(type);
+ dart.instanceOfOrNull = function(obj, type) {
+ if (obj == null || dart.strongInstanceOf(obj, type, true)) return true;
+ return false;
};
- const _runtimeType = Symbol('_runtimeType');
- dart.unwrapType = function(obj) {
- return dart.dload(obj, _runtimeType);
+ dart.is = function(obj, type) {
+ let result = dart.strongInstanceOf(obj, type);
+ if (result !== null) return result;
+ let actual = dart.getReifiedType(obj);
+ dart.throwStrongModeError('Strong mode is-check failure: ' + dart.typeName(actual) + ' does not soundly subtype ' + dart.typeName(type));
};
- dart._getRuntimeType = function(value) {
- return value[dart._runtimeType];
+ dart.as = function(obj, type) {
+ if (type == dart.dynamic || obj == null) return obj;
+ let result = dart.strongInstanceOf(obj, type, true);
+ if (result) return obj;
+ dart._throwCastError(obj, type, result);
};
- dart.tag = function(value, t) {
- value[dart._runtimeType] = t;
+ dart.check = function(obj, type) {
+ if (type == dart.dynamic || obj == null) return obj;
+ let result = dart.strongInstanceOf(obj, type, true);
+ if (result) return obj;
+ dart._throwTypeError(obj, type, result);
+ };
+ dart.test = function(obj) {
+ if (typeof obj == 'boolean') return obj;
+ return dart.booleanConversionFailed(obj);
+ };
+ dart.booleanConversionFailed = function(obj) {
+ if (obj == null) {
+ dart.throw(new _js_helper.BooleanConversionAssertionError());
+ }
+ let actual = dart.getReifiedType(obj);
+ let expected = core.bool;
+ dart.throw(new _js_helper.TypeErrorImplementation.fromMessage(dart.str`type '${dart.typeName(actual)}' is not a subtype of ` + dart.str`type '${dart.typeName(expected)}' in boolean expression`));
+ };
+ dart._throwCastError = function(obj, type, result) {
+ let actual = dart.getReifiedType(obj);
+ if (result == false) dart.throwCastError(obj, actual, type);
+ dart.throwStrongModeCastError(obj, actual, type);
};
- dart.tagComputed = function(value, compute) {
- dart.defineProperty(value, dart._runtimeType, {get: compute});
+ dart._throwTypeError = function(obj, type, result) {
+ let actual = dart.getReifiedType(obj);
+ if (result == false) dart.throwTypeError(obj, actual, type);
+ dart.throwStrongModeTypeError(obj, actual, type);
};
- dart.tagLazy = function(value, compute) {
- dart.defineLazyProperty(value, dart._runtimeType, {get: compute});
+ dart.asInt = function(obj) {
+ if (obj == null) return null;
+ if (Math.floor(obj) != obj) {
+ dart.throwCastError(obj, dart.getReifiedType(obj), core.int);
+ }
+ return obj;
};
- dart._initialize2 = function() {
- dart.TypeRep.prototype.is = function is_T(object) {
+ dart.addSimpleTypeTests = function(ctor) {
+ ctor.is = function is_C(object) {
+ if (object instanceof this) return true;
return dart.is(object, this);
};
- dart.TypeRep.prototype.as = function as_T(object) {
+ ctor.as = function as_C(object) {
+ if (object instanceof this) return object;
return dart.as(object, this);
};
- dart.TypeRep.prototype._check = function check_T(object) {
+ ctor._check = function check_C(object) {
+ if (object instanceof this) return object;
return dart.check(object, this);
};
- dart.Dynamic.prototype.is = function is_Dynamic(object) {
- return true;
+ };
+ dart.addTypeTests = function(ctor) {
+ ctor.as = function as_G(object) {
+ return dart.as(object, this);
};
- dart.Dynamic.prototype.as = function as_Dynamic(object) {
- return object;
+ ctor.is = function is_G(object) {
+ return dart.is(object, this);
};
- dart.Dynamic.prototype._check = function check_Dynamic(object) {
- return object;
+ ctor._check = function check_G(object) {
+ return dart.check(object, this);
};
};
- dart._functionType = function(definite, returnType, args, extra) {
- if (args === void 0 && extra === void 0) {
- const fnTypeParts = returnType;
- function makeGenericFnType(...types) {
- let parts = fnTypeParts.apply(null, types);
- return dart.FunctionType.create(definite, parts[0], parts[1], parts[2]);
- }
- makeGenericFnType[dart._typeFormalCount] = fnTypeParts.length;
- return makeGenericFnType;
- }
- return dart.FunctionType.create(definite, returnType, args, extra);
- };
- dart.functionType = function(returnType, args, extra) {
- return dart._functionType(false, returnType, args, extra);
+ dart.equals = function(x, y) {
+ if (x == null || y == null) return x == y;
+ let eq = x['=='];
+ return eq ? eq.call(x, y) : x === y;
};
- dart.definiteFunctionType = function(returnType, args, extra) {
- return dart._functionType(true, returnType, args, extra);
+ dart.notNull = function(x) {
+ if (x == null) dart.throwNullValueError();
+ return x;
};
- dart.typedef = function(name, closure) {
- return new dart.Typedef(name, closure);
+ dart.map = function(values, K, V) {
+ if (K === void 0) K = null;
+ if (V === void 0) V = null;
+ return (() => {
+ if (K == null) K = dart.dynamic;
+ if (V == null) V = dart.dynamic;
+ let map = dart.getGenericClass(collection.LinkedHashMap)(K, V).new();
+ if (Array.isArray(values)) {
+ for (let i = 0, end = values.length - 1; i < end; i += 2) {
+ let key = values[i];
+ let value = values[i + 1];
+ map.set(key, value);
+ }
+ } else if (typeof values === 'object') {
+ for (let key of dart.getOwnPropertyNames(values)) {
+ map.set(key, values[key]);
+ }
+ }
+ return map;
+ })();
};
- dart.isDartType = function(type) {
- return dart._getRuntimeType(type) === core.Type;
+ dart.assert = function(condition) {
+ if (!condition) dart.throwAssertionError();
};
- dart.typeName = function(type) {
- if (type === void 0) return "undefined type";
- if (type === null) return "null type";
- if (type instanceof dart.TypeRep) {
- if (type instanceof dart.Typedef) {
- return type.name + "(" + type.functionType.toString() + ")";
- }
- return type.toString();
- }
- let tag = dart._getRuntimeType(type);
- if (tag === core.Type) {
- let name = type.name;
- let args = dart.getGenericArgs(type);
- if (!args) return name;
- let result = name;
- let allDynamic = true;
- result += '<';
- for (let i = 0; i < args.length; ++i) {
- if (i > 0) result += ', ';
- let argName = dart.typeName(args[i]);
- if (argName != 'dynamic') allDynamic = false;
- result += argName;
- }
- result += '>';
- if (allDynamic) return name;
- return result;
+ dart.throw = function(obj) {
+ if (obj != null && (typeof obj == 'object' || typeof obj == 'function')) {
+ dart._stack.set(obj, new Error());
}
- if (tag) return "Not a type: " + tag.name;
- return "JSObject<" + type.name + ">";
+ throw obj;
};
- dart.getImplicitFunctionType = function(type) {
- if (dart.test(dart.isFunctionType(type))) return type;
- return dart.getMethodTypeFromType(type, 'call');
+ dart.getError = function(exception) {
+ var stack = dart._stack.get(exception);
+ return stack !== void 0 ? stack : exception;
};
- dart.isFunctionType = function(type) {
- return type instanceof dart.AbstractFunctionType || type === core.Function;
+ dart.stackPrint = function(exception) {
+ var error = dart.getError(exception);
+ console.log(error.stack ? error.stack : 'No stack trace for: ' + error);
};
- dart.isFunctionSubtype = function(ft1, ft2, covariant) {
- if (ft2 === core.Function) {
- return true;
- }
- if (ft1 === core.Function) {
- return false;
- }
- let ret1 = ft1.returnType;
- let ret2 = ft2.returnType;
- let args1 = ft1.args;
- let args2 = ft2.args;
- if (args1.length > args2.length) {
- return covariant ? false : null;
+ dart.stackTrace = function(exception) {
+ var error = dart.getError(exception);
+ return _js_helper.getTraceFromException(error);
+ };
+ dart.nullSafe = function(obj, ...callbacks) {
+ if (obj == null) return obj;
+ for (const callback of callbacks) {
+ obj = callback(obj);
+ if (obj == null) break;
}
- for (let i = 0; i < args1.length; ++i) {
- if (!dart._isSubtype(args2[i], args1[i], !covariant)) {
- return null;
+ return obj;
+ };
+ dart.multiKeyPutIfAbsent = function(map, keys, valueFn) {
+ for (let k of keys) {
+ let value = map.get(k);
+ if (!value) {
+ map.set(k, value = new Map());
}
+ map = value;
}
- let optionals1 = ft1.optionals;
- let optionals2 = ft2.optionals;
- if (args1.length + optionals1.length < args2.length + optionals2.length) {
- return covariant ? false : null;
+ if (map.has(dart._value)) return map.get(dart._value);
+ let value = valueFn();
+ map.set(dart._value, value);
+ return value;
+ };
+ dart.const = function(obj) {
+ function lookupNonTerminal(map, key) {
+ let result = map.get(key);
+ if (result !== void 0) return result;
+ map.set(key, result = new Map());
+ return result;
}
- let j = 0;
- for (let i = args1.length; i < args2.length; ++i, ++j) {
- if (!dart._isSubtype(args2[i], optionals1[j], !covariant)) {
- return null;
- }
+ let names = dart.getOwnNamesAndSymbols(obj);
+ let count = names.length;
+ let map = lookupNonTerminal(dart.constants, count);
+ for (let i = 0; i < count; i++) {
+ let name = names[i];
+ map = lookupNonTerminal(map, name);
+ map = lookupNonTerminal(map, obj[name]);
}
- for (let i = 0; i < optionals2.length; ++i, ++j) {
- if (!dart._isSubtype(optionals2[i], optionals1[j], !covariant)) {
- return null;
- }
+ let type = dart.getReifiedType(obj);
+ let value = map.get(type);
+ if (value) return value;
+ map.set(type, obj);
+ return obj;
+ };
+ dart.constList = function(elements, elementType) {
+ function lookupNonTerminal(map, key) {
+ let result = map.get(key);
+ if (result !== void 0) return result;
+ map.set(key, result = new Map());
+ return result;
}
- let named1 = ft1.named;
- let named2 = ft2.named;
- let names = dart.getOwnPropertyNames(named2);
- for (let i = 0; i < names.length; ++i) {
- let name = names[i];
- let n1 = named1[name];
- let n2 = named2[name];
- if (n1 === void 0) {
- return covariant ? false : null;
- }
- if (!dart._isSubtype(n2, n1, !covariant)) {
- return null;
- }
+ let count = elements.length;
+ let map = lookupNonTerminal(dart.constantLists, count);
+ for (let i = 0; i < count; i++) {
+ map = lookupNonTerminal(map, elements[i]);
}
- if (ret2 === dart.void) return true;
- if (ret1 === dart.void) return ret2 === dart.dynamic;
- if (!dart._isSubtype(ret1, ret2, covariant)) return null;
- return true;
+ let value = map.get(elementType);
+ if (value) return value;
+ value = dart.list(elements, elementType);
+ map.set(elementType, value);
+ return value;
};
- dart._subtypeMemo = function(f) {
- let memo = new Map();
- return (t1, t2) => {
- let map = memo.get(t1);
- let result;
- if (map) {
- result = map.get(t2);
- if (result !== void 0) return result;
- } else {
- memo.set(t1, map = new Map());
+ dart.hashCode = function(obj) {
+ if (obj == null) return 0;
+ switch (typeof obj) {
+ case "number":
+ {
+ return obj & 0x1FFFFFFF;
+ }
+ case "boolean":
+ {
+ return obj ? 2 * 3 * 23 * 3761 : 269 * 811;
+ }
+ case "function":
+ {
+ return _js_helper.Primitives.objectHashCode(obj);
}
- result = f(t1, t2);
- map.set(t2, result);
- return result;
- };
- };
- dart._isBottom = function(type) {
- return type == dart.bottom;
- };
- dart._isTop = function(type) {
- return type == core.Object || type == dart.dynamic;
- };
- dart._isSubtype = function(t1, t2, covariant) {
- if (t1 === t2) return true;
- if (dart._isTop(t2) || dart._isBottom(t1)) {
- return true;
}
- if (dart._isBottom(t2)) return null;
- if (dart._isTop(t1)) {
- if (t1 === dart.dynamic) return null;
- return false;
+ let extension = dart.getExtensionType(obj);
+ if (extension != null) {
+ return obj[dartx.hashCode];
}
- if (!(t1 instanceof dart.AbstractFunctionType) && !(t2 instanceof dart.AbstractFunctionType)) {
- let result = dart.isClassSubType(t1, t2, covariant);
- if (result === true || result === null) return result;
+ return obj.hashCode;
+ };
+ dart.toString = function(obj) {
+ if (obj == null) return "null";
+ let extension = dart.getExtensionType(obj);
+ if (extension != null) {
+ return obj[dartx.toString]();
}
- t1 = dart.getImplicitFunctionType(t1);
- if (!t1) return false;
- if (dart.isFunctionType(t1) && dart.isFunctionType(t2)) {
- return dart.isFunctionSubtype(t1, t2, covariant);
+ if (typeof obj == "function") {
+ return "Closure: " + dart.getReifiedType(obj) + " from: " + obj;
}
- return false;
+ return obj.toString();
};
- dart.isClassSubType = function(t1, t2, covariant) {
- if (t1 == t2) return true;
- if (t1 == core.Object) return false;
- if (t1 == null) return t2 == core.Object || t2 == dart.dynamic;
- let raw1 = dart.getGenericClass(t1);
- let raw2 = dart.getGenericClass(t2);
- if (raw1 != null && raw1 == raw2) {
- let typeArguments1 = dart.getGenericArgs(t1);
- let typeArguments2 = dart.getGenericArgs(t2);
- let length = typeArguments1.length;
- if (typeArguments2.length == 0) {
- return true;
- } else if (length == 0) {
- if (typeArguments2.every(dart._isTop)) return true;
- return null;
- }
- dart.assert(length == typeArguments2.length);
- for (let i = 0; i < length; ++i) {
- let result = dart._isSubtype(typeArguments1[i], typeArguments2[i], covariant);
- if (!result) {
- return result;
- }
- }
- return true;
+ dart.noSuchMethod = function(obj, invocation) {
+ if (obj == null || typeof obj == "function") {
+ dart.throw(new core.NoSuchMethodError(obj, invocation.memberName, invocation.positionalArguments, invocation.namedArguments));
}
- let indefinite = false;
- function definitive(t1, t2) {
- let result = dart.isClassSubType(t1, t2, covariant);
- if (result == null) {
- indefinite = true;
- return false;
- }
- return result;
+ let extension = dart.getExtensionType(obj);
+ if (extension != null) {
+ return obj[dartx.noSuchMethod](invocation);
}
- if (definitive(t1.__proto__, t2)) return true;
- let mixins = dart.getMixins(t1);
- if (mixins) {
- for (let m1 of mixins) {
- if (m1 != null && definitive(m1, t2)) return true;
- }
+ return obj.noSuchMethod(invocation);
+ };
+ dart.constFn = function(x) {
+ return () => x;
+ };
+ dart.runtimeType = function(obj) {
+ let result = dart._checkPrimitiveType(obj);
+ if (result != null) return dart.wrapType(result);
+ let extension = dart.getExtensionType(obj);
+ if (extension != null) {
+ return obj[dartx.runtimeType];
}
- let getInterfaces = dart.getImplements(t1);
- if (getInterfaces) {
- for (let i1 of getInterfaces()) {
- if (i1 != null && definitive(i1, t2)) return true;
- }
+ if (typeof obj == "function") {
+ return dart.wrapType(dart.getReifiedType(obj));
}
- if (indefinite) return null;
- return false;
+ return obj.runtimeType;
};
- dart.isGroundType = function(type) {
- if (type instanceof dart.AbstractFunctionType) {
- if (!dart._isTop(type.returnType)) return false;
- for (let i = 0; i < type.args.length; ++i) {
- if (!dart._isBottom(type.args[i])) return false;
- }
- for (let i = 0; i < type.optionals.length; ++i) {
- if (!dart._isBottom(type.optionals[i])) return false;
- }
- let names = dart.getOwnPropertyNames(type.named);
- for (let i = 0; i < names.length; ++i) {
- if (!dart._isBottom(type.named[names[i]])) return false;
- }
- return true;
+ dart.str = function(strings, ...values) {
+ let s = strings[0];
+ for (let i = 0, len = values.length; i < len;) {
+ s += dart.notNull(dart.toString(values[i])) + strings[++i];
}
- let typeArgs = dart.getGenericArgs(type);
- if (!typeArgs) return true;
- for (let t of typeArgs) {
- if (t != core.Object && t != dart.dynamic) return false;
+ return s;
+ };
+ dart._canonicalMember = function(obj, name) {
+ if (typeof name === "symbol") return name;
+ if (obj != null && dart.getExtensionType(obj) != null) {
+ return dartx[name];
}
- return true;
+ if (dart.equals(name, 'constructor') || dart.equals(name, 'prototype')) {
+ name = '+' + dart.notNull(core.String._check(name));
+ }
+ return name;
};
dart.defineProperty = function(obj, name, desc) {
return Object.defineProperty(obj, name, desc);
@@ -1783,198 +1793,58 @@ dart_library.library('dart_sdk', null, /* Imports */[
if (init == null) return value;
let f = init;
init = circularInitError;
- lazySetter(f());
- return value;
- }
- desc.get = lazyGetter;
- desc.configurable = true;
- if (desc.set) desc.set = lazySetter;
- return dart.defineProperty(to, name, desc);
- };
- dart.defineLazy = function(to, from) {
- for (let name of dart.getOwnNamesAndSymbols(from)) {
- dart.defineLazyProperty(to, name, dart.getOwnPropertyDescriptor(from, name));
- }
- };
- dart.defineMemoizedGetter = function(obj, name, getter) {
- return dart.defineLazyProperty(obj, name, {get: getter});
- };
- dart.copyTheseProperties = function(to, from, names) {
- for (let i = 0; i < names.length; ++i) {
- dart.copyProperty(to, from, names[i]);
- }
- return to;
- };
- dart.copyProperty = function(to, from, name) {
- let desc = dart.getOwnPropertyDescriptor(from, name);
- if (name == Symbol.iterator) {
- let existing = dart.getOwnPropertyDescriptor(to, name);
- if (existing != null) {
- if (existing.writable) {
- to[name] = desc.value;
- }
- return;
- }
- }
- dart.defineProperty(to, name, desc);
- };
- dart.export = function(to, from, name) {
- return dart.copyProperty(to, from, name);
- };
- dart.copyProperties = function(to, from) {
- return dart.copyTheseProperties(to, from, dart.getOwnNamesAndSymbols(from));
- };
- dart.global = typeof window == "undefined" ? global : window;
- dart.JsSymbol = Symbol;
- dart._mixins = Symbol("mixins");
- dart.implements = Symbol("implements");
- dart._typeArguments = Symbol("typeArguments");
- dart._originalDeclaration = Symbol("originalDeclaration");
- dart._constructorSig = Symbol("sigCtor");
- dart._methodSig = Symbol("sig");
- dart._staticSig = Symbol("sigStatic");
- dart._extensionType = Symbol("extensionType");
- dart.dartx = dartx;
- dart._jsIterator = Symbol("_jsIterator");
- dart._current = Symbol("_current");
- dart._AsyncStarStreamController = class _AsyncStarStreamController {
- constructor(generator, T, args) {
- this.isAdding = false;
- this.isWaiting = false;
- this.isScheduled = false;
- this.isSuspendedAtYield = false;
- this.canceler = null;
- this.iterator = generator(this, ...args)[Symbol.iterator]();
- this.controller = dart.getGenericClass(async.StreamController)(T).new({
- onListen: () => this.scheduleGenerator(),
- onResume: () => this.onResume(),
- onCancel: () => this.onCancel()
- });
- }
- onResume() {
- if (this.isSuspendedAtYield) {
- this.scheduleGenerator();
- }
- }
- onCancel() {
- if (this.controller.isClosed) {
- return null;
- }
- if (this.canceler == null) {
- this.canceler = async.Completer.new();
- this.scheduleGenerator();
- }
- return this.canceler.future;
- }
- close() {
- if (this.canceler != null && !this.canceler.isCompleted) {
- this.canceler.complete();
- }
- this.controller.close();
- }
- scheduleGenerator() {
- if (this.isScheduled || this.controller.isPaused || this.isAdding || this.isWaiting) {
- return;
- }
- this.isScheduled = true;
- async.scheduleMicrotask(() => this.runBody());
- }
- runBody(opt_awaitValue) {
- this.isScheduled = false;
- this.isSuspendedAtYield = false;
- this.isWaiting = false;
- let iter;
- try {
- iter = this.iterator.next(opt_awaitValue);
- } catch (e) {
- this.addError(e, dart.stackTrace(e));
- this.close();
- return;
- }
-
- if (iter.done) {
- this.close();
- return;
- }
- if (this.isSuspendedAtYield || this.isAdding) return;
- this.isWaiting = true;
- let future = iter.value;
- if (!dart.is(future, dart.getGenericClass(async.Future))) {
- future = async.Future.value(future);
- }
- return future.then(dart.dynamic)(x => this.runBody(x), {
- onError: (e, s) => this.throwError(e, s)
- });
- }
- add(event) {
- if (!this.controller.hasListener) return true;
- this.controller.add(event);
- this.scheduleGenerator();
- this.isSuspendedAtYield = true;
- return false;
+ lazySetter(f());
+ return value;
}
- addStream(stream) {
- if (!this.controller.hasListener) return true;
- this.isAdding = true;
- this.controller.addStream(stream, {cancelOnError: false}).then(dart.dynamic)(() => {
- this.isAdding = false;
- this.scheduleGenerator();
- }, {
- onError: (e, s) => this.throwError(e, s)
- });
+ desc.get = lazyGetter;
+ desc.configurable = true;
+ if (desc.set) desc.set = lazySetter;
+ return dart.defineProperty(to, name, desc);
+ };
+ dart.defineLazy = function(to, from) {
+ for (let name of dart.getOwnNamesAndSymbols(from)) {
+ dart.defineLazyProperty(to, name, dart.getOwnPropertyDescriptor(from, name));
}
- throwError(error, stackTrace) {
- try {
- this.iterator.throw(error);
- } catch (e) {
- this.addError(e, stackTrace);
- }
-
+ };
+ dart.defineMemoizedGetter = function(obj, name, getter) {
+ return dart.defineLazyProperty(obj, name, {get: getter});
+ };
+ dart.copyTheseProperties = function(to, from, names) {
+ for (let i = 0; i < names.length; ++i) {
+ dart.copyProperty(to, from, names[i]);
}
- addError(error, stackTrace) {
- if (this.canceler != null && !this.canceler.isCompleted) {
- this.canceler.completeError(error, stackTrace);
+ return to;
+ };
+ dart.copyProperty = function(to, from, name) {
+ let desc = dart.getOwnPropertyDescriptor(from, name);
+ if (name == Symbol.iterator) {
+ let existing = dart.getOwnPropertyDescriptor(to, name);
+ if (existing != null) {
+ if (existing.writable) {
+ to[name] = desc.value;
+ }
return;
}
- if (!this.controller.hasListener) return;
- this.controller.addError(error, stackTrace);
}
+ dart.defineProperty(to, name, desc);
};
- dart.defineLazy(dart, {
- get _callMethodStats() {
- return MapOfString$int().new();
- },
- set _callMethodStats(_) {}
- });
- dart.defineLazy(dart, {
- get trackProfile() {
- return dart.global.trackDdcProfile;
- },
- set trackProfile(_) {}
- });
- dart._ignoreTypeFailure = (() => {
- return dart._ignoreMemo((actual, type) => {
- if (!!dart.isSubtype(type, core.Iterable) && !!dart.isSubtype(actual, core.Iterable) || !!dart.isSubtype(type, async.Future) && !!dart.isSubtype(actual, async.Future) || !!dart.isSubtype(type, core.Map) && !!dart.isSubtype(actual, core.Map) || dart.isFunctionType(type) && dart.isFunctionType(actual) || !!dart.isSubtype(type, async.Stream) && !!dart.isSubtype(actual, async.Stream) || !!dart.isSubtype(type, async.StreamSubscription) && !!dart.isSubtype(actual, async.StreamSubscription)) {
- console.warn('Ignoring cast fail from ' + dart.typeName(actual) + ' to ' + dart.typeName(type));
- return true;
- }
- return false;
- });
- })();
- dart._stack = new WeakMap();
- dart._value = Symbol("_value");
- dart.constants = new Map();
- dart.constantLists = new Map();
- dart.JsIterator = class JsIterator {
- constructor(dartIterator) {
- this.dartIterator = dartIterator;
- }
- next() {
- let i = this.dartIterator;
- let done = !i.moveNext();
- return {done: done, value: done ? void 0 : i.current};
- }
+ dart.export = function(to, from, name) {
+ return dart.copyProperty(to, from, name);
+ };
+ dart.copyProperties = function(to, from) {
+ return dart.copyTheseProperties(to, from, dart.getOwnNamesAndSymbols(from));
};
+ dart.global = typeof window == "undefined" ? global : window;
+ dart.JsSymbol = Symbol;
+ dart._mixins = Symbol("mixins");
+ dart.implements = Symbol("implements");
+ dart._typeArguments = Symbol("typeArguments");
+ dart._originalDeclaration = Symbol("originalDeclaration");
+ dart._constructorSig = Symbol("sigCtor");
+ dart._methodSig = Symbol("sig");
+ dart._staticSig = Symbol("sigStatic");
+ dart._extensionType = Symbol("extensionType");
+ dart.dartx = dartx;
dart._runtimeType = Symbol("_runtimeType");
dart.metadata = Symbol("metadata");
dart._typeObject = Symbol("typeObject");
@@ -2069,13 +1939,13 @@ dart_library.library('dart_sdk', null, /* Imports */[
}
};
dart.jsobject = new dart.JSObject();
- dart.WrappedType = class WrappedType extends dart.TypeRep {
- new(runtimeType) {
- this[_runtimeType] = runtimeType;
- super.new();
+ core.Type = class Type extends core.Object {};
+ dart.WrappedType = class WrappedType extends core.Type {
+ new(wrappedType) {
+ this[_wrappedType] = wrappedType;
}
toString() {
- return core.String._check(dart.typeName(this[_runtimeType]));
+ return core.String._check(dart.typeName(this[_wrappedType]));
}
};
dart.setSignature(dart.WrappedType, {
@@ -2266,6 +2136,174 @@ dart_library.library('dart_sdk', null, /* Imports */[
};
dart._typeFormalCount = Symbol("_typeFormalCount");
dart.isSubtype = dart._subtypeMemo((t1, t2) => t1 === t2 || dart._isSubtype(t1, t2, true));
+ dart._jsIterator = Symbol("_jsIterator");
+ dart._current = Symbol("_current");
+ dart._AsyncStarStreamController = class _AsyncStarStreamController {
+ constructor(generator, T, args) {
+ this.isAdding = false;
+ this.isWaiting = false;
+ this.isScheduled = false;
+ this.isSuspendedAtYield = false;
+ this.canceler = null;
+ this.iterator = generator(this, ...args)[Symbol.iterator]();
+ this.controller = dart.getGenericClass(async.StreamController)(T).new({
+ onListen: () => this.scheduleGenerator(),
+ onResume: () => this.onResume(),
+ onCancel: () => this.onCancel()
+ });
+ }
+ onResume() {
+ if (this.isSuspendedAtYield) {
+ this.scheduleGenerator();
+ }
+ }
+ onCancel() {
+ if (this.controller.isClosed) {
+ return null;
+ }
+ if (this.canceler == null) {
+ this.canceler = async.Completer.new();
+ this.scheduleGenerator();
+ }
+ return this.canceler.future;
+ }
+ close() {
+ if (this.canceler != null && !this.canceler.isCompleted) {
+ this.canceler.complete();
+ }
+ this.controller.close();
+ }
+ scheduleGenerator() {
+ if (this.isScheduled || this.controller.isPaused || this.isAdding || this.isWaiting) {
+ return;
+ }
+ this.isScheduled = true;
+ async.scheduleMicrotask(() => this.runBody());
+ }
+ runBody(opt_awaitValue) {
+ this.isScheduled = false;
+ this.isSuspendedAtYield = false;
+ this.isWaiting = false;
+ let iter;
+ try {
+ iter = this.iterator.next(opt_awaitValue);
+ } catch (e) {
+ this.addError(e, dart.stackTrace(e));
+ this.close();
+ return;
+ }
+
+ if (iter.done) {
+ this.close();
+ return;
+ }
+ if (this.isSuspendedAtYield || this.isAdding) return;
+ this.isWaiting = true;
+ let future = iter.value;
+ if (!dart.is(future, dart.getGenericClass(async.Future))) {
+ future = async.Future.value(future);
+ }
+ return future.then(dart.dynamic)(x => this.runBody(x), {
+ onError: (e, s) => this.throwError(e, s)
+ });
+ }
+ add(event) {
+ if (!this.controller.hasListener) return true;
+ this.controller.add(event);
+ this.scheduleGenerator();
+ this.isSuspendedAtYield = true;
+ return false;
+ }
+ addStream(stream) {
+ if (!this.controller.hasListener) return true;
+ this.isAdding = true;
+ this.controller.addStream(stream, {cancelOnError: false}).then(dart.dynamic)(() => {
+ this.isAdding = false;
+ this.scheduleGenerator();
+ }, {
+ onError: (e, s) => this.throwError(e, s)
+ });
+ }
+ throwError(error, stackTrace) {
+ try {
+ this.iterator.throw(error);
+ } catch (e) {
+ this.addError(e, stackTrace);
+ }
+
+ }
+ addError(error, stackTrace) {
+ if (this.canceler != null && !this.canceler.isCompleted) {
+ this.canceler.completeError(error, stackTrace);
+ return;
+ }
+ if (!this.controller.hasListener) return;
+ this.controller.addError(error, stackTrace);
+ }
+ };
+ core.Invocation = class Invocation extends core.Object {
+ get isAccessor() {
+ return dart.test(this.isGetter) || dart.test(this.isSetter);
+ }
+ };
+ dart._Invocation = class _Invocation extends core.Invocation {
+ new(memberName, positionalArguments, opts) {
+ let namedArguments = opts && 'namedArguments' in opts ? opts.namedArguments : null;
+ let isMethod = opts && 'isMethod' in opts ? opts.isMethod : false;
+ let isGetter = opts && 'isGetter' in opts ? opts.isGetter : false;
+ let isSetter = opts && 'isSetter' in opts ? opts.isSetter : false;
+ this.positionalArguments = positionalArguments;
+ this.isMethod = isMethod;
+ this.isGetter = isGetter;
+ this.isSetter = isSetter;
+ this.memberName = dart._dartSymbol(memberName);
+ this.namedArguments = dart._Invocation._namedArgsToSymbols(namedArguments);
+ }
+ static _namedArgsToSymbols(namedArgs) {
+ if (namedArgs == null) return dart.map();
+ return MapOfSymbol$dynamic().fromIterable(dart.getOwnPropertyNames(namedArgs), {key: dart._dartSymbol, value: dart.fn(k => namedArgs[k], dynamicTodynamic$())});
+ }
+ };
+ dart.setSignature(dart._Invocation, {
+ constructors: () => ({new: dart.definiteFunctionType(dart._Invocation, [core.String, core.List], {namedArguments: dart.dynamic, isMethod: core.bool, isGetter: core.bool, isSetter: core.bool})}),
+ statics: () => ({_namedArgsToSymbols: dart.definiteFunctionType(core.Map$(core.Symbol, dart.dynamic), [dart.dynamic])}),
+ names: ['_namedArgsToSymbols']
+ });
+ dart.defineLazy(dart, {
+ get _callMethodStats() {
+ return MapOfString$int().new();
+ },
+ set _callMethodStats(_) {}
+ });
+ dart.defineLazy(dart, {
+ get trackProfile() {
+ return dart.global.trackDdcProfile;
+ },
+ set trackProfile(_) {}
+ });
+ dart._ignoreTypeFailure = (() => {
+ return dart._ignoreMemo((actual, type) => {
+ if (!!dart.isSubtype(type, core.Iterable) && !!dart.isSubtype(actual, core.Iterable) || !!dart.isSubtype(type, async.Future) && !!dart.isSubtype(actual, async.Future) || !!dart.isSubtype(type, core.Map) && !!dart.isSubtype(actual, core.Map) || dart.isFunctionType(type) && dart.isFunctionType(actual) || !!dart.isSubtype(type, async.Stream) && !!dart.isSubtype(actual, async.Stream) || !!dart.isSubtype(type, async.StreamSubscription) && !!dart.isSubtype(actual, async.StreamSubscription)) {
+ console.warn('Ignoring cast fail from ' + dart.typeName(actual) + ' to ' + dart.typeName(type));
+ return true;
+ }
+ return false;
+ });
+ })();
+ dart._stack = new WeakMap();
+ dart._value = Symbol("_value");
+ dart.constants = new Map();
+ dart.constantLists = new Map();
+ dart.JsIterator = class JsIterator {
+ constructor(dartIterator) {
+ this.dartIterator = dartIterator;
+ }
+ next() {
+ let i = this.dartIterator;
+ let done = !i.moveNext();
+ return {done: done, value: done ? void 0 : i.current};
+ }
+ };
dart.hasOwnProperty = Object.prototype.hasOwnProperty;
_debugger.JsonMLConfig = class JsonMLConfig extends core.Object {
new(name) {
@@ -2896,7 +2934,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
dart.fn(_foreign_helper.JS_DART_OBJECT_CONSTRUCTOR, VoidTodynamic$());
_foreign_helper.JS_INTERCEPTOR_CONSTANT = function(type) {
};
- dart.lazyFn(_foreign_helper.JS_INTERCEPTOR_CONSTANT, () => TypeTodynamic());
+ dart.fn(_foreign_helper.JS_INTERCEPTOR_CONSTANT, TypeTodynamic());
_foreign_helper.JS_OPERATOR_IS_PREFIX = function() {
};
dart.lazyFn(_foreign_helper.JS_OPERATOR_IS_PREFIX, () => VoidToString$());
@@ -3054,7 +3092,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
});
_interceptors.findInterceptorConstructorForType = function(type) {
};
- dart.lazyFn(_interceptors.findInterceptorConstructorForType, () => TypeTodynamic());
+ dart.fn(_interceptors.findInterceptorConstructorForType, TypeTodynamic());
_interceptors.findConstructorForNativeSubclassType = function(type, name) {
};
dart.lazyFn(_interceptors.findConstructorForNativeSubclassType, () => TypeAndStringTodynamic());
@@ -11933,7 +11971,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
_js_helper.getRuntimeType = function(object) {
return dart.getReifiedType(object);
};
- dart.lazyFn(_js_helper.getRuntimeType, () => dynamicToType());
+ dart.fn(_js_helper.getRuntimeType, dynamicToType());
_js_helper.getIndex = function(array, index) {
dart.assert(_js_helper.isJsArray(array));
return array[index];
@@ -30362,11 +30400,6 @@ dart_library.library('dart_sdk', null, /* Imports */[
return _js_helper.objectHashCode(object);
};
dart.fn(core.identityHashCode, ObjectToint());
- core.Invocation = class Invocation extends core.Object {
- get isAccessor() {
- return dart.test(this.isGetter) || dart.test(this.isSetter);
- }
- };
core._Generator$ = dart.generic(E => {
const _Generator = dart.typedef('_Generator', () => dart.functionType(E, [core.int]));
return _Generator;
@@ -30930,7 +30963,6 @@ dart_library.library('dart_sdk', null, /* Imports */[
dart.setSignature(core.Symbol, {
constructors: () => ({new: dart.definiteFunctionType(core.Symbol, [core.String])})
});
- core.Type = class Type extends core.Object {};
const _userInfo = Symbol('_userInfo');
const _host = Symbol('_host');
const _port = Symbol('_port');
« no previous file with comments | « no previous file | lib/src/compiler/code_generator.dart » ('j') | lib/src/compiler/code_generator.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698