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

Unified Diff: lib/runtime/dart_sdk.js

Side-by-side diff isn't available for this file because of its large size.
Issue 1962823002: fix #552, Object members on native types (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 4 years, 7 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 | « .gitignore ('k') | lib/src/compiler/code_generator.dart » ('j') | no next file with comments »
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 00c6d362ff83b9c9ed63444f12008b51220f99a6..9a5d0a71252a4e3c9d53335ac9ceb34444e7916b 100644
--- a/lib/runtime/dart_sdk.js
+++ b/lib/runtime/dart_sdk.js
@@ -30,8 +30,6 @@ dart_library.library('dart_sdk', null, /* Imports */[
const web_audio = Object.create(null);
const web_gl = Object.create(null);
const web_sql = Object.create(null);
- dart.global = typeof window == "undefined" ? global : window;
- dart.JsSymbol = Symbol;
dart.mixin = function(base, ...mixins) {
class Mixin extends base {
[base.name](...args) {
@@ -65,8 +63,6 @@ dart_library.library('dart_sdk', null, /* Imports */[
dart.getImplements = function(clazz) {
return clazz[dart.implements];
};
- dart._typeArguments = Symbol("typeArguments");
- dart._originalDeclaration = Symbol("originalDeclaration");
dart.generic = function(typeConstructor) {
let length = typeConstructor.length;
if (length < 1) {
@@ -110,9 +106,6 @@ dart_library.library('dart_sdk', null, /* Imports */[
dart.getGenericArgs = function(type) {
return dart.safeGetOwnProperty(type, dart._typeArguments);
};
- dart._constructorSig = Symbol("sigCtor");
- dart._methodSig = Symbol("sig");
- dart._staticSig = Symbol("sigStatic");
dart.getMethodType = function(obj, name) {
let type = obj == null ? core.Object : obj.__proto__.constructor;
return dart.getMethodTypeFromType(type, name);
@@ -193,21 +186,30 @@ dart_library.library('dart_sdk', null, /* Imports */[
ctor.prototype = proto;
dart.defineProperty(clazz, name, {value: ctor, configurable: true});
};
- dart._extensionType = Symbol("extensionType");
dart.getExtensionType = function(obj) {
return obj[dart._extensionType];
};
- dart.dartx = dartx;
dart.getExtensionSymbol = function(name) {
- let sym = dart.dartx[name];
- if (!sym) dart.dartx[name] = sym = Symbol('dartx.' + name.toString());
+ let sym = dartx[name];
+ if (sym == null) {
+ sym = Symbol("dartx." + name.toString());
+ dartx[name] = sym;
+ }
return sym;
};
dart.defineExtensionNames = function(names) {
return names.forEach(dart.getExtensionSymbol);
};
dart._installProperties = function(jsProto, extProto) {
- if (extProto !== core.Object.prototype && extProto !== jsProto) {
+ let coreObjProto = core.Object.prototype;
+ if (extProto === coreObjProto) {
+ for (let name of dart.getOwnPropertyNames(coreObjProto)) {
+ let desc = dart.getOwnPropertyDescriptor(coreObjProto, name);
+ dart.defineProperty(jsProto, dart.getExtensionSymbol(name), desc);
+ }
+ return;
+ }
+ if (jsProto !== extProto) {
dart._installProperties(jsProto, extProto.__proto__);
}
dart.copyTheseProperties(jsProto, extProto, dart.getOwnPropertySymbols(extProto));
@@ -266,8 +268,6 @@ dart_library.library('dart_sdk', null, /* Imports */[
dart.throwNullValueError = function() {
dart.throw(new core.NoSuchMethodError(null, new core.Symbol('<Unexpected Null Value>'), null, null, null));
};
- dart._jsIterator = Symbol("_jsIterator");
- dart._current = Symbol("_current");
dart.syncStar = function(gen, E, ...args) {
const SyncIterable_E = dart.getGenericClass(_js_helper.SyncIterable)(E);
return new SyncIterable_E(gen, args);
@@ -294,109 +294,6 @@ dart_library.library('dart_sdk', null, /* Imports */[
return onValue();
});
};
- 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);
- }
- };
dart.asyncStar = function(gen, T, ...args) {
return new dart._AsyncStarStreamController(gen, T, args).controller.stream;
};
@@ -536,15 +433,6 @@ dart_library.library('dart_sdk', null, /* Imports */[
return result;
};
};
- 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.strongInstanceOf = function(obj, type, ignoreFromWhiteList) {
let actual = dart.getReifiedType(obj);
let result = dart.isSubtype(actual, type);
@@ -617,7 +505,6 @@ dart_library.library('dart_sdk', null, /* Imports */[
dart.assert = function(condition) {
if (!condition) dart.throwAssertionError();
};
- dart._stack = new WeakMap();
dart.throw = function(obj) {
if (obj != null && (typeof obj == 'object' || typeof obj == 'function')) {
dart._stack.set(obj, new Error());
@@ -644,7 +531,6 @@ dart_library.library('dart_sdk', null, /* Imports */[
}
return obj;
};
- dart._value = Symbol("_value");
dart.multiKeyPutIfAbsent = function(map, keys, valueFn) {
for (let k of keys) {
let value = map.get(k);
@@ -658,7 +544,6 @@ dart_library.library('dart_sdk', null, /* Imports */[
map.set(dart._value, value);
return value;
};
- dart.constants = new Map();
dart.const = function(obj) {
let objectKey = [dart.getReifiedType(obj)];
for (let name of dart.getOwnNamesAndSymbols(obj)) {
@@ -668,51 +553,49 @@ dart_library.library('dart_sdk', null, /* Imports */[
return dart.multiKeyPutIfAbsent(dart.constants, objectKey, () => obj);
};
dart.hashCode = function(obj) {
- if (obj == null) {
- return 0;
- }
+ if (obj == null) return 0;
switch (typeof obj) {
case "number":
- case "boolean":
{
return obj & 0x1FFFFFFF;
}
- case "string":
+ case "boolean":
{
- return obj.length;
+ return obj ? 2 * 3 * 23 * 3761 : 269 * 811;
}
}
+ let extension = dart.getExtensionType(obj);
+ if (extension != null) {
+ return obj[dartx.hashCode];
+ }
return obj.hashCode;
};
dart.toString = function(obj) {
- if (obj == null) {
- return "null";
+ if (obj == null) return "null";
+ let extension = dart.getExtensionType(obj);
+ if (extension != null) {
+ return obj[dartx.toString]();
}
return obj.toString();
};
dart.noSuchMethod = function(obj, invocation) {
if (obj == null) {
- dart.throwNoSuchMethod(obj, invocation.memberName, invocation.positionalArguments, invocation.namedArguments);
+ dart.throw(new core.NoSuchMethodError(null, invocation.memberName, invocation.positionalArguments, invocation.namedArguments));
}
- switch (typeof obj) {
- case "number":
- case "boolean":
- case "string":
- {
- dart.throwNoSuchMethod(obj, invocation.memberName, invocation.positionalArguments, invocation.namedArguments);
- }
+ let extension = dart.getExtensionType(obj);
+ if (extension != null) {
+ return obj[dartx.noSuchMethod](invocation);
}
return obj.noSuchMethod(invocation);
};
- 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.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.fn = function(closure, rType, argsT, extras) {
let t = null;
@@ -731,13 +614,9 @@ dart_library.library('dart_sdk', null, /* Imports */[
});
return closure;
};
- dart._runtimeType = Symbol("_runtimeType");
- dart.checkPrimitiveType = function(obj) {
+ dart._checkPrimitiveType = function(obj) {
+ if (obj == null) return core.Null;
switch (typeof obj) {
- case "undefined":
- {
- return core.Null;
- }
case "number":
{
return Math.floor(obj) == obj ? core.int : core.double;
@@ -752,36 +631,27 @@ dart_library.library('dart_sdk', null, /* Imports */[
}
case "symbol":
{
- return Symbol;
+ return dart.jsobject;
}
}
- if (obj === null) return core.Null;
return null;
};
- dart.runtimeType = function(obj) {
- let result = dart.checkPrimitiveType(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.objectRuntimeType = function(obj) {
- return dart.wrapType(dart.getReifiedType(obj));
+ return dart.definiteFunctionType(dart.bottom, args, void 0);
};
dart.getReifiedType = function(obj) {
- let result = dart.checkPrimitiveType(obj);
+ let result = dart._checkPrimitiveType(obj);
if (result != null) return result;
return dart._nonPrimitiveRuntimeType(obj);
};
dart._nonPrimitiveRuntimeType = function(obj) {
- let result = obj[dart._runtimeType];
- if (result) return result;
- result = obj[dart._extensionType];
- if (result) return result;
+ 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) {
+ if (result === Function) {
return dart.jsobject;
}
return result;
@@ -804,176 +674,6 @@ dart_library.library('dart_sdk', null, /* Imports */[
dart.tagLazy = function(value, compute) {
dart.defineLazyProperty(value, dart._runtimeType, {get: compute});
};
- 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();
- }
- get [dart._runtimeType]() {
- return core.Type;
- }
- };
- dart.Dynamic = class Dynamic extends dart.TypeRep {
- toString() {
- return "dynamic";
- }
- };
- dart.dynamic = new dart.Dynamic();
- dart.Void = class Void extends dart.TypeRep {
- toString() {
- return "void";
- }
- };
- dart.void = new dart.Void();
- dart.Bottom = class Bottom extends dart.TypeRep {
- toString() {
- return "bottom";
- }
- };
- dart.bottom = new dart.Bottom();
- dart.JSObject = class JSObject extends dart.TypeRep {
- toString() {
- return "NativeJavaScriptObject";
- }
- };
- 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();
- this._stringValue = null;
- }
- toString() {
- return this.name;
- }
- get name() {
- if (this._stringValue) return this._stringValue;
- let buffer = '(';
- for (let i = 0; i < this.args.length; ++i) {
- if (i > 0) {
- buffer += ', ';
- }
- buffer += dart.typeName(this.args[i]);
- }
- if (this.optionals.length > 0) {
- if (this.args.length > 0) buffer += ', ';
- buffer += '[';
- for (let i = 0; i < this.optionals.length; ++i) {
- if (i > 0) {
- buffer += ', ';
- }
- buffer += dart.typeName(this.optionals[i]);
- }
- buffer += ']';
- } else if (Object.keys(this.named).length > 0) {
- if (this.args.length > 0) buffer += ', ';
- buffer += '{';
- let names = dart.getOwnPropertyNames(this.named).sort();
- for (let i = 0; i < names.length; ++i) {
- if (i > 0) {
- buffer += ', ';
- }
- buffer += names[i] + ': ' + dart.typeName(this.named[names[i]]);
- }
- buffer += '}';
- }
- buffer += ') -> ' + dart.typeName(this.returnType);
- this._stringValue = buffer;
- return buffer;
- }
- };
- dart.FunctionType = class FunctionType extends dart.AbstractFunctionType {
- constructor(definite, returnType, args, optionals, named) {
- super();
- this.definite = definite;
- this.returnType = returnType;
- this.args = args;
- this.optionals = optionals;
- this.named = named;
- this.metadata = [];
- function process(array, metadata) {
- var result = [];
- for (var i = 0; i < array.length; ++i) {
- var arg = array[i];
- if (arg instanceof Array) {
- metadata.push(arg.slice(1));
- result.push(arg[0]);
- } else {
- metadata.push([]);
- result.push(arg);
- }
- }
- return result;
- }
- this.args = process(this.args, this.metadata);
- this.optionals = process(this.optionals, this.metadata);
- this._canonize();
- }
- _canonize() {
- if (this.definite) return;
- function replace(a) {
- return a == dart.dynamic ? dart.bottom : a;
- }
- this.args = this.args.map(replace);
- if (this.optionals.length > 0) {
- this.optionals = this.optionals.map(replace);
- }
- if (Object.keys(this.named).length > 0) {
- let r = {};
- for (let name of dart.getOwnPropertyNames(this.named)) {
- r[name] = replace(this.named[name]);
- }
- this.named = r;
- }
- }
- };
- dart.Typedef = class Typedef extends dart.AbstractFunctionType {
- constructor(name, closure) {
- super();
- this._name = name;
- this._closure = closure;
- this._functionType = null;
- }
- get definite() {
- return this._functionType.definite;
- }
- get name() {
- return this._name;
- }
- get functionType() {
- if (!this._functionType) {
- this._functionType = this._closure();
- }
- return this._functionType;
- }
- get returnType() {
- return this.functionType.returnType;
- }
- get args() {
- return this.functionType.args;
- }
- get optionals() {
- return this.functionType.optionals;
- }
- get named() {
- return this.functionType.named;
- }
- get metadata() {
- return this.functionType.metadata;
- }
- };
- dart._typeFormalCount = Symbol("_typeFormalCount");
dart._functionType = function(definite, returnType, args, extra) {
if (args === void 0 && extra === void 0) {
const fnTypeParts = returnType;
@@ -1041,7 +741,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
return "JSObject<" + type.name + ">";
};
dart.getImplicitFunctionType = function(type) {
- if (dart.isFunctionType(type)) return type;
+ if (dart.notNull(dart.isFunctionType(type))) return type;
return dart.getMethodTypeFromType(type, 'call');
};
dart.isFunctionType = function(type) {
@@ -1059,7 +759,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
return covariant ? false : null;
}
for (let i = 0; i < args1.length; ++i) {
- if (!dart.isSubtype_(args2[i], args1[i], !covariant)) {
+ if (!dart._isSubtype(args2[i], args1[i], !covariant)) {
return null;
}
}
@@ -1070,12 +770,12 @@ dart_library.library('dart_sdk', null, /* Imports */[
}
let j = 0;
for (let i = args1.length; i < args2.length; ++i, ++j) {
- if (!dart.isSubtype_(args2[i], optionals1[j], !covariant)) {
+ if (!dart._isSubtype(args2[i], optionals1[j], !covariant)) {
return null;
}
}
for (let i = 0; i < optionals2.length; ++i, ++j) {
- if (!dart.isSubtype_(optionals2[i], optionals1[j], !covariant)) {
+ if (!dart._isSubtype(optionals2[i], optionals1[j], !covariant)) {
return null;
}
}
@@ -1089,13 +789,13 @@ dart_library.library('dart_sdk', null, /* Imports */[
if (n1 === void 0) {
return covariant ? false : null;
}
- if (!dart.isSubtype_(n2, n1, !covariant)) {
+ 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;
+ if (!dart._isSubtype(ret1, ret2, covariant)) return null;
return true;
};
dart.canonicalType = function(t) {
@@ -1118,24 +818,18 @@ dart_library.library('dart_sdk', null, /* Imports */[
} else {
memo.set(t1, map = new Map());
}
- console.log("Checking " + dart.typeName(t1) + " <: " + dart.typeName(t2));
result = f(t1, t2);
map.set(t2, result);
return result;
};
};
- dart.isSubtype = (() => {
- return dart._subtypeMemo((t1, t2) => {
- return dart.isSubtype_(t1, t2, true);
- });
- })();
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) {
+ dart._isSubtype = function(t1, t2, covariant) {
t1 = dart.canonicalType(t1);
t2 = dart.canonicalType(t2);
if (t1 === t2) return true;
@@ -1178,7 +872,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
}
dart.assert(length == typeArguments2.length);
for (let i = 0; i < length; ++i) {
- let result = dart.isSubtype_(typeArguments1[i], typeArguments2[i], covariant);
+ let result = dart._isSubtype(typeArguments1[i], typeArguments2[i], covariant);
if (!result) {
return result;
}
@@ -1244,16 +938,6 @@ dart_library.library('dart_sdk', null, /* Imports */[
dart.getOwnPropertySymbols = function(obj) {
return Object.getOwnPropertySymbols(obj);
};
- dart.hasOwnProperty = Object.prototype.hasOwnProperty;
- dart.StrongModeError = (function() {
- function StrongModeError(message) {
- Error.call(this);
- this.message = message;
- }
- ;
- Object.setPrototypeOf(StrongModeError.prototype, Error.prototype);
- return StrongModeError;
- })();
dart.throwStrongModeError = function(message) {
throw new dart.StrongModeError(message);
};
@@ -1324,6 +1008,147 @@ dart_library.library('dart_sdk', null, /* Imports */[
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;
+ }
+ 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);
+ }
+ };
+ 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.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._runtimeType = Symbol("_runtimeType");
+ dart.metadata = Symbol("metadata");
+ dart._typeObject = Symbol("typeObject");
core.Object = class Object {
constructor() {
let name = this.constructor.name;
@@ -1344,7 +1169,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
dart.throw(new core.NoSuchMethodError(this, invocation.memberName, invocation.positionalArguments, invocation.namedArguments));
}
get runtimeType() {
- return dart.objectRuntimeType(this);
+ return dart.wrapType(dart.getReifiedType(this));
}
};
dart.setSignature(core.Object, {
@@ -1355,6 +1180,184 @@ dart_library.library('dart_sdk', null, /* Imports */[
noSuchMethod: [dart.dynamic, [core.Invocation]]
})
});
+ dart.TypeRep = class TypeRep extends core.Object {
+ get name() {
+ return this.toString();
+ }
+ };
+ dart.TypeRep[dart.implements] = () => [core.Type];
+ dart.Dynamic = class Dynamic extends dart.TypeRep {
+ toString() {
+ return 'dynamic';
+ }
+ };
+ dart.dynamic = new dart.Dynamic();
+ dart.Void = class Void extends dart.TypeRep {
+ toString() {
+ return 'void';
+ }
+ };
+ dart.void = new dart.Void();
+ dart.Bottom = class Bottom extends dart.TypeRep {
+ toString() {
+ return 'bottom';
+ }
+ };
+ dart.bottom = new dart.Bottom();
+ dart.JSObject = class JSObject extends dart.TypeRep {
+ toString() {
+ return 'NativeJavaScriptObject';
+ }
+ };
+ dart.jsobject = new dart.JSObject();
+ const _runtimeType = Symbol('_runtimeType');
+ dart.WrappedType = class WrappedType extends dart.TypeRep {
+ WrappedType(runtimeType) {
+ this[_runtimeType] = runtimeType;
+ }
+ toString() {
+ return dart.as(dart.typeName(this[_runtimeType]), core.String);
+ }
+ };
+ dart.setSignature(dart.WrappedType, {
+ constructors: () => ({WrappedType: [dart.WrappedType, [dart.dynamic]]})
+ });
+ dart.AbstractFunctionType = class AbstractFunctionType extends dart.TypeRep {
+ constructor() {
+ super();
+ this._stringValue = null;
+ }
+ toString() {
+ return this.name;
+ }
+ get name() {
+ if (this._stringValue) return this._stringValue;
+ let buffer = '(';
+ for (let i = 0; i < this.args.length; ++i) {
+ if (i > 0) {
+ buffer += ', ';
+ }
+ buffer += dart.typeName(this.args[i]);
+ }
+ if (this.optionals.length > 0) {
+ if (this.args.length > 0) buffer += ', ';
+ buffer += '[';
+ for (let i = 0; i < this.optionals.length; ++i) {
+ if (i > 0) {
+ buffer += ', ';
+ }
+ buffer += dart.typeName(this.optionals[i]);
+ }
+ buffer += ']';
+ } else if (Object.keys(this.named).length > 0) {
+ if (this.args.length > 0) buffer += ', ';
+ buffer += '{';
+ let names = dart.getOwnPropertyNames(this.named).sort();
+ for (let i = 0; i < names.length; ++i) {
+ if (i > 0) {
+ buffer += ', ';
+ }
+ buffer += names[i] + ': ' + dart.typeName(this.named[names[i]]);
+ }
+ buffer += '}';
+ }
+ buffer += ') -> ' + dart.typeName(this.returnType);
+ this._stringValue = buffer;
+ return buffer;
+ }
+ };
+ dart.FunctionType = class FunctionType extends dart.AbstractFunctionType {
+ constructor(definite, returnType, args, optionals, named) {
+ super();
+ this.definite = definite;
+ this.returnType = returnType;
+ this.args = args;
+ this.optionals = optionals;
+ this.named = named;
+ this.metadata = [];
+ function process(array, metadata) {
+ var result = [];
+ for (var i = 0; i < array.length; ++i) {
+ var arg = array[i];
+ if (arg instanceof Array) {
+ metadata.push(arg.slice(1));
+ result.push(arg[0]);
+ } else {
+ metadata.push([]);
+ result.push(arg);
+ }
+ }
+ return result;
+ }
+ this.args = process(this.args, this.metadata);
+ this.optionals = process(this.optionals, this.metadata);
+ this._canonize();
+ }
+ _canonize() {
+ if (this.definite) return;
+ function replace(a) {
+ return a == dart.dynamic ? dart.bottom : a;
+ }
+ this.args = this.args.map(replace);
+ if (this.optionals.length > 0) {
+ this.optionals = this.optionals.map(replace);
+ }
+ if (Object.keys(this.named).length > 0) {
+ let r = {};
+ for (let name of dart.getOwnPropertyNames(this.named)) {
+ r[name] = replace(this.named[name]);
+ }
+ this.named = r;
+ }
+ }
+ };
+ dart.Typedef = class Typedef extends dart.AbstractFunctionType {
+ constructor(name, closure) {
+ super();
+ this._name = name;
+ this._closure = closure;
+ this._functionType = null;
+ }
+ get definite() {
+ return this._functionType.definite;
+ }
+ get name() {
+ return this._name;
+ }
+ get functionType() {
+ if (!this._functionType) {
+ this._functionType = this._closure();
+ }
+ return this._functionType;
+ }
+ get returnType() {
+ return this.functionType.returnType;
+ }
+ get args() {
+ return this.functionType.args;
+ }
+ get optionals() {
+ return this.functionType.optionals;
+ }
+ get named() {
+ return this.functionType.named;
+ }
+ get metadata() {
+ return this.functionType.metadata;
+ }
+ };
+ dart._typeFormalCount = Symbol("_typeFormalCount");
+ dart.isSubtype = dart._subtypeMemo((t1, t2) => dart._isSubtype(t1, t2, true));
+ dart.hasOwnProperty = Object.prototype.hasOwnProperty;
+ dart.StrongModeError = (function() {
+ function StrongModeError(message) {
+ Error.call(this);
+ this.message = message;
+ }
+ ;
+ Object.setPrototypeOf(StrongModeError.prototype, Error.prototype);
+ return StrongModeError;
+ })();
_debugger.skipDartConfig = dart.const(new core.Object());
_debugger.maxIterableChildrenToDisplay = 50;
dart.defineLazy(_debugger, {
@@ -2029,13 +2032,13 @@ dart_library.library('dart_sdk', null, /* Imports */[
JSBool() {
super.Interceptor();
}
- toString() {
+ [dartx.toString]() {
return String(this);
}
- get hashCode() {
+ get [dartx.hashCode]() {
return this ? 2 * 3 * 23 * 3761 : 269 * 811;
}
- get runtimeType() {
+ get [dartx.runtimeType]() {
return dart.wrapType(core.bool);
}
};
@@ -2609,7 +2612,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
get [dartx.isNotEmpty]() {
return !dart.notNull(this[dartx.isEmpty]);
}
- toString() {
+ [dartx.toString]() {
return collection.ListBase.listToString(this);
}
[dartx.toList](opts) {
@@ -2624,7 +2627,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
get [dartx.iterator]() {
return new (_interceptors.ArrayIterator$(E))(this);
}
- get hashCode() {
+ get [dartx.hashCode]() {
return _js_helper.Primitives.objectHashCode(this);
}
get [dartx.length]() {
@@ -3010,14 +3013,14 @@ dart_library.library('dart_sdk', null, /* Imports */[
}
return dart.notNull(result) + "0"[dartx['*']](exponent);
}
- toString() {
+ [dartx.toString]() {
if (this == 0 && 1 / this < 0) {
return '-0.0';
} else {
return "" + this;
}
}
- get hashCode() {
+ get [dartx.hashCode]() {
return this & 0x1FFFFFFF;
}
[dartx['unary-']]() {
@@ -3750,10 +3753,10 @@ dart_library.library('dart_sdk', null, /* Imports */[
if (!(typeof other == 'string')) dart.throw(_js_helper.argumentErrorValue(other));
return dart.equals(this, other) ? 0 : this < other ? -1 : 1;
}
- toString() {
+ [dartx.toString]() {
return this;
}
- get hashCode() {
+ get [dartx.hashCode]() {
let hash = 0;
for (let i = 0; i < dart.notNull(this[dartx.length]); i++) {
hash = 536870911 & hash + this.charCodeAt(i);
@@ -3764,7 +3767,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
hash = hash ^ hash >> 11;
return 536870911 & hash + ((16383 & hash) << 15);
}
- get runtimeType() {
+ get [dartx.runtimeType]() {
return dart.wrapType(core.String);
}
get [dartx.length]() {
@@ -7256,7 +7259,11 @@ dart_library.library('dart_sdk', null, /* Imports */[
constructors: () => ({_IsolateEvent: [_isolate_helper._IsolateEvent, [_isolate_helper._IsolateContext, core.Function, core.String]]}),
methods: () => ({process: [dart.void, []]})
});
- _isolate_helper._global = typeof global == 'undefined' ? self : global;
+ dart.defineLazy(_isolate_helper, {
+ get _global() {
+ return typeof global == 'undefined' ? self : global;
+ }
+ });
_isolate_helper._MainManagerStub = class _MainManagerStub extends core.Object {
postMessage(msg) {
_isolate_helper._global.postMessage(msg);
@@ -10398,7 +10405,11 @@ dart_library.library('dart_sdk', null, /* Imports */[
return new _js_mirrors.JsClassMirror._(key);
};
dart.lazyFn(_js_mirrors.reflectType, () => [mirrors.TypeMirror, [core.Type]]);
- _js_mirrors._dart = dart;
+ dart.defineLazy(_js_mirrors, {
+ get _dart() {
+ return dart;
+ }
+ });
_js_mirrors._dload = function(obj, name) {
return _js_mirrors._dart.dload(obj, name);
};
@@ -10890,7 +10901,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
get [dartx.lengthInBytes]() {
return this.byteLength;
}
- get runtimeType() {
+ get [dartx.runtimeType]() {
return dart.wrapType(typed_data.ByteBuffer);
}
[dartx.asUint8List](offsetInBytes, length) {
@@ -11959,7 +11970,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
_native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
return length == null ? _native_typed_data.NativeByteData._create2(buffer, offsetInBytes) : _native_typed_data.NativeByteData._create3(buffer, offsetInBytes, length);
}
- get runtimeType() {
+ get [dartx.runtimeType]() {
return dart.wrapType(typed_data.ByteData);
}
get [dartx.elementSizeInBytes]() {
@@ -12159,7 +12170,6 @@ dart_library.library('dart_sdk', null, /* Imports */[
dart.setSignature(_native_typed_data.NativeTypedArray, {
methods: () => ({[_setRangeFast]: [dart.void, [core.int, core.int, _native_typed_data.NativeTypedArray, core.int]]})
});
- dart.defineExtensionMembers(_native_typed_data.NativeTypedArray, [_setRangeFast]);
dart.defineExtensionNames([
'length',
'get',
@@ -12248,7 +12258,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
_native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
return length == null ? _native_typed_data.NativeFloat32List._create2(buffer, offsetInBytes) : _native_typed_data.NativeFloat32List._create3(buffer, offsetInBytes, length);
}
- get runtimeType() {
+ get [dartx.runtimeType]() {
return dart.wrapType(typed_data.Float32List);
}
[dartx.sublist](start, end) {
@@ -12299,7 +12309,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
_native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
return length == null ? _native_typed_data.NativeFloat64List._create2(buffer, offsetInBytes) : _native_typed_data.NativeFloat64List._create3(buffer, offsetInBytes, length);
}
- get runtimeType() {
+ get [dartx.runtimeType]() {
return dart.wrapType(typed_data.Float64List);
}
[dartx.sublist](start, end) {
@@ -12351,7 +12361,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
_native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
return length == null ? _native_typed_data.NativeInt16List._create2(buffer, offsetInBytes) : _native_typed_data.NativeInt16List._create3(buffer, offsetInBytes, length);
}
- get runtimeType() {
+ get [dartx.runtimeType]() {
return dart.wrapType(typed_data.Int16List);
}
[dartx.get](index) {
@@ -12410,7 +12420,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
_native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
return length == null ? _native_typed_data.NativeInt32List._create2(buffer, offsetInBytes) : _native_typed_data.NativeInt32List._create3(buffer, offsetInBytes, length);
}
- get runtimeType() {
+ get [dartx.runtimeType]() {
return dart.wrapType(typed_data.Int32List);
}
[dartx.get](index) {
@@ -12469,7 +12479,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
_native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
return dart.as(length == null ? _native_typed_data.NativeInt8List._create2(buffer, offsetInBytes) : _native_typed_data.NativeInt8List._create3(buffer, offsetInBytes, length), _native_typed_data.NativeInt8List);
}
- get runtimeType() {
+ get [dartx.runtimeType]() {
return dart.wrapType(typed_data.Int8List);
}
[dartx.get](index) {
@@ -12528,7 +12538,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
_native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
return length == null ? _native_typed_data.NativeUint16List._create2(buffer, offsetInBytes) : _native_typed_data.NativeUint16List._create3(buffer, offsetInBytes, length);
}
- get runtimeType() {
+ get [dartx.runtimeType]() {
return dart.wrapType(typed_data.Uint16List);
}
[dartx.get](index) {
@@ -12587,7 +12597,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
_native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
return length == null ? _native_typed_data.NativeUint32List._create2(buffer, offsetInBytes) : _native_typed_data.NativeUint32List._create3(buffer, offsetInBytes, length);
}
- get runtimeType() {
+ get [dartx.runtimeType]() {
return dart.wrapType(typed_data.Uint32List);
}
[dartx.get](index) {
@@ -12647,7 +12657,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
_native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
return length == null ? _native_typed_data.NativeUint8ClampedList._create2(buffer, offsetInBytes) : _native_typed_data.NativeUint8ClampedList._create3(buffer, offsetInBytes, length);
}
- get runtimeType() {
+ get [dartx.runtimeType]() {
return dart.wrapType(typed_data.Uint8ClampedList);
}
get [dartx.length]() {
@@ -12713,7 +12723,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
_native_typed_data._checkViewArguments(buffer, offsetInBytes, length);
return length == null ? _native_typed_data.NativeUint8List._create2(buffer, offsetInBytes) : _native_typed_data.NativeUint8List._create3(buffer, offsetInBytes, length);
}
- get runtimeType() {
+ get [dartx.runtimeType]() {
return dart.wrapType(typed_data.Uint8List);
}
get [dartx.length]() {
@@ -27567,7 +27577,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
let defaultValue = opts && 'defaultValue' in opts ? opts.defaultValue : false;
dart.throw(new core.UnsupportedError('bool.fromEnvironment can only be used as a const constructor'));
}
- toString() {
+ [dartx.toString]() {
return this ? "true" : "false";
}
};
@@ -31257,7 +31267,11 @@ dart_library.library('dart_sdk', null, /* Imports */[
dart.setSignature(isolate.Capability, {
constructors: () => ({new: [isolate.Capability, []]})
});
- js._global = dart.global;
+ dart.defineLazy(js, {
+ get _global() {
+ return dart.global;
+ }
+ });
dart.defineLazy(js, {
get context() {
return js._wrapToDart(js._global);
@@ -31617,8 +31631,16 @@ dart_library.library('dart_sdk', null, /* Imports */[
return new js.JsObject._fromJs(o);
};
dart.fn(js._wrapToDart, js.JsObject, [dart.dynamic]);
- js._dartProxies = new WeakMap();
- js._jsProxies = new WeakMap();
+ dart.defineLazy(js, {
+ get _dartProxies() {
+ return new WeakMap();
+ }
+ });
+ dart.defineLazy(js, {
+ get _jsProxies() {
+ return new WeakMap();
+ }
+ });
js._putIfAbsent = function(weakMap, o, getValue) {
let value = weakMap.get(o);
if (value == null) {
@@ -34113,7 +34135,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
this[_removeChild](this[dartx.firstChild]);
}
}
- toString() {
+ [dartx.toString]() {
let value = this[dartx.nodeValue];
return value == null ? super.toString() : value;
}
@@ -34657,7 +34679,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
get [dartx.namespaceUri]() {
return this[_namespaceUri];
}
- toString() {
+ [dartx.toString]() {
return this[dartx.localName];
}
[dartx.scrollIntoView](alignment) {
@@ -36007,7 +36029,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
set [dartx.username](value) {
this.username = value;
}
- toString() {
+ [dartx.toString]() {
return String(this);
}
};
@@ -36639,7 +36661,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
set [dartx.username](value) {
this.username = value;
}
- toString() {
+ [dartx.toString]() {
return String(this);
}
};
@@ -47710,7 +47732,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
get [dartx.message]() {
return this.message;
}
- toString() {
+ [dartx.toString]() {
return String(this);
}
};
@@ -48373,14 +48395,14 @@ dart_library.library('dart_sdk', null, /* Imports */[
'y'
]);
html$.DomRectReadOnly = class DomRectReadOnly extends _interceptors.Interceptor {
- toString() {
+ [dartx.toString]() {
return `Rectangle (${this[dartx.left]}, ${this[dartx.top]}) ${this[dartx.width]} x ${this[dartx.height]}`;
}
- ['=='](other) {
+ [dartx['==']](other) {
if (!dart.is(other, math.Rectangle$(core.num))) return false;
return dart.equals(this[dartx.left], dart.dload(other, 'left')) && dart.equals(this[dartx.top], dart.dload(other, 'top')) && dart.equals(this[dartx.width], dart.dload(other, 'width')) && dart.equals(this[dartx.height], dart.dload(other, 'height'));
}
- get hashCode() {
+ get [dartx.hashCode]() {
return html$._JenkinsSmiHash.hash4(dart.hashCode(this[dartx.left]), dart.hashCode(this[dartx.top]), dart.hashCode(this[dartx.width]), dart.hashCode(this[dartx.height]));
}
[dartx.intersection](other) {
@@ -54219,7 +54241,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
}
return `${this[dartx.protocol]}//${this[dartx.host]}`;
}
- toString() {
+ [dartx.toString]() {
return String(this);
}
};
@@ -57788,7 +57810,6 @@ dart_library.library('dart_sdk', null, /* Imports */[
dart.setSignature(html$.ParentNode, {
constructors: () => ({_: [html$.ParentNode, []]})
});
- dart.defineExtensionMembers(html$.ParentNode, [_childElementCount, _children, _firstElementChild, _lastElementChild]);
html$.ParentNode[dart.metadata] = () => [dart.const(new _metadata.DocsEditable()), dart.const(new _metadata.DomName('ParentNode')), dart.const(new _metadata.Experimental())];
dart.defineExtensionNames([
'formData',
@@ -64831,7 +64852,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
static revokeObjectUrl(url) {
return (self.URL || self.webkitURL).revokeObjectURL(url);
}
- toString() {
+ [dartx.toString]() {
return String(this);
}
static _() {
@@ -67561,14 +67582,14 @@ dart_library.library('dart_sdk', null, /* Imports */[
'width'
]);
html$._ClientRect = class _ClientRect extends _interceptors.Interceptor {
- toString() {
+ [dartx.toString]() {
return `Rectangle (${this[dartx.left]}, ${this[dartx.top]}) ${this[dartx.width]} x ${this[dartx.height]}`;
}
- ['=='](other) {
+ [dartx['==']](other) {
if (!dart.is(other, math.Rectangle$(core.num))) return false;
return dart.equals(this[dartx.left], dart.dload(other, 'left')) && dart.equals(this[dartx.top], dart.dload(other, 'top')) && dart.equals(this[dartx.width], dart.dload(other, 'width')) && dart.equals(this[dartx.height], dart.dload(other, 'height'));
}
- get hashCode() {
+ get [dartx.hashCode]() {
return html$._JenkinsSmiHash.hash4(dart.hashCode(this[dartx.left]), dart.hashCode(this[dartx.top]), dart.hashCode(this[dartx.width]), dart.hashCode(this[dartx.height]));
}
[dartx.intersection](other) {
« no previous file with comments | « .gitignore ('k') | lib/src/compiler/code_generator.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698