mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 00:39:49 +00:00
Better mirrors support for mixins and private fields
This is generally motivated by pageloader usage. R=rnystrom@google.com Review URL: https://codereview.chromium.org/2535273002 .
This commit is contained in:
parent
7c3932d594
commit
88c5dd5745
|
@ -616,11 +616,12 @@ define([], function() {
|
|||
let TypeToTypeMirror = () => (TypeToTypeMirror = dart.constFn(dart.definiteFunctionType(mirrors.TypeMirror, [core.Type])))();
|
||||
let dynamicAndListTodynamic = () => (dynamicAndListTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic, core.List])))();
|
||||
let dynamicAndStringAndListTodynamic = () => (dynamicAndStringAndListTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic, core.String, core.List])))();
|
||||
let dynamicToMap = () => (dynamicToMap = dart.constFn(dart.definiteFunctionType(core.Map, [dart.dynamic])))();
|
||||
let SymbolTodynamic = () => (SymbolTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.Symbol])))();
|
||||
let dynamicToSymbol = () => (dynamicToSymbol = dart.constFn(dart.definiteFunctionType(core.Symbol, [dart.dynamic])))();
|
||||
let dynamicToMapOfSymbol$dynamic = () => (dynamicToMapOfSymbol$dynamic = dart.constFn(dart.definiteFunctionType(MapOfSymbol$dynamic(), [dart.dynamic])))();
|
||||
let TypeAndInvocationTodynamic = () => (TypeAndInvocationTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.Type, core.Invocation])))();
|
||||
let SymbolAnddynamicTovoid = () => (SymbolAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.Symbol, dart.dynamic])))();
|
||||
let MapOfSymbol$dynamicTodynamic = () => (MapOfSymbol$dynamicTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [MapOfSymbol$dynamic()])))();
|
||||
let StringAnddynamicTovoid = () => (StringAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.String, dart.dynamic])))();
|
||||
let dynamicToTypeMirror = () => (dynamicToTypeMirror = dart.constFn(dart.definiteFunctionType(mirrors.TypeMirror, [dart.dynamic])))();
|
||||
let dynamicAnddynamicAnddynamicTovoid = () => (dynamicAnddynamicAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic])))();
|
||||
let ListToList = () => (ListToList = dart.constFn(dart.definiteFunctionType(core.List, [core.List])))();
|
||||
|
@ -678,6 +679,7 @@ define([], function() {
|
|||
let ObjectToint = () => (ObjectToint = dart.constFn(dart.definiteFunctionType(core.int, [core.Object])))();
|
||||
let ObjectTovoid = () => (ObjectTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.Object])))();
|
||||
let StringAndStringTovoid$ = () => (StringAndStringTovoid$ = dart.constFn(dart.definiteFunctionType(dart.void, [core.String, core.String])))();
|
||||
let StringAnddynamicTovoid = () => (StringAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.String, dart.dynamic])))();
|
||||
let MapOfString$StringAndStringToMapOfString$String = () => (MapOfString$StringAndStringToMapOfString$String = dart.constFn(dart.definiteFunctionType(MapOfString$String(), [MapOfString$String(), core.String])))();
|
||||
let intAndintAndintTovoid = () => (intAndintAndintTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.int, core.int, core.int])))();
|
||||
let String__Tovoid = () => (String__Tovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.String], [dart.dynamic])))();
|
||||
|
@ -749,6 +751,7 @@ define([], function() {
|
|||
let NodeAndNodeTovoid = () => (NodeAndNodeTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [html$.Node, html$.Node])))();
|
||||
let dynamicToImageData = () => (dynamicToImageData = dart.constFn(dart.definiteFunctionType(html$.ImageData, [dart.dynamic])))();
|
||||
let ImageDataTodynamic = () => (ImageDataTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [html$.ImageData])))();
|
||||
let dynamicToMap = () => (dynamicToMap = dart.constFn(dart.definiteFunctionType(core.Map, [dart.dynamic])))();
|
||||
let Map__Todynamic = () => (Map__Todynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.Map], [dynamicTovoid()])))();
|
||||
let ListOfStringToList = () => (ListOfStringToList = dart.constFn(dart.definiteFunctionType(core.List, [ListOfString()])))();
|
||||
let dynamicToDateTime = () => (dynamicToDateTime = dart.constFn(dart.definiteFunctionType(core.DateTime, [dart.dynamic])))();
|
||||
|
@ -780,10 +783,10 @@ define([], function() {
|
|||
return Mixin;
|
||||
};
|
||||
dart.getMixins = function(clazz) {
|
||||
return clazz[dart._mixins];
|
||||
return Object.hasOwnProperty.call(clazz, dart._mixins) ? clazz[dart._mixins] : null;
|
||||
};
|
||||
dart.getImplements = function(clazz) {
|
||||
return clazz[dart.implements];
|
||||
return Object.hasOwnProperty.call(clazz, dart.implements) ? clazz[dart.implements] : null;
|
||||
};
|
||||
dart.flattenFutures = function(builder) {
|
||||
function flatten(T) {
|
||||
|
@ -8657,18 +8660,26 @@ define([], function() {
|
|||
});
|
||||
_internal.Sort._INSERTION_SORT_THRESHOLD = 32;
|
||||
const _name = Symbol('_name');
|
||||
const _nativeSymbol = Symbol('_nativeSymbol');
|
||||
_internal.Symbol = class Symbol extends core.Object {
|
||||
new(name) {
|
||||
this[_name] = name;
|
||||
this[_nativeSymbol] = null;
|
||||
}
|
||||
es6(name, nativeSymbol) {
|
||||
this[_name] = name;
|
||||
this[_nativeSymbol] = nativeSymbol;
|
||||
}
|
||||
unvalidated(name) {
|
||||
this[_name] = name;
|
||||
this[_nativeSymbol] = null;
|
||||
}
|
||||
validated(name) {
|
||||
this[_name] = _internal.Symbol.validatePublicSymbol(name);
|
||||
this[_nativeSymbol] = null;
|
||||
}
|
||||
['=='](other) {
|
||||
return _internal.Symbol.is(other) && this[_name] == other[_name];
|
||||
return _internal.Symbol.is(other) && this[_name] == other[_name] && dart.equals(this[_nativeSymbol], other[_nativeSymbol]);
|
||||
}
|
||||
get hashCode() {
|
||||
let hash = this._hashCode;
|
||||
|
@ -8684,6 +8695,9 @@ define([], function() {
|
|||
static getName(symbol) {
|
||||
return symbol[_name];
|
||||
}
|
||||
static getNativeSymbol(symbol) {
|
||||
return symbol[_nativeSymbol];
|
||||
}
|
||||
static validatePublicSymbol(name) {
|
||||
if (dart.test(name[dartx.isEmpty]) || dart.test(_internal.Symbol.publicSymbolPattern.hasMatch(name))) return name;
|
||||
if (dart.test(name[dartx.startsWith]('_'))) {
|
||||
|
@ -8695,16 +8709,21 @@ define([], function() {
|
|||
return dart.test(name[dartx.isEmpty]) || dart.test(_internal.Symbol.symbolPattern.hasMatch(name));
|
||||
}
|
||||
};
|
||||
dart.defineNamedConstructor(_internal.Symbol, 'es6');
|
||||
dart.defineNamedConstructor(_internal.Symbol, 'unvalidated');
|
||||
dart.defineNamedConstructor(_internal.Symbol, 'validated');
|
||||
_internal.Symbol[dart.implements] = () => [core.Symbol];
|
||||
dart.setSignature(_internal.Symbol, {
|
||||
constructors: () => ({
|
||||
new: dart.definiteFunctionType(_internal.Symbol, [core.String]),
|
||||
es6: dart.definiteFunctionType(_internal.Symbol, [core.String, dart.dynamic]),
|
||||
unvalidated: dart.definiteFunctionType(_internal.Symbol, [core.String]),
|
||||
validated: dart.definiteFunctionType(_internal.Symbol, [core.String])
|
||||
}),
|
||||
fields: () => ({[_name]: core.String}),
|
||||
fields: () => ({
|
||||
[_name]: core.String,
|
||||
[_nativeSymbol]: dart.dynamic
|
||||
}),
|
||||
methods: () => ({'==': dart.definiteFunctionType(core.bool, [core.Object])}),
|
||||
sfields: () => ({
|
||||
reservedWordRE: core.String,
|
||||
|
@ -8716,10 +8735,11 @@ define([], function() {
|
|||
}),
|
||||
statics: () => ({
|
||||
getName: dart.definiteFunctionType(core.String, [_internal.Symbol]),
|
||||
getNativeSymbol: dart.definiteFunctionType(dart.dynamic, [_internal.Symbol]),
|
||||
validatePublicSymbol: dart.definiteFunctionType(core.String, [core.String]),
|
||||
isValidSymbol: dart.definiteFunctionType(core.bool, [core.String])
|
||||
}),
|
||||
names: ['getName', 'validatePublicSymbol', 'isValidSymbol']
|
||||
names: ['getName', 'getNativeSymbol', 'validatePublicSymbol', 'isValidSymbol']
|
||||
});
|
||||
_internal.Symbol.reservedWordRE = '(?:assert|break|c(?:a(?:se|tch)|lass|on(?:st|tinue))|d(?:efault|o)|' + 'e(?:lse|num|xtends)|f(?:alse|inal(?:ly)?|or)|i[fns]|n(?:ew|ull)|' + 'ret(?:hrow|urn)|s(?:uper|witch)|t(?:h(?:is|row)|r(?:ue|y))|' + 'v(?:ar|oid)|w(?:hile|ith))';
|
||||
_internal.Symbol.operatorRE = '(?:[\\-+*/%&|^]|\\[\\]=?|==|~/?|<[<=]?|>[>=]?|unary-)';
|
||||
|
@ -13230,73 +13250,109 @@ define([], function() {
|
|||
return _js_mirrors._dart.definiteFunctionType(type, []);
|
||||
};
|
||||
dart.fn(_js_mirrors._defaultConstructorType, dynamicTodynamic$());
|
||||
_js_mirrors._getMixins = function(type) {
|
||||
return _js_mirrors._dart.getMixins(type, []);
|
||||
};
|
||||
dart.fn(_js_mirrors._getMixins, dynamicTodynamic$());
|
||||
_js_mirrors._Lazy$ = dart.generic(T => {
|
||||
const _Lazy = dart.typedef('_Lazy', () => dart.functionType(T, []));
|
||||
return _Lazy;
|
||||
});
|
||||
_js_mirrors._Lazy = _Lazy();
|
||||
_js_mirrors._getESSymbol = function(symbol) {
|
||||
return _internal.Symbol.getNativeSymbol(_internal.Symbol.as(symbol));
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getESSymbol, () => SymbolTodynamic());
|
||||
_js_mirrors._getMember = function(symbol) {
|
||||
let privateSymbol = _js_mirrors._getESSymbol(symbol);
|
||||
if (privateSymbol != null) {
|
||||
return privateSymbol;
|
||||
}
|
||||
return _js_mirrors.getName(symbol);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getMember, () => SymbolTodynamic());
|
||||
_js_mirrors._getNameForESSymbol = function(member) {
|
||||
dart.assert(typeof member == "symbol");
|
||||
let str = dart.toString(member);
|
||||
dart.assert(dart.test(str[dartx.startsWith]('Symbol(')) && dart.test(str[dartx.endsWith](')')));
|
||||
return str[dartx.substring](7, dart.notNull(str[dartx.length]) - 1);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getNameForESSymbol, () => dynamicToString());
|
||||
_js_mirrors._getSymbolForESSymbol = function(member) {
|
||||
let name = _js_mirrors._getNameForESSymbol(member);
|
||||
return new _internal.Symbol.es6(name, member);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getSymbolForESSymbol, () => dynamicToSymbol());
|
||||
_js_mirrors._getSymbolForMember = function(member) {
|
||||
if (typeof member == 'string') {
|
||||
return core.Symbol.new(member);
|
||||
} else {
|
||||
let name = _js_mirrors._getNameForESSymbol(member);
|
||||
return new _internal.Symbol.es6(name, member);
|
||||
}
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getSymbolForMember, () => dynamicToSymbol());
|
||||
_js_mirrors._toDartMap = function(data) {
|
||||
if (data == null) return dart.map();
|
||||
let map = _js_mirrors._dart.map(data);
|
||||
if (data == null) return dart.map({}, core.Symbol, dart.dynamic);
|
||||
let map = MapOfSymbol$dynamic().new();
|
||||
let publicMembers = Object.getOwnPropertyNames(data);
|
||||
for (let member of core.Iterable._check(publicMembers)) {
|
||||
let symbol = core.Symbol.new(core.String._check(member));
|
||||
map[dartx._set](symbol, data[member]);
|
||||
}
|
||||
let privateMembers = Object.getOwnPropertySymbols(data);
|
||||
for (let member of core.Iterable._check(privateMembers)) {
|
||||
let name = _js_mirrors._getNameForESSymbol(member);
|
||||
map[dartx._set](name, data[member]);
|
||||
let symbol = _js_mirrors._getSymbolForESSymbol(member);
|
||||
map[dartx._set](symbol, data[member]);
|
||||
}
|
||||
return map;
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._toDartMap, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._toDartMap, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getConstructors = function(obj) {
|
||||
let sig = _js_mirrors._dart.getConstructorSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getConstructors, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getConstructors, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getFields = function(obj) {
|
||||
let sig = _js_mirrors._dart.getFieldSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getFields, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getFields, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getMethods = function(obj) {
|
||||
let sig = _js_mirrors._dart.getMethodSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getMethods, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getMethods, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getGetters = function(obj) {
|
||||
let sig = _js_mirrors._dart.getGetterSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getGetters, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getGetters, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getSetters = function(obj) {
|
||||
let sig = _js_mirrors._dart.getSetterSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getSetters, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getSetters, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getStaticFields = function(obj) {
|
||||
let sig = _js_mirrors._dart.getStaticFieldSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getStaticFields, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getStaticFields, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getStatics = function(obj) {
|
||||
let sig = _js_mirrors._dart.getStaticSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getStatics, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getStatics, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getStaticGetters = function(obj) {
|
||||
let sig = _js_mirrors._dart.getStaticGetterSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getStaticGetters, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getStaticGetters, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getStaticSetters = function(obj) {
|
||||
let sig = _js_mirrors._dart.getStaticSetterSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getStaticSetters, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getStaticSetters, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._unwrap = function(obj) {
|
||||
return _js_mirrors._dart.unwrapType(obj);
|
||||
};
|
||||
|
@ -13435,15 +13491,7 @@ define([], function() {
|
|||
[_getAccessor](reflectee, symbol, args, namedArgs) {
|
||||
if (args === void 0) args = null;
|
||||
if (namedArgs === void 0) namedArgs = null;
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
if (!dart.test(name[dartx.startsWith]('_'))) return name;
|
||||
let privateMembers = Object.getOwnPropertySymbols(reflectee);
|
||||
dart.dsend(privateMembers, 'addAll', Object.getOwnPropertySymbols(reflectee.__proto__));
|
||||
for (let member of core.Iterable._check(privateMembers)) {
|
||||
let privateName = _js_mirrors._getNameForESSymbol(member);
|
||||
if (name == privateName) return member;
|
||||
}
|
||||
return new core.NoSuchMethodError(reflectee, symbol, args, namedArgs);
|
||||
return _js_mirrors._getMember(symbol);
|
||||
}
|
||||
getField(symbol) {
|
||||
let name = this[_getAccessor](this.reflectee, symbol);
|
||||
|
@ -13520,6 +13568,7 @@ define([], function() {
|
|||
let const$0;
|
||||
const _declarations = Symbol('_declarations');
|
||||
const _raw = Symbol('_raw');
|
||||
const _mixin = Symbol('_mixin');
|
||||
const _typeArguments = Symbol('_typeArguments');
|
||||
let const$1;
|
||||
_js_mirrors.JsClassMirror = class JsClassMirror extends _js_mirrors.JsMirror {
|
||||
|
@ -13536,67 +13585,66 @@ define([], function() {
|
|||
this[_declarations] = MapOfSymbol$DeclarationMirror().new();
|
||||
let unwrapped = _js_mirrors._unwrap(this[_cls]);
|
||||
let constructors = _js_mirrors._getConstructors(unwrapped);
|
||||
constructors[dartx.forEach](dart.fn((name, ft) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._constructor(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
constructors[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._constructor(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
if (dart.test(constructors[dartx.isEmpty])) {
|
||||
let name = 'new';
|
||||
let ft = _js_mirrors._defaultConstructorType(_js_mirrors._unwrap(this[_cls]));
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._constructor(this, name, ft));
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._constructor(this, symbol, ft));
|
||||
}
|
||||
let fields = _js_mirrors._getFields(unwrapped);
|
||||
fields[dartx.forEach](dart.fn((name, t) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
fields[dartx.forEach](dart.fn((symbol, t) => {
|
||||
let metadata = [];
|
||||
if (core.List.is(t)) {
|
||||
metadata = core.List._check(dart.dsend(dart.dsend(t, 'skip', 1), 'toList'));
|
||||
t = dart.dindex(t, 0);
|
||||
}
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsVariableMirror._(name, core.Type._check(_js_mirrors._wrap(t)), metadata));
|
||||
}, StringAnddynamicTovoid()));
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsVariableMirror._(symbol, core.Type._check(_js_mirrors._wrap(t)), metadata));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let methods = _js_mirrors._getMethods(unwrapped);
|
||||
methods[dartx.forEach](dart.fn((name, ft) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
methods[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let getters = _js_mirrors._getGetters(unwrapped);
|
||||
getters[dartx.forEach](dart.fn((name, ft) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
getters[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let setters = _js_mirrors._getSetters(unwrapped);
|
||||
setters[dartx.forEach](dart.fn((name, ft) => {
|
||||
name = dart.notNull(name) + '=';
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
setters[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = dart.notNull(_js_mirrors.getName(symbol)) + '=';
|
||||
symbol = new _internal.Symbol.es6(name, _js_mirrors._getESSymbol(symbol));
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let staticFields = _js_mirrors._getStaticFields(unwrapped);
|
||||
staticFields[dartx.forEach](dart.fn((name, t) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
staticFields[dartx.forEach](dart.fn((symbol, t) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
let metadata = [];
|
||||
if (core.List.is(t)) {
|
||||
metadata = core.List._check(dart.dsend(dart.dsend(t, 'skip', 1), 'toList'));
|
||||
t = dart.dindex(t, 0);
|
||||
}
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsVariableMirror._(name, core.Type._check(_js_mirrors._wrap(t)), metadata));
|
||||
}, StringAnddynamicTovoid()));
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsVariableMirror._(symbol, core.Type._check(_js_mirrors._wrap(t)), metadata));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let statics = _js_mirrors._getStatics(unwrapped);
|
||||
statics[dartx.forEach](dart.fn((name, ft) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
statics[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let staticGetters = _js_mirrors._getStaticGetters(unwrapped);
|
||||
staticGetters[dartx.forEach](dart.fn((name, ft) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
staticGetters[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let staticSetters = _js_mirrors._getStaticSetters(unwrapped);
|
||||
staticSetters[dartx.forEach](dart.fn((name, ft) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
staticSetters[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
this[_declarations] = MapOfSymbol$DeclarationMirror().unmodifiable(this[_declarations]);
|
||||
}
|
||||
return this[_declarations];
|
||||
|
@ -13605,7 +13653,7 @@ define([], function() {
|
|||
this[_cls] = cls;
|
||||
this[_raw] = _js_mirrors._getGenericClass(_js_mirrors._unwrap(cls));
|
||||
this.simpleName = core.Symbol.new(_js_mirrors._unwrap(cls).name);
|
||||
this.mixin = null;
|
||||
this[_mixin] = null;
|
||||
this[_typeArguments] = null;
|
||||
this[_metadata$] = null;
|
||||
this[_declarations] = null;
|
||||
|
@ -13676,6 +13724,21 @@ define([], function() {
|
|||
return mirrors.ClassMirror._check(_js_mirrors.reflectType(core.Type._check(_js_mirrors._wrap(_js_mirrors._unwrap(this[_cls]).__proto__))));
|
||||
}
|
||||
}
|
||||
get mixin() {
|
||||
if (this[_mixin] != null) {
|
||||
return this[_mixin];
|
||||
}
|
||||
let mixins = _js_mirrors._getMixins(_js_mirrors._unwrap(this[_cls]));
|
||||
if (mixins == null || dart.test(dart.dload(mixins, 'isEmpty'))) {
|
||||
this[_mixin] = this;
|
||||
return this[_mixin];
|
||||
}
|
||||
if (dart.test(dart.dsend(dart.dload(mixins, 'length'), '>', 1))) {
|
||||
dart.throw(new core.UnsupportedError("ClassMirror.mixin not yet supported for " + dart.str`classes (${this[_cls]}) with multiple mixins`));
|
||||
}
|
||||
this[_mixin] = mirrors.ClassMirror._check(_js_mirrors.reflectType(core.Type._check(_js_mirrors._wrap(dart.dindex(mixins, 0)))));
|
||||
return this[_mixin];
|
||||
}
|
||||
toString() {
|
||||
return dart.str`ClassMirror on '${this[_cls]}'`;
|
||||
}
|
||||
|
@ -13724,7 +13787,7 @@ define([], function() {
|
|||
[_cls]: core.Type,
|
||||
simpleName: core.Symbol,
|
||||
[_raw]: dart.dynamic,
|
||||
mixin: mirrors.ClassMirror,
|
||||
[_mixin]: mirrors.ClassMirror,
|
||||
[_typeArguments]: ListOfTypeMirror(),
|
||||
[_metadata$]: ListOfInstanceMirror(),
|
||||
[_declarations]: MapOfSymbol$DeclarationMirror()
|
||||
|
@ -13738,7 +13801,8 @@ define([], function() {
|
|||
isOriginalDeclaration: dart.definiteFunctionType(core.bool, []),
|
||||
typeArguments: dart.definiteFunctionType(core.List$(mirrors.TypeMirror), []),
|
||||
originalDeclaration: dart.definiteFunctionType(mirrors.TypeMirror, []),
|
||||
superclass: dart.definiteFunctionType(mirrors.ClassMirror, [])
|
||||
superclass: dart.definiteFunctionType(mirrors.ClassMirror, []),
|
||||
mixin: dart.definiteFunctionType(mirrors.ClassMirror, [])
|
||||
}),
|
||||
methods: () => ({
|
||||
newInstance: dart.definiteFunctionType(mirrors.InstanceMirror, [core.Symbol, core.List], [MapOfSymbol$dynamic()]),
|
||||
|
@ -13747,13 +13811,15 @@ define([], function() {
|
|||
invoke: dart.definiteFunctionType(mirrors.InstanceMirror, [core.Symbol, core.List], [MapOfSymbol$dynamic()])
|
||||
})
|
||||
});
|
||||
const _symbol = Symbol('_symbol');
|
||||
const _name$ = Symbol('_name');
|
||||
_js_mirrors.JsVariableMirror = class JsVariableMirror extends _js_mirrors.JsMirror {
|
||||
get simpleName() {
|
||||
return core.Symbol.new(this[_name$]);
|
||||
return this[_symbol];
|
||||
}
|
||||
_(name, t, annotations) {
|
||||
this[_name$] = name;
|
||||
_(symbol, t, annotations) {
|
||||
this[_symbol] = symbol;
|
||||
this[_name$] = _js_mirrors.getName(symbol);
|
||||
this.type = _js_mirrors.reflectType(t);
|
||||
this.metadata = ListOfInstanceMirror().unmodifiable(annotations[dartx.map](mirrors.InstanceMirror)(dart.fn(a => _js_mirrors.reflect(a), dynamicToInstanceMirror())));
|
||||
this.isStatic = false;
|
||||
|
@ -13784,8 +13850,9 @@ define([], function() {
|
|||
dart.defineNamedConstructor(_js_mirrors.JsVariableMirror, '_');
|
||||
_js_mirrors.JsVariableMirror[dart.implements] = () => [mirrors.VariableMirror];
|
||||
dart.setSignature(_js_mirrors.JsVariableMirror, {
|
||||
constructors: () => ({_: dart.definiteFunctionType(_js_mirrors.JsVariableMirror, [core.String, core.Type, core.List])}),
|
||||
constructors: () => ({_: dart.definiteFunctionType(_js_mirrors.JsVariableMirror, [core.Symbol, core.Type, core.List])}),
|
||||
fields: () => ({
|
||||
[_symbol]: core.Symbol,
|
||||
[_name$]: core.String,
|
||||
type: mirrors.TypeMirror,
|
||||
metadata: ListOfInstanceMirror(),
|
||||
|
@ -13795,8 +13862,8 @@ define([], function() {
|
|||
getters: () => ({simpleName: dart.definiteFunctionType(core.Symbol, [])})
|
||||
});
|
||||
_js_mirrors.JsParameterMirror = class JsParameterMirror extends _js_mirrors.JsVariableMirror {
|
||||
_(name, t, annotations) {
|
||||
super._(name, t, annotations);
|
||||
_(member, t, annotations) {
|
||||
super._(member, t, annotations);
|
||||
}
|
||||
toString() {
|
||||
return dart.str`ParameterMirror on '${this[_name$]}'`;
|
||||
|
@ -13835,7 +13902,7 @@ define([], function() {
|
|||
dart.defineNamedConstructor(_js_mirrors.JsParameterMirror, '_');
|
||||
_js_mirrors.JsParameterMirror[dart.implements] = () => [mirrors.ParameterMirror];
|
||||
dart.setSignature(_js_mirrors.JsParameterMirror, {
|
||||
constructors: () => ({_: dart.definiteFunctionType(_js_mirrors.JsParameterMirror, [core.String, core.Type, core.List])})
|
||||
constructors: () => ({_: dart.definiteFunctionType(_js_mirrors.JsParameterMirror, [core.Symbol, core.Type, core.List])})
|
||||
});
|
||||
const _params = Symbol('_params');
|
||||
const _createParameterMirrorList = Symbol('_createParameterMirrorList');
|
||||
|
@ -13850,10 +13917,11 @@ define([], function() {
|
|||
return this[_name$][dartx.startsWith]('_');
|
||||
}
|
||||
get simpleName() {
|
||||
return core.Symbol.new(this[_name$]);
|
||||
return this[_symbol];
|
||||
}
|
||||
_constructor(cls, name, ftype) {
|
||||
this[_name$] = name;
|
||||
_constructor(cls, symbol, ftype) {
|
||||
this[_symbol] = symbol;
|
||||
this[_name$] = _js_mirrors.getName(symbol);
|
||||
this.isConstructor = true;
|
||||
this.isStatic = false;
|
||||
this[_params] = null;
|
||||
|
@ -13861,8 +13929,9 @@ define([], function() {
|
|||
this.isFinal = false;
|
||||
this[_createParameterMirrorList](ftype);
|
||||
}
|
||||
_instanceMethod(cls, name, ftype) {
|
||||
this[_name$] = name;
|
||||
_instanceMethod(cls, symbol, ftype) {
|
||||
this[_symbol] = symbol;
|
||||
this[_name$] = _js_mirrors.getName(symbol);
|
||||
this.isConstructor = false;
|
||||
this.isStatic = false;
|
||||
this[_params] = null;
|
||||
|
@ -13870,8 +13939,9 @@ define([], function() {
|
|||
this.isFinal = false;
|
||||
this[_createParameterMirrorList](ftype);
|
||||
}
|
||||
_staticMethod(cls, name, ftype) {
|
||||
this[_name$] = name;
|
||||
_staticMethod(cls, symbol, ftype) {
|
||||
this[_symbol] = symbol;
|
||||
this[_name$] = _js_mirrors.getName(symbol);
|
||||
this.isConstructor = false;
|
||||
this.isStatic = true;
|
||||
this[_params] = null;
|
||||
|
@ -13880,7 +13950,7 @@ define([], function() {
|
|||
this[_createParameterMirrorList](ftype);
|
||||
}
|
||||
get constructorName() {
|
||||
return dart.test(this.isConstructor) ? core.Symbol.new(this[_name$]) : null;
|
||||
return dart.test(this.isConstructor) ? this[_symbol] : null;
|
||||
}
|
||||
get parameters() {
|
||||
return this[_params];
|
||||
|
@ -13909,13 +13979,13 @@ define([], function() {
|
|||
for (let i = 0; i < dart.notNull(args[dartx.length]); ++i) {
|
||||
let type = args[dartx._get](i);
|
||||
let metadata = dart.dindex(dart.dload(ftype, 'metadata'), i);
|
||||
let param = new _js_mirrors.JsParameterMirror._('', core.Type._check(_js_mirrors._wrap(type)), core.List._check(metadata));
|
||||
let param = new _js_mirrors.JsParameterMirror._(core.Symbol.new(''), core.Type._check(_js_mirrors._wrap(type)), core.List._check(metadata));
|
||||
params[dartx._set](i, param);
|
||||
}
|
||||
for (let i = 0; i < dart.notNull(opts[dartx.length]); ++i) {
|
||||
let type = opts[dartx._get](i);
|
||||
let metadata = dart.dindex(dart.dload(ftype, 'metadata'), dart.notNull(args[dartx.length]) + i);
|
||||
let param = new _js_mirrors.JsParameterMirror._('', core.Type._check(_js_mirrors._wrap(type)), core.List._check(metadata));
|
||||
let param = new _js_mirrors.JsParameterMirror._(core.Symbol.new(''), core.Type._check(_js_mirrors._wrap(type)), core.List._check(metadata));
|
||||
params[dartx._set](i + dart.notNull(args[dartx.length]), param);
|
||||
}
|
||||
this[_params] = ListOfParameterMirror().unmodifiable(params);
|
||||
|
@ -13975,11 +14045,12 @@ define([], function() {
|
|||
_js_mirrors.JsMethodMirror[dart.implements] = () => [mirrors.MethodMirror];
|
||||
dart.setSignature(_js_mirrors.JsMethodMirror, {
|
||||
constructors: () => ({
|
||||
_constructor: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.String, dart.dynamic]),
|
||||
_instanceMethod: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.String, dart.dynamic]),
|
||||
_staticMethod: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.String, dart.dynamic])
|
||||
_constructor: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.Symbol, dart.dynamic]),
|
||||
_instanceMethod: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.Symbol, dart.dynamic]),
|
||||
_staticMethod: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.Symbol, dart.dynamic])
|
||||
}),
|
||||
fields: () => ({
|
||||
[_symbol]: core.Symbol,
|
||||
[_name$]: core.String,
|
||||
[_params]: ListOfParameterMirror(),
|
||||
[_metadata$]: ListOfInstanceMirror(),
|
||||
|
|
|
@ -616,11 +616,12 @@
|
|||
let TypeToTypeMirror = () => (TypeToTypeMirror = dart.constFn(dart.definiteFunctionType(mirrors.TypeMirror, [core.Type])))();
|
||||
let dynamicAndListTodynamic = () => (dynamicAndListTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic, core.List])))();
|
||||
let dynamicAndStringAndListTodynamic = () => (dynamicAndStringAndListTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic, core.String, core.List])))();
|
||||
let dynamicToMap = () => (dynamicToMap = dart.constFn(dart.definiteFunctionType(core.Map, [dart.dynamic])))();
|
||||
let SymbolTodynamic = () => (SymbolTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.Symbol])))();
|
||||
let dynamicToSymbol = () => (dynamicToSymbol = dart.constFn(dart.definiteFunctionType(core.Symbol, [dart.dynamic])))();
|
||||
let dynamicToMapOfSymbol$dynamic = () => (dynamicToMapOfSymbol$dynamic = dart.constFn(dart.definiteFunctionType(MapOfSymbol$dynamic(), [dart.dynamic])))();
|
||||
let TypeAndInvocationTodynamic = () => (TypeAndInvocationTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.Type, core.Invocation])))();
|
||||
let SymbolAnddynamicTovoid = () => (SymbolAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.Symbol, dart.dynamic])))();
|
||||
let MapOfSymbol$dynamicTodynamic = () => (MapOfSymbol$dynamicTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [MapOfSymbol$dynamic()])))();
|
||||
let StringAnddynamicTovoid = () => (StringAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.String, dart.dynamic])))();
|
||||
let dynamicToTypeMirror = () => (dynamicToTypeMirror = dart.constFn(dart.definiteFunctionType(mirrors.TypeMirror, [dart.dynamic])))();
|
||||
let dynamicAnddynamicAnddynamicTovoid = () => (dynamicAnddynamicAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic])))();
|
||||
let ListToList = () => (ListToList = dart.constFn(dart.definiteFunctionType(core.List, [core.List])))();
|
||||
|
@ -678,6 +679,7 @@
|
|||
let ObjectToint = () => (ObjectToint = dart.constFn(dart.definiteFunctionType(core.int, [core.Object])))();
|
||||
let ObjectTovoid = () => (ObjectTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.Object])))();
|
||||
let StringAndStringTovoid$ = () => (StringAndStringTovoid$ = dart.constFn(dart.definiteFunctionType(dart.void, [core.String, core.String])))();
|
||||
let StringAnddynamicTovoid = () => (StringAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.String, dart.dynamic])))();
|
||||
let MapOfString$StringAndStringToMapOfString$String = () => (MapOfString$StringAndStringToMapOfString$String = dart.constFn(dart.definiteFunctionType(MapOfString$String(), [MapOfString$String(), core.String])))();
|
||||
let intAndintAndintTovoid = () => (intAndintAndintTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.int, core.int, core.int])))();
|
||||
let String__Tovoid = () => (String__Tovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.String], [dart.dynamic])))();
|
||||
|
@ -749,6 +751,7 @@
|
|||
let NodeAndNodeTovoid = () => (NodeAndNodeTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [html$.Node, html$.Node])))();
|
||||
let dynamicToImageData = () => (dynamicToImageData = dart.constFn(dart.definiteFunctionType(html$.ImageData, [dart.dynamic])))();
|
||||
let ImageDataTodynamic = () => (ImageDataTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [html$.ImageData])))();
|
||||
let dynamicToMap = () => (dynamicToMap = dart.constFn(dart.definiteFunctionType(core.Map, [dart.dynamic])))();
|
||||
let Map__Todynamic = () => (Map__Todynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.Map], [dynamicTovoid()])))();
|
||||
let ListOfStringToList = () => (ListOfStringToList = dart.constFn(dart.definiteFunctionType(core.List, [ListOfString()])))();
|
||||
let dynamicToDateTime = () => (dynamicToDateTime = dart.constFn(dart.definiteFunctionType(core.DateTime, [dart.dynamic])))();
|
||||
|
@ -780,10 +783,10 @@
|
|||
return Mixin;
|
||||
};
|
||||
dart.getMixins = function(clazz) {
|
||||
return clazz[dart._mixins];
|
||||
return Object.hasOwnProperty.call(clazz, dart._mixins) ? clazz[dart._mixins] : null;
|
||||
};
|
||||
dart.getImplements = function(clazz) {
|
||||
return clazz[dart.implements];
|
||||
return Object.hasOwnProperty.call(clazz, dart.implements) ? clazz[dart.implements] : null;
|
||||
};
|
||||
dart.flattenFutures = function(builder) {
|
||||
function flatten(T) {
|
||||
|
@ -8657,18 +8660,26 @@
|
|||
});
|
||||
_internal.Sort._INSERTION_SORT_THRESHOLD = 32;
|
||||
const _name = Symbol('_name');
|
||||
const _nativeSymbol = Symbol('_nativeSymbol');
|
||||
_internal.Symbol = class Symbol extends core.Object {
|
||||
new(name) {
|
||||
this[_name] = name;
|
||||
this[_nativeSymbol] = null;
|
||||
}
|
||||
es6(name, nativeSymbol) {
|
||||
this[_name] = name;
|
||||
this[_nativeSymbol] = nativeSymbol;
|
||||
}
|
||||
unvalidated(name) {
|
||||
this[_name] = name;
|
||||
this[_nativeSymbol] = null;
|
||||
}
|
||||
validated(name) {
|
||||
this[_name] = _internal.Symbol.validatePublicSymbol(name);
|
||||
this[_nativeSymbol] = null;
|
||||
}
|
||||
['=='](other) {
|
||||
return _internal.Symbol.is(other) && this[_name] == other[_name];
|
||||
return _internal.Symbol.is(other) && this[_name] == other[_name] && dart.equals(this[_nativeSymbol], other[_nativeSymbol]);
|
||||
}
|
||||
get hashCode() {
|
||||
let hash = this._hashCode;
|
||||
|
@ -8684,6 +8695,9 @@
|
|||
static getName(symbol) {
|
||||
return symbol[_name];
|
||||
}
|
||||
static getNativeSymbol(symbol) {
|
||||
return symbol[_nativeSymbol];
|
||||
}
|
||||
static validatePublicSymbol(name) {
|
||||
if (dart.test(name[dartx.isEmpty]) || dart.test(_internal.Symbol.publicSymbolPattern.hasMatch(name))) return name;
|
||||
if (dart.test(name[dartx.startsWith]('_'))) {
|
||||
|
@ -8695,16 +8709,21 @@
|
|||
return dart.test(name[dartx.isEmpty]) || dart.test(_internal.Symbol.symbolPattern.hasMatch(name));
|
||||
}
|
||||
};
|
||||
dart.defineNamedConstructor(_internal.Symbol, 'es6');
|
||||
dart.defineNamedConstructor(_internal.Symbol, 'unvalidated');
|
||||
dart.defineNamedConstructor(_internal.Symbol, 'validated');
|
||||
_internal.Symbol[dart.implements] = () => [core.Symbol];
|
||||
dart.setSignature(_internal.Symbol, {
|
||||
constructors: () => ({
|
||||
new: dart.definiteFunctionType(_internal.Symbol, [core.String]),
|
||||
es6: dart.definiteFunctionType(_internal.Symbol, [core.String, dart.dynamic]),
|
||||
unvalidated: dart.definiteFunctionType(_internal.Symbol, [core.String]),
|
||||
validated: dart.definiteFunctionType(_internal.Symbol, [core.String])
|
||||
}),
|
||||
fields: () => ({[_name]: core.String}),
|
||||
fields: () => ({
|
||||
[_name]: core.String,
|
||||
[_nativeSymbol]: dart.dynamic
|
||||
}),
|
||||
methods: () => ({'==': dart.definiteFunctionType(core.bool, [core.Object])}),
|
||||
sfields: () => ({
|
||||
reservedWordRE: core.String,
|
||||
|
@ -8716,10 +8735,11 @@
|
|||
}),
|
||||
statics: () => ({
|
||||
getName: dart.definiteFunctionType(core.String, [_internal.Symbol]),
|
||||
getNativeSymbol: dart.definiteFunctionType(dart.dynamic, [_internal.Symbol]),
|
||||
validatePublicSymbol: dart.definiteFunctionType(core.String, [core.String]),
|
||||
isValidSymbol: dart.definiteFunctionType(core.bool, [core.String])
|
||||
}),
|
||||
names: ['getName', 'validatePublicSymbol', 'isValidSymbol']
|
||||
names: ['getName', 'getNativeSymbol', 'validatePublicSymbol', 'isValidSymbol']
|
||||
});
|
||||
_internal.Symbol.reservedWordRE = '(?:assert|break|c(?:a(?:se|tch)|lass|on(?:st|tinue))|d(?:efault|o)|' + 'e(?:lse|num|xtends)|f(?:alse|inal(?:ly)?|or)|i[fns]|n(?:ew|ull)|' + 'ret(?:hrow|urn)|s(?:uper|witch)|t(?:h(?:is|row)|r(?:ue|y))|' + 'v(?:ar|oid)|w(?:hile|ith))';
|
||||
_internal.Symbol.operatorRE = '(?:[\\-+*/%&|^]|\\[\\]=?|==|~/?|<[<=]?|>[>=]?|unary-)';
|
||||
|
@ -13230,73 +13250,109 @@
|
|||
return _js_mirrors._dart.definiteFunctionType(type, []);
|
||||
};
|
||||
dart.fn(_js_mirrors._defaultConstructorType, dynamicTodynamic$());
|
||||
_js_mirrors._getMixins = function(type) {
|
||||
return _js_mirrors._dart.getMixins(type, []);
|
||||
};
|
||||
dart.fn(_js_mirrors._getMixins, dynamicTodynamic$());
|
||||
_js_mirrors._Lazy$ = dart.generic(T => {
|
||||
const _Lazy = dart.typedef('_Lazy', () => dart.functionType(T, []));
|
||||
return _Lazy;
|
||||
});
|
||||
_js_mirrors._Lazy = _Lazy();
|
||||
_js_mirrors._getESSymbol = function(symbol) {
|
||||
return _internal.Symbol.getNativeSymbol(_internal.Symbol.as(symbol));
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getESSymbol, () => SymbolTodynamic());
|
||||
_js_mirrors._getMember = function(symbol) {
|
||||
let privateSymbol = _js_mirrors._getESSymbol(symbol);
|
||||
if (privateSymbol != null) {
|
||||
return privateSymbol;
|
||||
}
|
||||
return _js_mirrors.getName(symbol);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getMember, () => SymbolTodynamic());
|
||||
_js_mirrors._getNameForESSymbol = function(member) {
|
||||
dart.assert(typeof member == "symbol");
|
||||
let str = dart.toString(member);
|
||||
dart.assert(dart.test(str[dartx.startsWith]('Symbol(')) && dart.test(str[dartx.endsWith](')')));
|
||||
return str[dartx.substring](7, dart.notNull(str[dartx.length]) - 1);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getNameForESSymbol, () => dynamicToString());
|
||||
_js_mirrors._getSymbolForESSymbol = function(member) {
|
||||
let name = _js_mirrors._getNameForESSymbol(member);
|
||||
return new _internal.Symbol.es6(name, member);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getSymbolForESSymbol, () => dynamicToSymbol());
|
||||
_js_mirrors._getSymbolForMember = function(member) {
|
||||
if (typeof member == 'string') {
|
||||
return core.Symbol.new(member);
|
||||
} else {
|
||||
let name = _js_mirrors._getNameForESSymbol(member);
|
||||
return new _internal.Symbol.es6(name, member);
|
||||
}
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getSymbolForMember, () => dynamicToSymbol());
|
||||
_js_mirrors._toDartMap = function(data) {
|
||||
if (data == null) return dart.map();
|
||||
let map = _js_mirrors._dart.map(data);
|
||||
if (data == null) return dart.map({}, core.Symbol, dart.dynamic);
|
||||
let map = MapOfSymbol$dynamic().new();
|
||||
let publicMembers = Object.getOwnPropertyNames(data);
|
||||
for (let member of core.Iterable._check(publicMembers)) {
|
||||
let symbol = core.Symbol.new(core.String._check(member));
|
||||
map[dartx._set](symbol, data[member]);
|
||||
}
|
||||
let privateMembers = Object.getOwnPropertySymbols(data);
|
||||
for (let member of core.Iterable._check(privateMembers)) {
|
||||
let name = _js_mirrors._getNameForESSymbol(member);
|
||||
map[dartx._set](name, data[member]);
|
||||
let symbol = _js_mirrors._getSymbolForESSymbol(member);
|
||||
map[dartx._set](symbol, data[member]);
|
||||
}
|
||||
return map;
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._toDartMap, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._toDartMap, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getConstructors = function(obj) {
|
||||
let sig = _js_mirrors._dart.getConstructorSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getConstructors, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getConstructors, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getFields = function(obj) {
|
||||
let sig = _js_mirrors._dart.getFieldSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getFields, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getFields, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getMethods = function(obj) {
|
||||
let sig = _js_mirrors._dart.getMethodSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getMethods, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getMethods, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getGetters = function(obj) {
|
||||
let sig = _js_mirrors._dart.getGetterSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getGetters, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getGetters, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getSetters = function(obj) {
|
||||
let sig = _js_mirrors._dart.getSetterSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getSetters, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getSetters, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getStaticFields = function(obj) {
|
||||
let sig = _js_mirrors._dart.getStaticFieldSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getStaticFields, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getStaticFields, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getStatics = function(obj) {
|
||||
let sig = _js_mirrors._dart.getStaticSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getStatics, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getStatics, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getStaticGetters = function(obj) {
|
||||
let sig = _js_mirrors._dart.getStaticGetterSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getStaticGetters, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getStaticGetters, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getStaticSetters = function(obj) {
|
||||
let sig = _js_mirrors._dart.getStaticSetterSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getStaticSetters, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getStaticSetters, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._unwrap = function(obj) {
|
||||
return _js_mirrors._dart.unwrapType(obj);
|
||||
};
|
||||
|
@ -13435,15 +13491,7 @@
|
|||
[_getAccessor](reflectee, symbol, args, namedArgs) {
|
||||
if (args === void 0) args = null;
|
||||
if (namedArgs === void 0) namedArgs = null;
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
if (!dart.test(name[dartx.startsWith]('_'))) return name;
|
||||
let privateMembers = Object.getOwnPropertySymbols(reflectee);
|
||||
dart.dsend(privateMembers, 'addAll', Object.getOwnPropertySymbols(reflectee.__proto__));
|
||||
for (let member of core.Iterable._check(privateMembers)) {
|
||||
let privateName = _js_mirrors._getNameForESSymbol(member);
|
||||
if (name == privateName) return member;
|
||||
}
|
||||
return new core.NoSuchMethodError(reflectee, symbol, args, namedArgs);
|
||||
return _js_mirrors._getMember(symbol);
|
||||
}
|
||||
getField(symbol) {
|
||||
let name = this[_getAccessor](this.reflectee, symbol);
|
||||
|
@ -13520,6 +13568,7 @@
|
|||
let const$0;
|
||||
const _declarations = Symbol('_declarations');
|
||||
const _raw = Symbol('_raw');
|
||||
const _mixin = Symbol('_mixin');
|
||||
const _typeArguments = Symbol('_typeArguments');
|
||||
let const$1;
|
||||
_js_mirrors.JsClassMirror = class JsClassMirror extends _js_mirrors.JsMirror {
|
||||
|
@ -13536,67 +13585,66 @@
|
|||
this[_declarations] = MapOfSymbol$DeclarationMirror().new();
|
||||
let unwrapped = _js_mirrors._unwrap(this[_cls]);
|
||||
let constructors = _js_mirrors._getConstructors(unwrapped);
|
||||
constructors[dartx.forEach](dart.fn((name, ft) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._constructor(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
constructors[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._constructor(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
if (dart.test(constructors[dartx.isEmpty])) {
|
||||
let name = 'new';
|
||||
let ft = _js_mirrors._defaultConstructorType(_js_mirrors._unwrap(this[_cls]));
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._constructor(this, name, ft));
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._constructor(this, symbol, ft));
|
||||
}
|
||||
let fields = _js_mirrors._getFields(unwrapped);
|
||||
fields[dartx.forEach](dart.fn((name, t) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
fields[dartx.forEach](dart.fn((symbol, t) => {
|
||||
let metadata = [];
|
||||
if (core.List.is(t)) {
|
||||
metadata = core.List._check(dart.dsend(dart.dsend(t, 'skip', 1), 'toList'));
|
||||
t = dart.dindex(t, 0);
|
||||
}
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsVariableMirror._(name, core.Type._check(_js_mirrors._wrap(t)), metadata));
|
||||
}, StringAnddynamicTovoid()));
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsVariableMirror._(symbol, core.Type._check(_js_mirrors._wrap(t)), metadata));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let methods = _js_mirrors._getMethods(unwrapped);
|
||||
methods[dartx.forEach](dart.fn((name, ft) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
methods[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let getters = _js_mirrors._getGetters(unwrapped);
|
||||
getters[dartx.forEach](dart.fn((name, ft) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
getters[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let setters = _js_mirrors._getSetters(unwrapped);
|
||||
setters[dartx.forEach](dart.fn((name, ft) => {
|
||||
name = dart.notNull(name) + '=';
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
setters[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = dart.notNull(_js_mirrors.getName(symbol)) + '=';
|
||||
symbol = new _internal.Symbol.es6(name, _js_mirrors._getESSymbol(symbol));
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let staticFields = _js_mirrors._getStaticFields(unwrapped);
|
||||
staticFields[dartx.forEach](dart.fn((name, t) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
staticFields[dartx.forEach](dart.fn((symbol, t) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
let metadata = [];
|
||||
if (core.List.is(t)) {
|
||||
metadata = core.List._check(dart.dsend(dart.dsend(t, 'skip', 1), 'toList'));
|
||||
t = dart.dindex(t, 0);
|
||||
}
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsVariableMirror._(name, core.Type._check(_js_mirrors._wrap(t)), metadata));
|
||||
}, StringAnddynamicTovoid()));
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsVariableMirror._(symbol, core.Type._check(_js_mirrors._wrap(t)), metadata));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let statics = _js_mirrors._getStatics(unwrapped);
|
||||
statics[dartx.forEach](dart.fn((name, ft) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
statics[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let staticGetters = _js_mirrors._getStaticGetters(unwrapped);
|
||||
staticGetters[dartx.forEach](dart.fn((name, ft) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
staticGetters[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let staticSetters = _js_mirrors._getStaticSetters(unwrapped);
|
||||
staticSetters[dartx.forEach](dart.fn((name, ft) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
staticSetters[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
this[_declarations] = MapOfSymbol$DeclarationMirror().unmodifiable(this[_declarations]);
|
||||
}
|
||||
return this[_declarations];
|
||||
|
@ -13605,7 +13653,7 @@
|
|||
this[_cls] = cls;
|
||||
this[_raw] = _js_mirrors._getGenericClass(_js_mirrors._unwrap(cls));
|
||||
this.simpleName = core.Symbol.new(_js_mirrors._unwrap(cls).name);
|
||||
this.mixin = null;
|
||||
this[_mixin] = null;
|
||||
this[_typeArguments] = null;
|
||||
this[_metadata$] = null;
|
||||
this[_declarations] = null;
|
||||
|
@ -13676,6 +13724,21 @@
|
|||
return mirrors.ClassMirror._check(_js_mirrors.reflectType(core.Type._check(_js_mirrors._wrap(_js_mirrors._unwrap(this[_cls]).__proto__))));
|
||||
}
|
||||
}
|
||||
get mixin() {
|
||||
if (this[_mixin] != null) {
|
||||
return this[_mixin];
|
||||
}
|
||||
let mixins = _js_mirrors._getMixins(_js_mirrors._unwrap(this[_cls]));
|
||||
if (mixins == null || dart.test(dart.dload(mixins, 'isEmpty'))) {
|
||||
this[_mixin] = this;
|
||||
return this[_mixin];
|
||||
}
|
||||
if (dart.test(dart.dsend(dart.dload(mixins, 'length'), '>', 1))) {
|
||||
dart.throw(new core.UnsupportedError("ClassMirror.mixin not yet supported for " + dart.str`classes (${this[_cls]}) with multiple mixins`));
|
||||
}
|
||||
this[_mixin] = mirrors.ClassMirror._check(_js_mirrors.reflectType(core.Type._check(_js_mirrors._wrap(dart.dindex(mixins, 0)))));
|
||||
return this[_mixin];
|
||||
}
|
||||
toString() {
|
||||
return dart.str`ClassMirror on '${this[_cls]}'`;
|
||||
}
|
||||
|
@ -13724,7 +13787,7 @@
|
|||
[_cls]: core.Type,
|
||||
simpleName: core.Symbol,
|
||||
[_raw]: dart.dynamic,
|
||||
mixin: mirrors.ClassMirror,
|
||||
[_mixin]: mirrors.ClassMirror,
|
||||
[_typeArguments]: ListOfTypeMirror(),
|
||||
[_metadata$]: ListOfInstanceMirror(),
|
||||
[_declarations]: MapOfSymbol$DeclarationMirror()
|
||||
|
@ -13738,7 +13801,8 @@
|
|||
isOriginalDeclaration: dart.definiteFunctionType(core.bool, []),
|
||||
typeArguments: dart.definiteFunctionType(core.List$(mirrors.TypeMirror), []),
|
||||
originalDeclaration: dart.definiteFunctionType(mirrors.TypeMirror, []),
|
||||
superclass: dart.definiteFunctionType(mirrors.ClassMirror, [])
|
||||
superclass: dart.definiteFunctionType(mirrors.ClassMirror, []),
|
||||
mixin: dart.definiteFunctionType(mirrors.ClassMirror, [])
|
||||
}),
|
||||
methods: () => ({
|
||||
newInstance: dart.definiteFunctionType(mirrors.InstanceMirror, [core.Symbol, core.List], [MapOfSymbol$dynamic()]),
|
||||
|
@ -13747,13 +13811,15 @@
|
|||
invoke: dart.definiteFunctionType(mirrors.InstanceMirror, [core.Symbol, core.List], [MapOfSymbol$dynamic()])
|
||||
})
|
||||
});
|
||||
const _symbol = Symbol('_symbol');
|
||||
const _name$ = Symbol('_name');
|
||||
_js_mirrors.JsVariableMirror = class JsVariableMirror extends _js_mirrors.JsMirror {
|
||||
get simpleName() {
|
||||
return core.Symbol.new(this[_name$]);
|
||||
return this[_symbol];
|
||||
}
|
||||
_(name, t, annotations) {
|
||||
this[_name$] = name;
|
||||
_(symbol, t, annotations) {
|
||||
this[_symbol] = symbol;
|
||||
this[_name$] = _js_mirrors.getName(symbol);
|
||||
this.type = _js_mirrors.reflectType(t);
|
||||
this.metadata = ListOfInstanceMirror().unmodifiable(annotations[dartx.map](mirrors.InstanceMirror)(dart.fn(a => _js_mirrors.reflect(a), dynamicToInstanceMirror())));
|
||||
this.isStatic = false;
|
||||
|
@ -13784,8 +13850,9 @@
|
|||
dart.defineNamedConstructor(_js_mirrors.JsVariableMirror, '_');
|
||||
_js_mirrors.JsVariableMirror[dart.implements] = () => [mirrors.VariableMirror];
|
||||
dart.setSignature(_js_mirrors.JsVariableMirror, {
|
||||
constructors: () => ({_: dart.definiteFunctionType(_js_mirrors.JsVariableMirror, [core.String, core.Type, core.List])}),
|
||||
constructors: () => ({_: dart.definiteFunctionType(_js_mirrors.JsVariableMirror, [core.Symbol, core.Type, core.List])}),
|
||||
fields: () => ({
|
||||
[_symbol]: core.Symbol,
|
||||
[_name$]: core.String,
|
||||
type: mirrors.TypeMirror,
|
||||
metadata: ListOfInstanceMirror(),
|
||||
|
@ -13795,8 +13862,8 @@
|
|||
getters: () => ({simpleName: dart.definiteFunctionType(core.Symbol, [])})
|
||||
});
|
||||
_js_mirrors.JsParameterMirror = class JsParameterMirror extends _js_mirrors.JsVariableMirror {
|
||||
_(name, t, annotations) {
|
||||
super._(name, t, annotations);
|
||||
_(member, t, annotations) {
|
||||
super._(member, t, annotations);
|
||||
}
|
||||
toString() {
|
||||
return dart.str`ParameterMirror on '${this[_name$]}'`;
|
||||
|
@ -13835,7 +13902,7 @@
|
|||
dart.defineNamedConstructor(_js_mirrors.JsParameterMirror, '_');
|
||||
_js_mirrors.JsParameterMirror[dart.implements] = () => [mirrors.ParameterMirror];
|
||||
dart.setSignature(_js_mirrors.JsParameterMirror, {
|
||||
constructors: () => ({_: dart.definiteFunctionType(_js_mirrors.JsParameterMirror, [core.String, core.Type, core.List])})
|
||||
constructors: () => ({_: dart.definiteFunctionType(_js_mirrors.JsParameterMirror, [core.Symbol, core.Type, core.List])})
|
||||
});
|
||||
const _params = Symbol('_params');
|
||||
const _createParameterMirrorList = Symbol('_createParameterMirrorList');
|
||||
|
@ -13850,10 +13917,11 @@
|
|||
return this[_name$][dartx.startsWith]('_');
|
||||
}
|
||||
get simpleName() {
|
||||
return core.Symbol.new(this[_name$]);
|
||||
return this[_symbol];
|
||||
}
|
||||
_constructor(cls, name, ftype) {
|
||||
this[_name$] = name;
|
||||
_constructor(cls, symbol, ftype) {
|
||||
this[_symbol] = symbol;
|
||||
this[_name$] = _js_mirrors.getName(symbol);
|
||||
this.isConstructor = true;
|
||||
this.isStatic = false;
|
||||
this[_params] = null;
|
||||
|
@ -13861,8 +13929,9 @@
|
|||
this.isFinal = false;
|
||||
this[_createParameterMirrorList](ftype);
|
||||
}
|
||||
_instanceMethod(cls, name, ftype) {
|
||||
this[_name$] = name;
|
||||
_instanceMethod(cls, symbol, ftype) {
|
||||
this[_symbol] = symbol;
|
||||
this[_name$] = _js_mirrors.getName(symbol);
|
||||
this.isConstructor = false;
|
||||
this.isStatic = false;
|
||||
this[_params] = null;
|
||||
|
@ -13870,8 +13939,9 @@
|
|||
this.isFinal = false;
|
||||
this[_createParameterMirrorList](ftype);
|
||||
}
|
||||
_staticMethod(cls, name, ftype) {
|
||||
this[_name$] = name;
|
||||
_staticMethod(cls, symbol, ftype) {
|
||||
this[_symbol] = symbol;
|
||||
this[_name$] = _js_mirrors.getName(symbol);
|
||||
this.isConstructor = false;
|
||||
this.isStatic = true;
|
||||
this[_params] = null;
|
||||
|
@ -13880,7 +13950,7 @@
|
|||
this[_createParameterMirrorList](ftype);
|
||||
}
|
||||
get constructorName() {
|
||||
return dart.test(this.isConstructor) ? core.Symbol.new(this[_name$]) : null;
|
||||
return dart.test(this.isConstructor) ? this[_symbol] : null;
|
||||
}
|
||||
get parameters() {
|
||||
return this[_params];
|
||||
|
@ -13909,13 +13979,13 @@
|
|||
for (let i = 0; i < dart.notNull(args[dartx.length]); ++i) {
|
||||
let type = args[dartx._get](i);
|
||||
let metadata = dart.dindex(dart.dload(ftype, 'metadata'), i);
|
||||
let param = new _js_mirrors.JsParameterMirror._('', core.Type._check(_js_mirrors._wrap(type)), core.List._check(metadata));
|
||||
let param = new _js_mirrors.JsParameterMirror._(core.Symbol.new(''), core.Type._check(_js_mirrors._wrap(type)), core.List._check(metadata));
|
||||
params[dartx._set](i, param);
|
||||
}
|
||||
for (let i = 0; i < dart.notNull(opts[dartx.length]); ++i) {
|
||||
let type = opts[dartx._get](i);
|
||||
let metadata = dart.dindex(dart.dload(ftype, 'metadata'), dart.notNull(args[dartx.length]) + i);
|
||||
let param = new _js_mirrors.JsParameterMirror._('', core.Type._check(_js_mirrors._wrap(type)), core.List._check(metadata));
|
||||
let param = new _js_mirrors.JsParameterMirror._(core.Symbol.new(''), core.Type._check(_js_mirrors._wrap(type)), core.List._check(metadata));
|
||||
params[dartx._set](i + dart.notNull(args[dartx.length]), param);
|
||||
}
|
||||
this[_params] = ListOfParameterMirror().unmodifiable(params);
|
||||
|
@ -13975,11 +14045,12 @@
|
|||
_js_mirrors.JsMethodMirror[dart.implements] = () => [mirrors.MethodMirror];
|
||||
dart.setSignature(_js_mirrors.JsMethodMirror, {
|
||||
constructors: () => ({
|
||||
_constructor: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.String, dart.dynamic]),
|
||||
_instanceMethod: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.String, dart.dynamic]),
|
||||
_staticMethod: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.String, dart.dynamic])
|
||||
_constructor: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.Symbol, dart.dynamic]),
|
||||
_instanceMethod: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.Symbol, dart.dynamic]),
|
||||
_staticMethod: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.Symbol, dart.dynamic])
|
||||
}),
|
||||
fields: () => ({
|
||||
[_symbol]: core.Symbol,
|
||||
[_name$]: core.String,
|
||||
[_params]: ListOfParameterMirror(),
|
||||
[_metadata$]: ListOfInstanceMirror(),
|
||||
|
|
|
@ -614,11 +614,12 @@ let dynamicToInstanceMirror = () => (dynamicToInstanceMirror = dart.constFn(dart
|
|||
let TypeToTypeMirror = () => (TypeToTypeMirror = dart.constFn(dart.definiteFunctionType(mirrors.TypeMirror, [core.Type])))();
|
||||
let dynamicAndListTodynamic = () => (dynamicAndListTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic, core.List])))();
|
||||
let dynamicAndStringAndListTodynamic = () => (dynamicAndStringAndListTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic, core.String, core.List])))();
|
||||
let dynamicToMap = () => (dynamicToMap = dart.constFn(dart.definiteFunctionType(core.Map, [dart.dynamic])))();
|
||||
let SymbolTodynamic = () => (SymbolTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.Symbol])))();
|
||||
let dynamicToSymbol = () => (dynamicToSymbol = dart.constFn(dart.definiteFunctionType(core.Symbol, [dart.dynamic])))();
|
||||
let dynamicToMapOfSymbol$dynamic = () => (dynamicToMapOfSymbol$dynamic = dart.constFn(dart.definiteFunctionType(MapOfSymbol$dynamic(), [dart.dynamic])))();
|
||||
let TypeAndInvocationTodynamic = () => (TypeAndInvocationTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.Type, core.Invocation])))();
|
||||
let SymbolAnddynamicTovoid = () => (SymbolAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.Symbol, dart.dynamic])))();
|
||||
let MapOfSymbol$dynamicTodynamic = () => (MapOfSymbol$dynamicTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [MapOfSymbol$dynamic()])))();
|
||||
let StringAnddynamicTovoid = () => (StringAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.String, dart.dynamic])))();
|
||||
let dynamicToTypeMirror = () => (dynamicToTypeMirror = dart.constFn(dart.definiteFunctionType(mirrors.TypeMirror, [dart.dynamic])))();
|
||||
let dynamicAnddynamicAnddynamicTovoid = () => (dynamicAnddynamicAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic])))();
|
||||
let ListToList = () => (ListToList = dart.constFn(dart.definiteFunctionType(core.List, [core.List])))();
|
||||
|
@ -676,6 +677,7 @@ let ObjectAndObjectTobool = () => (ObjectAndObjectTobool = dart.constFn(dart.def
|
|||
let ObjectToint = () => (ObjectToint = dart.constFn(dart.definiteFunctionType(core.int, [core.Object])))();
|
||||
let ObjectTovoid = () => (ObjectTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.Object])))();
|
||||
let StringAndStringTovoid = () => (StringAndStringTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.String, core.String])))();
|
||||
let StringAnddynamicTovoid = () => (StringAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.String, dart.dynamic])))();
|
||||
let MapOfString$StringAndStringToMapOfString$String = () => (MapOfString$StringAndStringToMapOfString$String = dart.constFn(dart.definiteFunctionType(MapOfString$String(), [MapOfString$String(), core.String])))();
|
||||
let intAndintAndintTovoid = () => (intAndintAndintTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.int, core.int, core.int])))();
|
||||
let String__Tovoid = () => (String__Tovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.String], [dart.dynamic])))();
|
||||
|
@ -747,6 +749,7 @@ let StringToElementListOfElement = () => (StringToElementListOfElement = dart.co
|
|||
let NodeAndNodeTovoid = () => (NodeAndNodeTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [html.Node, html.Node])))();
|
||||
let dynamicToImageData = () => (dynamicToImageData = dart.constFn(dart.definiteFunctionType(html.ImageData, [dart.dynamic])))();
|
||||
let ImageDataTodynamic = () => (ImageDataTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [html.ImageData])))();
|
||||
let dynamicToMap = () => (dynamicToMap = dart.constFn(dart.definiteFunctionType(core.Map, [dart.dynamic])))();
|
||||
let Map__Todynamic = () => (Map__Todynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.Map], [dynamicTovoid()])))();
|
||||
let ListOfStringToList = () => (ListOfStringToList = dart.constFn(dart.definiteFunctionType(core.List, [ListOfString()])))();
|
||||
let dynamicToDateTime = () => (dynamicToDateTime = dart.constFn(dart.definiteFunctionType(core.DateTime, [dart.dynamic])))();
|
||||
|
@ -778,10 +781,10 @@ dart.mixin = function(base, ...mixins) {
|
|||
return Mixin;
|
||||
};
|
||||
dart.getMixins = function(clazz) {
|
||||
return clazz[dart._mixins];
|
||||
return Object.hasOwnProperty.call(clazz, dart._mixins) ? clazz[dart._mixins] : null;
|
||||
};
|
||||
dart.getImplements = function(clazz) {
|
||||
return clazz[dart.implements];
|
||||
return Object.hasOwnProperty.call(clazz, dart.implements) ? clazz[dart.implements] : null;
|
||||
};
|
||||
dart.flattenFutures = function(builder) {
|
||||
function flatten(T) {
|
||||
|
@ -8655,18 +8658,26 @@ dart.setSignature(_internal.Sort, {
|
|||
});
|
||||
_internal.Sort._INSERTION_SORT_THRESHOLD = 32;
|
||||
const _name = Symbol('_name');
|
||||
const _nativeSymbol = Symbol('_nativeSymbol');
|
||||
_internal.Symbol = class Symbol extends core.Object {
|
||||
new(name) {
|
||||
this[_name] = name;
|
||||
this[_nativeSymbol] = null;
|
||||
}
|
||||
es6(name, nativeSymbol) {
|
||||
this[_name] = name;
|
||||
this[_nativeSymbol] = nativeSymbol;
|
||||
}
|
||||
unvalidated(name) {
|
||||
this[_name] = name;
|
||||
this[_nativeSymbol] = null;
|
||||
}
|
||||
validated(name) {
|
||||
this[_name] = _internal.Symbol.validatePublicSymbol(name);
|
||||
this[_nativeSymbol] = null;
|
||||
}
|
||||
['=='](other) {
|
||||
return _internal.Symbol.is(other) && this[_name] == other[_name];
|
||||
return _internal.Symbol.is(other) && this[_name] == other[_name] && dart.equals(this[_nativeSymbol], other[_nativeSymbol]);
|
||||
}
|
||||
get hashCode() {
|
||||
let hash = this._hashCode;
|
||||
|
@ -8682,6 +8693,9 @@ _internal.Symbol = class Symbol extends core.Object {
|
|||
static getName(symbol) {
|
||||
return symbol[_name];
|
||||
}
|
||||
static getNativeSymbol(symbol) {
|
||||
return symbol[_nativeSymbol];
|
||||
}
|
||||
static validatePublicSymbol(name) {
|
||||
if (dart.test(name[dartx.isEmpty]) || dart.test(_internal.Symbol.publicSymbolPattern.hasMatch(name))) return name;
|
||||
if (dart.test(name[dartx.startsWith]('_'))) {
|
||||
|
@ -8693,16 +8707,21 @@ _internal.Symbol = class Symbol extends core.Object {
|
|||
return dart.test(name[dartx.isEmpty]) || dart.test(_internal.Symbol.symbolPattern.hasMatch(name));
|
||||
}
|
||||
};
|
||||
dart.defineNamedConstructor(_internal.Symbol, 'es6');
|
||||
dart.defineNamedConstructor(_internal.Symbol, 'unvalidated');
|
||||
dart.defineNamedConstructor(_internal.Symbol, 'validated');
|
||||
_internal.Symbol[dart.implements] = () => [core.Symbol];
|
||||
dart.setSignature(_internal.Symbol, {
|
||||
constructors: () => ({
|
||||
new: dart.definiteFunctionType(_internal.Symbol, [core.String]),
|
||||
es6: dart.definiteFunctionType(_internal.Symbol, [core.String, dart.dynamic]),
|
||||
unvalidated: dart.definiteFunctionType(_internal.Symbol, [core.String]),
|
||||
validated: dart.definiteFunctionType(_internal.Symbol, [core.String])
|
||||
}),
|
||||
fields: () => ({[_name]: core.String}),
|
||||
fields: () => ({
|
||||
[_name]: core.String,
|
||||
[_nativeSymbol]: dart.dynamic
|
||||
}),
|
||||
methods: () => ({'==': dart.definiteFunctionType(core.bool, [core.Object])}),
|
||||
sfields: () => ({
|
||||
reservedWordRE: core.String,
|
||||
|
@ -8714,10 +8733,11 @@ dart.setSignature(_internal.Symbol, {
|
|||
}),
|
||||
statics: () => ({
|
||||
getName: dart.definiteFunctionType(core.String, [_internal.Symbol]),
|
||||
getNativeSymbol: dart.definiteFunctionType(dart.dynamic, [_internal.Symbol]),
|
||||
validatePublicSymbol: dart.definiteFunctionType(core.String, [core.String]),
|
||||
isValidSymbol: dart.definiteFunctionType(core.bool, [core.String])
|
||||
}),
|
||||
names: ['getName', 'validatePublicSymbol', 'isValidSymbol']
|
||||
names: ['getName', 'getNativeSymbol', 'validatePublicSymbol', 'isValidSymbol']
|
||||
});
|
||||
_internal.Symbol.reservedWordRE = '(?:assert|break|c(?:a(?:se|tch)|lass|on(?:st|tinue))|d(?:efault|o)|' + 'e(?:lse|num|xtends)|f(?:alse|inal(?:ly)?|or)|i[fns]|n(?:ew|ull)|' + 'ret(?:hrow|urn)|s(?:uper|witch)|t(?:h(?:is|row)|r(?:ue|y))|' + 'v(?:ar|oid)|w(?:hile|ith))';
|
||||
_internal.Symbol.operatorRE = '(?:[\\-+*/%&|^]|\\[\\]=?|==|~/?|<[<=]?|>[>=]?|unary-)';
|
||||
|
@ -13228,73 +13248,109 @@ _js_mirrors._defaultConstructorType = function(type) {
|
|||
return _js_mirrors._dart.definiteFunctionType(type, []);
|
||||
};
|
||||
dart.fn(_js_mirrors._defaultConstructorType, dynamicTodynamic());
|
||||
_js_mirrors._getMixins = function(type) {
|
||||
return _js_mirrors._dart.getMixins(type, []);
|
||||
};
|
||||
dart.fn(_js_mirrors._getMixins, dynamicTodynamic());
|
||||
_js_mirrors._Lazy$ = dart.generic(T => {
|
||||
const _Lazy = dart.typedef('_Lazy', () => dart.functionType(T, []));
|
||||
return _Lazy;
|
||||
});
|
||||
_js_mirrors._Lazy = _Lazy();
|
||||
_js_mirrors._getESSymbol = function(symbol) {
|
||||
return _internal.Symbol.getNativeSymbol(_internal.Symbol.as(symbol));
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getESSymbol, () => SymbolTodynamic());
|
||||
_js_mirrors._getMember = function(symbol) {
|
||||
let privateSymbol = _js_mirrors._getESSymbol(symbol);
|
||||
if (privateSymbol != null) {
|
||||
return privateSymbol;
|
||||
}
|
||||
return _js_mirrors.getName(symbol);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getMember, () => SymbolTodynamic());
|
||||
_js_mirrors._getNameForESSymbol = function(member) {
|
||||
dart.assert(typeof member == "symbol");
|
||||
let str = dart.toString(member);
|
||||
dart.assert(dart.test(str[dartx.startsWith]('Symbol(')) && dart.test(str[dartx.endsWith](')')));
|
||||
return str[dartx.substring](7, dart.notNull(str[dartx.length]) - 1);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getNameForESSymbol, () => dynamicToString());
|
||||
_js_mirrors._getSymbolForESSymbol = function(member) {
|
||||
let name = _js_mirrors._getNameForESSymbol(member);
|
||||
return new _internal.Symbol.es6(name, member);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getSymbolForESSymbol, () => dynamicToSymbol());
|
||||
_js_mirrors._getSymbolForMember = function(member) {
|
||||
if (typeof member == 'string') {
|
||||
return core.Symbol.new(member);
|
||||
} else {
|
||||
let name = _js_mirrors._getNameForESSymbol(member);
|
||||
return new _internal.Symbol.es6(name, member);
|
||||
}
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getSymbolForMember, () => dynamicToSymbol());
|
||||
_js_mirrors._toDartMap = function(data) {
|
||||
if (data == null) return dart.map();
|
||||
let map = _js_mirrors._dart.map(data);
|
||||
if (data == null) return dart.map({}, core.Symbol, dart.dynamic);
|
||||
let map = MapOfSymbol$dynamic().new();
|
||||
let publicMembers = Object.getOwnPropertyNames(data);
|
||||
for (let member of core.Iterable._check(publicMembers)) {
|
||||
let symbol = core.Symbol.new(core.String._check(member));
|
||||
map[dartx._set](symbol, data[member]);
|
||||
}
|
||||
let privateMembers = Object.getOwnPropertySymbols(data);
|
||||
for (let member of core.Iterable._check(privateMembers)) {
|
||||
let name = _js_mirrors._getNameForESSymbol(member);
|
||||
map[dartx._set](name, data[member]);
|
||||
let symbol = _js_mirrors._getSymbolForESSymbol(member);
|
||||
map[dartx._set](symbol, data[member]);
|
||||
}
|
||||
return map;
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._toDartMap, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._toDartMap, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getConstructors = function(obj) {
|
||||
let sig = _js_mirrors._dart.getConstructorSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getConstructors, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getConstructors, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getFields = function(obj) {
|
||||
let sig = _js_mirrors._dart.getFieldSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getFields, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getFields, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getMethods = function(obj) {
|
||||
let sig = _js_mirrors._dart.getMethodSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getMethods, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getMethods, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getGetters = function(obj) {
|
||||
let sig = _js_mirrors._dart.getGetterSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getGetters, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getGetters, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getSetters = function(obj) {
|
||||
let sig = _js_mirrors._dart.getSetterSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getSetters, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getSetters, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getStaticFields = function(obj) {
|
||||
let sig = _js_mirrors._dart.getStaticFieldSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getStaticFields, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getStaticFields, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getStatics = function(obj) {
|
||||
let sig = _js_mirrors._dart.getStaticSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getStatics, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getStatics, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getStaticGetters = function(obj) {
|
||||
let sig = _js_mirrors._dart.getStaticGetterSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getStaticGetters, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getStaticGetters, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getStaticSetters = function(obj) {
|
||||
let sig = _js_mirrors._dart.getStaticSetterSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getStaticSetters, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getStaticSetters, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._unwrap = function(obj) {
|
||||
return _js_mirrors._dart.unwrapType(obj);
|
||||
};
|
||||
|
@ -13433,15 +13489,7 @@ _js_mirrors.JsInstanceMirror = class JsInstanceMirror extends _js_mirrors.JsObje
|
|||
[_getAccessor](reflectee, symbol, args, namedArgs) {
|
||||
if (args === void 0) args = null;
|
||||
if (namedArgs === void 0) namedArgs = null;
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
if (!dart.test(name[dartx.startsWith]('_'))) return name;
|
||||
let privateMembers = Object.getOwnPropertySymbols(reflectee);
|
||||
dart.dsend(privateMembers, 'addAll', Object.getOwnPropertySymbols(reflectee.__proto__));
|
||||
for (let member of core.Iterable._check(privateMembers)) {
|
||||
let privateName = _js_mirrors._getNameForESSymbol(member);
|
||||
if (name == privateName) return member;
|
||||
}
|
||||
return new core.NoSuchMethodError(reflectee, symbol, args, namedArgs);
|
||||
return _js_mirrors._getMember(symbol);
|
||||
}
|
||||
getField(symbol) {
|
||||
let name = this[_getAccessor](this.reflectee, symbol);
|
||||
|
@ -13518,6 +13566,7 @@ const _cls = Symbol('_cls');
|
|||
let const;
|
||||
const _declarations = Symbol('_declarations');
|
||||
const _raw = Symbol('_raw');
|
||||
const _mixin = Symbol('_mixin');
|
||||
const _typeArguments = Symbol('_typeArguments');
|
||||
let const;
|
||||
_js_mirrors.JsClassMirror = class JsClassMirror extends _js_mirrors.JsMirror {
|
||||
|
@ -13534,67 +13583,66 @@ _js_mirrors.JsClassMirror = class JsClassMirror extends _js_mirrors.JsMirror {
|
|||
this[_declarations] = MapOfSymbol$DeclarationMirror().new();
|
||||
let unwrapped = _js_mirrors._unwrap(this[_cls]);
|
||||
let constructors = _js_mirrors._getConstructors(unwrapped);
|
||||
constructors[dartx.forEach](dart.fn((name, ft) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._constructor(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
constructors[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._constructor(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
if (dart.test(constructors[dartx.isEmpty])) {
|
||||
let name = 'new';
|
||||
let ft = _js_mirrors._defaultConstructorType(_js_mirrors._unwrap(this[_cls]));
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._constructor(this, name, ft));
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._constructor(this, symbol, ft));
|
||||
}
|
||||
let fields = _js_mirrors._getFields(unwrapped);
|
||||
fields[dartx.forEach](dart.fn((name, t) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
fields[dartx.forEach](dart.fn((symbol, t) => {
|
||||
let metadata = [];
|
||||
if (core.List.is(t)) {
|
||||
metadata = core.List._check(dart.dsend(dart.dsend(t, 'skip', 1), 'toList'));
|
||||
t = dart.dindex(t, 0);
|
||||
}
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsVariableMirror._(name, core.Type._check(_js_mirrors._wrap(t)), metadata));
|
||||
}, StringAnddynamicTovoid()));
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsVariableMirror._(symbol, core.Type._check(_js_mirrors._wrap(t)), metadata));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let methods = _js_mirrors._getMethods(unwrapped);
|
||||
methods[dartx.forEach](dart.fn((name, ft) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
methods[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let getters = _js_mirrors._getGetters(unwrapped);
|
||||
getters[dartx.forEach](dart.fn((name, ft) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
getters[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let setters = _js_mirrors._getSetters(unwrapped);
|
||||
setters[dartx.forEach](dart.fn((name, ft) => {
|
||||
name = dart.notNull(name) + '=';
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
setters[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = dart.notNull(_js_mirrors.getName(symbol)) + '=';
|
||||
symbol = new _internal.Symbol.es6(name, _js_mirrors._getESSymbol(symbol));
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let staticFields = _js_mirrors._getStaticFields(unwrapped);
|
||||
staticFields[dartx.forEach](dart.fn((name, t) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
staticFields[dartx.forEach](dart.fn((symbol, t) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
let metadata = [];
|
||||
if (core.List.is(t)) {
|
||||
metadata = core.List._check(dart.dsend(dart.dsend(t, 'skip', 1), 'toList'));
|
||||
t = dart.dindex(t, 0);
|
||||
}
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsVariableMirror._(name, core.Type._check(_js_mirrors._wrap(t)), metadata));
|
||||
}, StringAnddynamicTovoid()));
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsVariableMirror._(symbol, core.Type._check(_js_mirrors._wrap(t)), metadata));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let statics = _js_mirrors._getStatics(unwrapped);
|
||||
statics[dartx.forEach](dart.fn((name, ft) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
statics[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let staticGetters = _js_mirrors._getStaticGetters(unwrapped);
|
||||
staticGetters[dartx.forEach](dart.fn((name, ft) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
staticGetters[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let staticSetters = _js_mirrors._getStaticSetters(unwrapped);
|
||||
staticSetters[dartx.forEach](dart.fn((name, ft) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
staticSetters[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
this[_declarations] = MapOfSymbol$DeclarationMirror().unmodifiable(this[_declarations]);
|
||||
}
|
||||
return this[_declarations];
|
||||
|
@ -13603,7 +13651,7 @@ _js_mirrors.JsClassMirror = class JsClassMirror extends _js_mirrors.JsMirror {
|
|||
this[_cls] = cls;
|
||||
this[_raw] = _js_mirrors._getGenericClass(_js_mirrors._unwrap(cls));
|
||||
this.simpleName = core.Symbol.new(_js_mirrors._unwrap(cls).name);
|
||||
this.mixin = null;
|
||||
this[_mixin] = null;
|
||||
this[_typeArguments] = null;
|
||||
this[_metadata] = null;
|
||||
this[_declarations] = null;
|
||||
|
@ -13674,6 +13722,21 @@ _js_mirrors.JsClassMirror = class JsClassMirror extends _js_mirrors.JsMirror {
|
|||
return mirrors.ClassMirror._check(_js_mirrors.reflectType(core.Type._check(_js_mirrors._wrap(_js_mirrors._unwrap(this[_cls]).__proto__))));
|
||||
}
|
||||
}
|
||||
get mixin() {
|
||||
if (this[_mixin] != null) {
|
||||
return this[_mixin];
|
||||
}
|
||||
let mixins = _js_mirrors._getMixins(_js_mirrors._unwrap(this[_cls]));
|
||||
if (mixins == null || dart.test(dart.dload(mixins, 'isEmpty'))) {
|
||||
this[_mixin] = this;
|
||||
return this[_mixin];
|
||||
}
|
||||
if (dart.test(dart.dsend(dart.dload(mixins, 'length'), '>', 1))) {
|
||||
dart.throw(new core.UnsupportedError("ClassMirror.mixin not yet supported for " + dart.str`classes (${this[_cls]}) with multiple mixins`));
|
||||
}
|
||||
this[_mixin] = mirrors.ClassMirror._check(_js_mirrors.reflectType(core.Type._check(_js_mirrors._wrap(dart.dindex(mixins, 0)))));
|
||||
return this[_mixin];
|
||||
}
|
||||
toString() {
|
||||
return dart.str`ClassMirror on '${this[_cls]}'`;
|
||||
}
|
||||
|
@ -13722,7 +13785,7 @@ dart.setSignature(_js_mirrors.JsClassMirror, {
|
|||
[_cls]: core.Type,
|
||||
simpleName: core.Symbol,
|
||||
[_raw]: dart.dynamic,
|
||||
mixin: mirrors.ClassMirror,
|
||||
[_mixin]: mirrors.ClassMirror,
|
||||
[_typeArguments]: ListOfTypeMirror(),
|
||||
[_metadata]: ListOfInstanceMirror(),
|
||||
[_declarations]: MapOfSymbol$DeclarationMirror()
|
||||
|
@ -13736,7 +13799,8 @@ dart.setSignature(_js_mirrors.JsClassMirror, {
|
|||
isOriginalDeclaration: dart.definiteFunctionType(core.bool, []),
|
||||
typeArguments: dart.definiteFunctionType(core.List$(mirrors.TypeMirror), []),
|
||||
originalDeclaration: dart.definiteFunctionType(mirrors.TypeMirror, []),
|
||||
superclass: dart.definiteFunctionType(mirrors.ClassMirror, [])
|
||||
superclass: dart.definiteFunctionType(mirrors.ClassMirror, []),
|
||||
mixin: dart.definiteFunctionType(mirrors.ClassMirror, [])
|
||||
}),
|
||||
methods: () => ({
|
||||
newInstance: dart.definiteFunctionType(mirrors.InstanceMirror, [core.Symbol, core.List], [MapOfSymbol$dynamic()]),
|
||||
|
@ -13745,13 +13809,15 @@ dart.setSignature(_js_mirrors.JsClassMirror, {
|
|||
invoke: dart.definiteFunctionType(mirrors.InstanceMirror, [core.Symbol, core.List], [MapOfSymbol$dynamic()])
|
||||
})
|
||||
});
|
||||
const _symbol = Symbol('_symbol');
|
||||
const _name = Symbol('_name');
|
||||
_js_mirrors.JsVariableMirror = class JsVariableMirror extends _js_mirrors.JsMirror {
|
||||
get simpleName() {
|
||||
return core.Symbol.new(this[_name]);
|
||||
return this[_symbol];
|
||||
}
|
||||
_(name, t, annotations) {
|
||||
this[_name] = name;
|
||||
_(symbol, t, annotations) {
|
||||
this[_symbol] = symbol;
|
||||
this[_name] = _js_mirrors.getName(symbol);
|
||||
this.type = _js_mirrors.reflectType(t);
|
||||
this.metadata = ListOfInstanceMirror().unmodifiable(annotations[dartx.map](mirrors.InstanceMirror)(dart.fn(a => _js_mirrors.reflect(a), dynamicToInstanceMirror())));
|
||||
this.isStatic = false;
|
||||
|
@ -13782,8 +13848,9 @@ _js_mirrors.JsVariableMirror = class JsVariableMirror extends _js_mirrors.JsMirr
|
|||
dart.defineNamedConstructor(_js_mirrors.JsVariableMirror, '_');
|
||||
_js_mirrors.JsVariableMirror[dart.implements] = () => [mirrors.VariableMirror];
|
||||
dart.setSignature(_js_mirrors.JsVariableMirror, {
|
||||
constructors: () => ({_: dart.definiteFunctionType(_js_mirrors.JsVariableMirror, [core.String, core.Type, core.List])}),
|
||||
constructors: () => ({_: dart.definiteFunctionType(_js_mirrors.JsVariableMirror, [core.Symbol, core.Type, core.List])}),
|
||||
fields: () => ({
|
||||
[_symbol]: core.Symbol,
|
||||
[_name]: core.String,
|
||||
type: mirrors.TypeMirror,
|
||||
metadata: ListOfInstanceMirror(),
|
||||
|
@ -13793,8 +13860,8 @@ dart.setSignature(_js_mirrors.JsVariableMirror, {
|
|||
getters: () => ({simpleName: dart.definiteFunctionType(core.Symbol, [])})
|
||||
});
|
||||
_js_mirrors.JsParameterMirror = class JsParameterMirror extends _js_mirrors.JsVariableMirror {
|
||||
_(name, t, annotations) {
|
||||
super._(name, t, annotations);
|
||||
_(member, t, annotations) {
|
||||
super._(member, t, annotations);
|
||||
}
|
||||
toString() {
|
||||
return dart.str`ParameterMirror on '${this[_name]}'`;
|
||||
|
@ -13833,7 +13900,7 @@ _js_mirrors.JsParameterMirror = class JsParameterMirror extends _js_mirrors.JsVa
|
|||
dart.defineNamedConstructor(_js_mirrors.JsParameterMirror, '_');
|
||||
_js_mirrors.JsParameterMirror[dart.implements] = () => [mirrors.ParameterMirror];
|
||||
dart.setSignature(_js_mirrors.JsParameterMirror, {
|
||||
constructors: () => ({_: dart.definiteFunctionType(_js_mirrors.JsParameterMirror, [core.String, core.Type, core.List])})
|
||||
constructors: () => ({_: dart.definiteFunctionType(_js_mirrors.JsParameterMirror, [core.Symbol, core.Type, core.List])})
|
||||
});
|
||||
const _params = Symbol('_params');
|
||||
const _createParameterMirrorList = Symbol('_createParameterMirrorList');
|
||||
|
@ -13848,10 +13915,11 @@ _js_mirrors.JsMethodMirror = class JsMethodMirror extends _js_mirrors.JsMirror {
|
|||
return this[_name][dartx.startsWith]('_');
|
||||
}
|
||||
get simpleName() {
|
||||
return core.Symbol.new(this[_name]);
|
||||
return this[_symbol];
|
||||
}
|
||||
_constructor(cls, name, ftype) {
|
||||
this[_name] = name;
|
||||
_constructor(cls, symbol, ftype) {
|
||||
this[_symbol] = symbol;
|
||||
this[_name] = _js_mirrors.getName(symbol);
|
||||
this.isConstructor = true;
|
||||
this.isStatic = false;
|
||||
this[_params] = null;
|
||||
|
@ -13859,8 +13927,9 @@ _js_mirrors.JsMethodMirror = class JsMethodMirror extends _js_mirrors.JsMirror {
|
|||
this.isFinal = false;
|
||||
this[_createParameterMirrorList](ftype);
|
||||
}
|
||||
_instanceMethod(cls, name, ftype) {
|
||||
this[_name] = name;
|
||||
_instanceMethod(cls, symbol, ftype) {
|
||||
this[_symbol] = symbol;
|
||||
this[_name] = _js_mirrors.getName(symbol);
|
||||
this.isConstructor = false;
|
||||
this.isStatic = false;
|
||||
this[_params] = null;
|
||||
|
@ -13868,8 +13937,9 @@ _js_mirrors.JsMethodMirror = class JsMethodMirror extends _js_mirrors.JsMirror {
|
|||
this.isFinal = false;
|
||||
this[_createParameterMirrorList](ftype);
|
||||
}
|
||||
_staticMethod(cls, name, ftype) {
|
||||
this[_name] = name;
|
||||
_staticMethod(cls, symbol, ftype) {
|
||||
this[_symbol] = symbol;
|
||||
this[_name] = _js_mirrors.getName(symbol);
|
||||
this.isConstructor = false;
|
||||
this.isStatic = true;
|
||||
this[_params] = null;
|
||||
|
@ -13878,7 +13948,7 @@ _js_mirrors.JsMethodMirror = class JsMethodMirror extends _js_mirrors.JsMirror {
|
|||
this[_createParameterMirrorList](ftype);
|
||||
}
|
||||
get constructorName() {
|
||||
return dart.test(this.isConstructor) ? core.Symbol.new(this[_name]) : null;
|
||||
return dart.test(this.isConstructor) ? this[_symbol] : null;
|
||||
}
|
||||
get parameters() {
|
||||
return this[_params];
|
||||
|
@ -13907,13 +13977,13 @@ _js_mirrors.JsMethodMirror = class JsMethodMirror extends _js_mirrors.JsMirror {
|
|||
for (let i = 0; i < dart.notNull(args[dartx.length]); ++i) {
|
||||
let type = args[dartx._get](i);
|
||||
let metadata = dart.dindex(dart.dload(ftype, 'metadata'), i);
|
||||
let param = new _js_mirrors.JsParameterMirror._('', core.Type._check(_js_mirrors._wrap(type)), core.List._check(metadata));
|
||||
let param = new _js_mirrors.JsParameterMirror._(core.Symbol.new(''), core.Type._check(_js_mirrors._wrap(type)), core.List._check(metadata));
|
||||
params[dartx._set](i, param);
|
||||
}
|
||||
for (let i = 0; i < dart.notNull(opts[dartx.length]); ++i) {
|
||||
let type = opts[dartx._get](i);
|
||||
let metadata = dart.dindex(dart.dload(ftype, 'metadata'), dart.notNull(args[dartx.length]) + i);
|
||||
let param = new _js_mirrors.JsParameterMirror._('', core.Type._check(_js_mirrors._wrap(type)), core.List._check(metadata));
|
||||
let param = new _js_mirrors.JsParameterMirror._(core.Symbol.new(''), core.Type._check(_js_mirrors._wrap(type)), core.List._check(metadata));
|
||||
params[dartx._set](i + dart.notNull(args[dartx.length]), param);
|
||||
}
|
||||
this[_params] = ListOfParameterMirror().unmodifiable(params);
|
||||
|
@ -13973,11 +14043,12 @@ dart.defineNamedConstructor(_js_mirrors.JsMethodMirror, '_staticMethod');
|
|||
_js_mirrors.JsMethodMirror[dart.implements] = () => [mirrors.MethodMirror];
|
||||
dart.setSignature(_js_mirrors.JsMethodMirror, {
|
||||
constructors: () => ({
|
||||
_constructor: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.String, dart.dynamic]),
|
||||
_instanceMethod: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.String, dart.dynamic]),
|
||||
_staticMethod: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.String, dart.dynamic])
|
||||
_constructor: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.Symbol, dart.dynamic]),
|
||||
_instanceMethod: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.Symbol, dart.dynamic]),
|
||||
_staticMethod: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.Symbol, dart.dynamic])
|
||||
}),
|
||||
fields: () => ({
|
||||
[_symbol]: core.Symbol,
|
||||
[_name]: core.String,
|
||||
[_params]: ListOfParameterMirror(),
|
||||
[_metadata]: ListOfInstanceMirror(),
|
||||
|
|
|
@ -617,11 +617,12 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
let TypeToTypeMirror = () => (TypeToTypeMirror = dart.constFn(dart.definiteFunctionType(mirrors.TypeMirror, [core.Type])))();
|
||||
let dynamicAndListTodynamic = () => (dynamicAndListTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic, core.List])))();
|
||||
let dynamicAndStringAndListTodynamic = () => (dynamicAndStringAndListTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic, core.String, core.List])))();
|
||||
let dynamicToMap = () => (dynamicToMap = dart.constFn(dart.definiteFunctionType(core.Map, [dart.dynamic])))();
|
||||
let SymbolTodynamic = () => (SymbolTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.Symbol])))();
|
||||
let dynamicToSymbol = () => (dynamicToSymbol = dart.constFn(dart.definiteFunctionType(core.Symbol, [dart.dynamic])))();
|
||||
let dynamicToMapOfSymbol$dynamic = () => (dynamicToMapOfSymbol$dynamic = dart.constFn(dart.definiteFunctionType(MapOfSymbol$dynamic(), [dart.dynamic])))();
|
||||
let TypeAndInvocationTodynamic = () => (TypeAndInvocationTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.Type, core.Invocation])))();
|
||||
let SymbolAnddynamicTovoid = () => (SymbolAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.Symbol, dart.dynamic])))();
|
||||
let MapOfSymbol$dynamicTodynamic = () => (MapOfSymbol$dynamicTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [MapOfSymbol$dynamic()])))();
|
||||
let StringAnddynamicTovoid = () => (StringAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.String, dart.dynamic])))();
|
||||
let dynamicToTypeMirror = () => (dynamicToTypeMirror = dart.constFn(dart.definiteFunctionType(mirrors.TypeMirror, [dart.dynamic])))();
|
||||
let dynamicAnddynamicAnddynamicTovoid = () => (dynamicAnddynamicAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic])))();
|
||||
let ListToList = () => (ListToList = dart.constFn(dart.definiteFunctionType(core.List, [core.List])))();
|
||||
|
@ -679,6 +680,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
let ObjectToint = () => (ObjectToint = dart.constFn(dart.definiteFunctionType(core.int, [core.Object])))();
|
||||
let ObjectTovoid = () => (ObjectTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.Object])))();
|
||||
let StringAndStringTovoid$ = () => (StringAndStringTovoid$ = dart.constFn(dart.definiteFunctionType(dart.void, [core.String, core.String])))();
|
||||
let StringAnddynamicTovoid = () => (StringAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.String, dart.dynamic])))();
|
||||
let MapOfString$StringAndStringToMapOfString$String = () => (MapOfString$StringAndStringToMapOfString$String = dart.constFn(dart.definiteFunctionType(MapOfString$String(), [MapOfString$String(), core.String])))();
|
||||
let intAndintAndintTovoid = () => (intAndintAndintTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.int, core.int, core.int])))();
|
||||
let String__Tovoid = () => (String__Tovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.String], [dart.dynamic])))();
|
||||
|
@ -750,6 +752,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
let NodeAndNodeTovoid = () => (NodeAndNodeTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [html$.Node, html$.Node])))();
|
||||
let dynamicToImageData = () => (dynamicToImageData = dart.constFn(dart.definiteFunctionType(html$.ImageData, [dart.dynamic])))();
|
||||
let ImageDataTodynamic = () => (ImageDataTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [html$.ImageData])))();
|
||||
let dynamicToMap = () => (dynamicToMap = dart.constFn(dart.definiteFunctionType(core.Map, [dart.dynamic])))();
|
||||
let Map__Todynamic = () => (Map__Todynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [core.Map], [dynamicTovoid()])))();
|
||||
let ListOfStringToList = () => (ListOfStringToList = dart.constFn(dart.definiteFunctionType(core.List, [ListOfString()])))();
|
||||
let dynamicToDateTime = () => (dynamicToDateTime = dart.constFn(dart.definiteFunctionType(core.DateTime, [dart.dynamic])))();
|
||||
|
@ -781,10 +784,10 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
return Mixin;
|
||||
};
|
||||
dart.getMixins = function(clazz) {
|
||||
return clazz[dart._mixins];
|
||||
return Object.hasOwnProperty.call(clazz, dart._mixins) ? clazz[dart._mixins] : null;
|
||||
};
|
||||
dart.getImplements = function(clazz) {
|
||||
return clazz[dart.implements];
|
||||
return Object.hasOwnProperty.call(clazz, dart.implements) ? clazz[dart.implements] : null;
|
||||
};
|
||||
dart.flattenFutures = function(builder) {
|
||||
function flatten(T) {
|
||||
|
@ -8658,18 +8661,26 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
});
|
||||
_internal.Sort._INSERTION_SORT_THRESHOLD = 32;
|
||||
const _name = Symbol('_name');
|
||||
const _nativeSymbol = Symbol('_nativeSymbol');
|
||||
_internal.Symbol = class Symbol extends core.Object {
|
||||
new(name) {
|
||||
this[_name] = name;
|
||||
this[_nativeSymbol] = null;
|
||||
}
|
||||
es6(name, nativeSymbol) {
|
||||
this[_name] = name;
|
||||
this[_nativeSymbol] = nativeSymbol;
|
||||
}
|
||||
unvalidated(name) {
|
||||
this[_name] = name;
|
||||
this[_nativeSymbol] = null;
|
||||
}
|
||||
validated(name) {
|
||||
this[_name] = _internal.Symbol.validatePublicSymbol(name);
|
||||
this[_nativeSymbol] = null;
|
||||
}
|
||||
['=='](other) {
|
||||
return _internal.Symbol.is(other) && this[_name] == other[_name];
|
||||
return _internal.Symbol.is(other) && this[_name] == other[_name] && dart.equals(this[_nativeSymbol], other[_nativeSymbol]);
|
||||
}
|
||||
get hashCode() {
|
||||
let hash = this._hashCode;
|
||||
|
@ -8685,6 +8696,9 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
static getName(symbol) {
|
||||
return symbol[_name];
|
||||
}
|
||||
static getNativeSymbol(symbol) {
|
||||
return symbol[_nativeSymbol];
|
||||
}
|
||||
static validatePublicSymbol(name) {
|
||||
if (dart.test(name[dartx.isEmpty]) || dart.test(_internal.Symbol.publicSymbolPattern.hasMatch(name))) return name;
|
||||
if (dart.test(name[dartx.startsWith]('_'))) {
|
||||
|
@ -8696,16 +8710,21 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
return dart.test(name[dartx.isEmpty]) || dart.test(_internal.Symbol.symbolPattern.hasMatch(name));
|
||||
}
|
||||
};
|
||||
dart.defineNamedConstructor(_internal.Symbol, 'es6');
|
||||
dart.defineNamedConstructor(_internal.Symbol, 'unvalidated');
|
||||
dart.defineNamedConstructor(_internal.Symbol, 'validated');
|
||||
_internal.Symbol[dart.implements] = () => [core.Symbol];
|
||||
dart.setSignature(_internal.Symbol, {
|
||||
constructors: () => ({
|
||||
new: dart.definiteFunctionType(_internal.Symbol, [core.String]),
|
||||
es6: dart.definiteFunctionType(_internal.Symbol, [core.String, dart.dynamic]),
|
||||
unvalidated: dart.definiteFunctionType(_internal.Symbol, [core.String]),
|
||||
validated: dart.definiteFunctionType(_internal.Symbol, [core.String])
|
||||
}),
|
||||
fields: () => ({[_name]: core.String}),
|
||||
fields: () => ({
|
||||
[_name]: core.String,
|
||||
[_nativeSymbol]: dart.dynamic
|
||||
}),
|
||||
methods: () => ({'==': dart.definiteFunctionType(core.bool, [core.Object])}),
|
||||
sfields: () => ({
|
||||
reservedWordRE: core.String,
|
||||
|
@ -8717,10 +8736,11 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
}),
|
||||
statics: () => ({
|
||||
getName: dart.definiteFunctionType(core.String, [_internal.Symbol]),
|
||||
getNativeSymbol: dart.definiteFunctionType(dart.dynamic, [_internal.Symbol]),
|
||||
validatePublicSymbol: dart.definiteFunctionType(core.String, [core.String]),
|
||||
isValidSymbol: dart.definiteFunctionType(core.bool, [core.String])
|
||||
}),
|
||||
names: ['getName', 'validatePublicSymbol', 'isValidSymbol']
|
||||
names: ['getName', 'getNativeSymbol', 'validatePublicSymbol', 'isValidSymbol']
|
||||
});
|
||||
_internal.Symbol.reservedWordRE = '(?:assert|break|c(?:a(?:se|tch)|lass|on(?:st|tinue))|d(?:efault|o)|' + 'e(?:lse|num|xtends)|f(?:alse|inal(?:ly)?|or)|i[fns]|n(?:ew|ull)|' + 'ret(?:hrow|urn)|s(?:uper|witch)|t(?:h(?:is|row)|r(?:ue|y))|' + 'v(?:ar|oid)|w(?:hile|ith))';
|
||||
_internal.Symbol.operatorRE = '(?:[\\-+*/%&|^]|\\[\\]=?|==|~/?|<[<=]?|>[>=]?|unary-)';
|
||||
|
@ -13231,73 +13251,109 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
return _js_mirrors._dart.definiteFunctionType(type, []);
|
||||
};
|
||||
dart.fn(_js_mirrors._defaultConstructorType, dynamicTodynamic$());
|
||||
_js_mirrors._getMixins = function(type) {
|
||||
return _js_mirrors._dart.getMixins(type, []);
|
||||
};
|
||||
dart.fn(_js_mirrors._getMixins, dynamicTodynamic$());
|
||||
_js_mirrors._Lazy$ = dart.generic(T => {
|
||||
const _Lazy = dart.typedef('_Lazy', () => dart.functionType(T, []));
|
||||
return _Lazy;
|
||||
});
|
||||
_js_mirrors._Lazy = _Lazy();
|
||||
_js_mirrors._getESSymbol = function(symbol) {
|
||||
return _internal.Symbol.getNativeSymbol(_internal.Symbol.as(symbol));
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getESSymbol, () => SymbolTodynamic());
|
||||
_js_mirrors._getMember = function(symbol) {
|
||||
let privateSymbol = _js_mirrors._getESSymbol(symbol);
|
||||
if (privateSymbol != null) {
|
||||
return privateSymbol;
|
||||
}
|
||||
return _js_mirrors.getName(symbol);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getMember, () => SymbolTodynamic());
|
||||
_js_mirrors._getNameForESSymbol = function(member) {
|
||||
dart.assert(typeof member == "symbol");
|
||||
let str = dart.toString(member);
|
||||
dart.assert(dart.test(str[dartx.startsWith]('Symbol(')) && dart.test(str[dartx.endsWith](')')));
|
||||
return str[dartx.substring](7, dart.notNull(str[dartx.length]) - 1);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getNameForESSymbol, () => dynamicToString());
|
||||
_js_mirrors._getSymbolForESSymbol = function(member) {
|
||||
let name = _js_mirrors._getNameForESSymbol(member);
|
||||
return new _internal.Symbol.es6(name, member);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getSymbolForESSymbol, () => dynamicToSymbol());
|
||||
_js_mirrors._getSymbolForMember = function(member) {
|
||||
if (typeof member == 'string') {
|
||||
return core.Symbol.new(member);
|
||||
} else {
|
||||
let name = _js_mirrors._getNameForESSymbol(member);
|
||||
return new _internal.Symbol.es6(name, member);
|
||||
}
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getSymbolForMember, () => dynamicToSymbol());
|
||||
_js_mirrors._toDartMap = function(data) {
|
||||
if (data == null) return dart.map();
|
||||
let map = _js_mirrors._dart.map(data);
|
||||
if (data == null) return dart.map({}, core.Symbol, dart.dynamic);
|
||||
let map = MapOfSymbol$dynamic().new();
|
||||
let publicMembers = Object.getOwnPropertyNames(data);
|
||||
for (let member of core.Iterable._check(publicMembers)) {
|
||||
let symbol = core.Symbol.new(core.String._check(member));
|
||||
map[dartx._set](symbol, data[member]);
|
||||
}
|
||||
let privateMembers = Object.getOwnPropertySymbols(data);
|
||||
for (let member of core.Iterable._check(privateMembers)) {
|
||||
let name = _js_mirrors._getNameForESSymbol(member);
|
||||
map[dartx._set](name, data[member]);
|
||||
let symbol = _js_mirrors._getSymbolForESSymbol(member);
|
||||
map[dartx._set](symbol, data[member]);
|
||||
}
|
||||
return map;
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._toDartMap, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._toDartMap, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getConstructors = function(obj) {
|
||||
let sig = _js_mirrors._dart.getConstructorSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getConstructors, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getConstructors, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getFields = function(obj) {
|
||||
let sig = _js_mirrors._dart.getFieldSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getFields, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getFields, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getMethods = function(obj) {
|
||||
let sig = _js_mirrors._dart.getMethodSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getMethods, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getMethods, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getGetters = function(obj) {
|
||||
let sig = _js_mirrors._dart.getGetterSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getGetters, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getGetters, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getSetters = function(obj) {
|
||||
let sig = _js_mirrors._dart.getSetterSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getSetters, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getSetters, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getStaticFields = function(obj) {
|
||||
let sig = _js_mirrors._dart.getStaticFieldSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getStaticFields, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getStaticFields, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getStatics = function(obj) {
|
||||
let sig = _js_mirrors._dart.getStaticSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getStatics, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getStatics, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getStaticGetters = function(obj) {
|
||||
let sig = _js_mirrors._dart.getStaticGetterSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getStaticGetters, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getStaticGetters, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._getStaticSetters = function(obj) {
|
||||
let sig = _js_mirrors._dart.getStaticSetterSig(obj);
|
||||
return _js_mirrors._toDartMap(sig);
|
||||
};
|
||||
dart.lazyFn(_js_mirrors._getStaticSetters, () => dynamicToMap());
|
||||
dart.lazyFn(_js_mirrors._getStaticSetters, () => dynamicToMapOfSymbol$dynamic());
|
||||
_js_mirrors._unwrap = function(obj) {
|
||||
return _js_mirrors._dart.unwrapType(obj);
|
||||
};
|
||||
|
@ -13436,15 +13492,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
[_getAccessor](reflectee, symbol, args, namedArgs) {
|
||||
if (args === void 0) args = null;
|
||||
if (namedArgs === void 0) namedArgs = null;
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
if (!dart.test(name[dartx.startsWith]('_'))) return name;
|
||||
let privateMembers = Object.getOwnPropertySymbols(reflectee);
|
||||
dart.dsend(privateMembers, 'addAll', Object.getOwnPropertySymbols(reflectee.__proto__));
|
||||
for (let member of core.Iterable._check(privateMembers)) {
|
||||
let privateName = _js_mirrors._getNameForESSymbol(member);
|
||||
if (name == privateName) return member;
|
||||
}
|
||||
return new core.NoSuchMethodError(reflectee, symbol, args, namedArgs);
|
||||
return _js_mirrors._getMember(symbol);
|
||||
}
|
||||
getField(symbol) {
|
||||
let name = this[_getAccessor](this.reflectee, symbol);
|
||||
|
@ -13521,6 +13569,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
let const$0;
|
||||
const _declarations = Symbol('_declarations');
|
||||
const _raw = Symbol('_raw');
|
||||
const _mixin = Symbol('_mixin');
|
||||
const _typeArguments = Symbol('_typeArguments');
|
||||
let const$1;
|
||||
_js_mirrors.JsClassMirror = class JsClassMirror extends _js_mirrors.JsMirror {
|
||||
|
@ -13537,67 +13586,66 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
this[_declarations] = MapOfSymbol$DeclarationMirror().new();
|
||||
let unwrapped = _js_mirrors._unwrap(this[_cls]);
|
||||
let constructors = _js_mirrors._getConstructors(unwrapped);
|
||||
constructors[dartx.forEach](dart.fn((name, ft) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._constructor(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
constructors[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._constructor(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
if (dart.test(constructors[dartx.isEmpty])) {
|
||||
let name = 'new';
|
||||
let ft = _js_mirrors._defaultConstructorType(_js_mirrors._unwrap(this[_cls]));
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._constructor(this, name, ft));
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._constructor(this, symbol, ft));
|
||||
}
|
||||
let fields = _js_mirrors._getFields(unwrapped);
|
||||
fields[dartx.forEach](dart.fn((name, t) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
fields[dartx.forEach](dart.fn((symbol, t) => {
|
||||
let metadata = [];
|
||||
if (core.List.is(t)) {
|
||||
metadata = core.List._check(dart.dsend(dart.dsend(t, 'skip', 1), 'toList'));
|
||||
t = dart.dindex(t, 0);
|
||||
}
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsVariableMirror._(name, core.Type._check(_js_mirrors._wrap(t)), metadata));
|
||||
}, StringAnddynamicTovoid()));
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsVariableMirror._(symbol, core.Type._check(_js_mirrors._wrap(t)), metadata));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let methods = _js_mirrors._getMethods(unwrapped);
|
||||
methods[dartx.forEach](dart.fn((name, ft) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
methods[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let getters = _js_mirrors._getGetters(unwrapped);
|
||||
getters[dartx.forEach](dart.fn((name, ft) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
getters[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let setters = _js_mirrors._getSetters(unwrapped);
|
||||
setters[dartx.forEach](dart.fn((name, ft) => {
|
||||
name = dart.notNull(name) + '=';
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
setters[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = dart.notNull(_js_mirrors.getName(symbol)) + '=';
|
||||
symbol = new _internal.Symbol.es6(name, _js_mirrors._getESSymbol(symbol));
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._instanceMethod(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let staticFields = _js_mirrors._getStaticFields(unwrapped);
|
||||
staticFields[dartx.forEach](dart.fn((name, t) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
staticFields[dartx.forEach](dart.fn((symbol, t) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
let metadata = [];
|
||||
if (core.List.is(t)) {
|
||||
metadata = core.List._check(dart.dsend(dart.dsend(t, 'skip', 1), 'toList'));
|
||||
t = dart.dindex(t, 0);
|
||||
}
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsVariableMirror._(name, core.Type._check(_js_mirrors._wrap(t)), metadata));
|
||||
}, StringAnddynamicTovoid()));
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsVariableMirror._(symbol, core.Type._check(_js_mirrors._wrap(t)), metadata));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let statics = _js_mirrors._getStatics(unwrapped);
|
||||
statics[dartx.forEach](dart.fn((name, ft) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
statics[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let staticGetters = _js_mirrors._getStaticGetters(unwrapped);
|
||||
staticGetters[dartx.forEach](dart.fn((name, ft) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
staticGetters[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
let staticSetters = _js_mirrors._getStaticSetters(unwrapped);
|
||||
staticSetters[dartx.forEach](dart.fn((name, ft) => {
|
||||
let symbol = core.Symbol.new(name);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, name, ft));
|
||||
}, StringAnddynamicTovoid()));
|
||||
staticSetters[dartx.forEach](dart.fn((symbol, ft) => {
|
||||
let name = _js_mirrors.getName(symbol);
|
||||
this[_declarations][dartx._set](symbol, new _js_mirrors.JsMethodMirror._staticMethod(this, symbol, ft));
|
||||
}, SymbolAnddynamicTovoid()));
|
||||
this[_declarations] = MapOfSymbol$DeclarationMirror().unmodifiable(this[_declarations]);
|
||||
}
|
||||
return this[_declarations];
|
||||
|
@ -13606,7 +13654,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
this[_cls] = cls;
|
||||
this[_raw] = _js_mirrors._getGenericClass(_js_mirrors._unwrap(cls));
|
||||
this.simpleName = core.Symbol.new(_js_mirrors._unwrap(cls).name);
|
||||
this.mixin = null;
|
||||
this[_mixin] = null;
|
||||
this[_typeArguments] = null;
|
||||
this[_metadata$] = null;
|
||||
this[_declarations] = null;
|
||||
|
@ -13677,6 +13725,21 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
return mirrors.ClassMirror._check(_js_mirrors.reflectType(core.Type._check(_js_mirrors._wrap(_js_mirrors._unwrap(this[_cls]).__proto__))));
|
||||
}
|
||||
}
|
||||
get mixin() {
|
||||
if (this[_mixin] != null) {
|
||||
return this[_mixin];
|
||||
}
|
||||
let mixins = _js_mirrors._getMixins(_js_mirrors._unwrap(this[_cls]));
|
||||
if (mixins == null || dart.test(dart.dload(mixins, 'isEmpty'))) {
|
||||
this[_mixin] = this;
|
||||
return this[_mixin];
|
||||
}
|
||||
if (dart.test(dart.dsend(dart.dload(mixins, 'length'), '>', 1))) {
|
||||
dart.throw(new core.UnsupportedError("ClassMirror.mixin not yet supported for " + dart.str`classes (${this[_cls]}) with multiple mixins`));
|
||||
}
|
||||
this[_mixin] = mirrors.ClassMirror._check(_js_mirrors.reflectType(core.Type._check(_js_mirrors._wrap(dart.dindex(mixins, 0)))));
|
||||
return this[_mixin];
|
||||
}
|
||||
toString() {
|
||||
return dart.str`ClassMirror on '${this[_cls]}'`;
|
||||
}
|
||||
|
@ -13725,7 +13788,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
[_cls]: core.Type,
|
||||
simpleName: core.Symbol,
|
||||
[_raw]: dart.dynamic,
|
||||
mixin: mirrors.ClassMirror,
|
||||
[_mixin]: mirrors.ClassMirror,
|
||||
[_typeArguments]: ListOfTypeMirror(),
|
||||
[_metadata$]: ListOfInstanceMirror(),
|
||||
[_declarations]: MapOfSymbol$DeclarationMirror()
|
||||
|
@ -13739,7 +13802,8 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
isOriginalDeclaration: dart.definiteFunctionType(core.bool, []),
|
||||
typeArguments: dart.definiteFunctionType(core.List$(mirrors.TypeMirror), []),
|
||||
originalDeclaration: dart.definiteFunctionType(mirrors.TypeMirror, []),
|
||||
superclass: dart.definiteFunctionType(mirrors.ClassMirror, [])
|
||||
superclass: dart.definiteFunctionType(mirrors.ClassMirror, []),
|
||||
mixin: dart.definiteFunctionType(mirrors.ClassMirror, [])
|
||||
}),
|
||||
methods: () => ({
|
||||
newInstance: dart.definiteFunctionType(mirrors.InstanceMirror, [core.Symbol, core.List], [MapOfSymbol$dynamic()]),
|
||||
|
@ -13748,13 +13812,15 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
invoke: dart.definiteFunctionType(mirrors.InstanceMirror, [core.Symbol, core.List], [MapOfSymbol$dynamic()])
|
||||
})
|
||||
});
|
||||
const _symbol = Symbol('_symbol');
|
||||
const _name$ = Symbol('_name');
|
||||
_js_mirrors.JsVariableMirror = class JsVariableMirror extends _js_mirrors.JsMirror {
|
||||
get simpleName() {
|
||||
return core.Symbol.new(this[_name$]);
|
||||
return this[_symbol];
|
||||
}
|
||||
_(name, t, annotations) {
|
||||
this[_name$] = name;
|
||||
_(symbol, t, annotations) {
|
||||
this[_symbol] = symbol;
|
||||
this[_name$] = _js_mirrors.getName(symbol);
|
||||
this.type = _js_mirrors.reflectType(t);
|
||||
this.metadata = ListOfInstanceMirror().unmodifiable(annotations[dartx.map](mirrors.InstanceMirror)(dart.fn(a => _js_mirrors.reflect(a), dynamicToInstanceMirror())));
|
||||
this.isStatic = false;
|
||||
|
@ -13785,8 +13851,9 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
dart.defineNamedConstructor(_js_mirrors.JsVariableMirror, '_');
|
||||
_js_mirrors.JsVariableMirror[dart.implements] = () => [mirrors.VariableMirror];
|
||||
dart.setSignature(_js_mirrors.JsVariableMirror, {
|
||||
constructors: () => ({_: dart.definiteFunctionType(_js_mirrors.JsVariableMirror, [core.String, core.Type, core.List])}),
|
||||
constructors: () => ({_: dart.definiteFunctionType(_js_mirrors.JsVariableMirror, [core.Symbol, core.Type, core.List])}),
|
||||
fields: () => ({
|
||||
[_symbol]: core.Symbol,
|
||||
[_name$]: core.String,
|
||||
type: mirrors.TypeMirror,
|
||||
metadata: ListOfInstanceMirror(),
|
||||
|
@ -13796,8 +13863,8 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
getters: () => ({simpleName: dart.definiteFunctionType(core.Symbol, [])})
|
||||
});
|
||||
_js_mirrors.JsParameterMirror = class JsParameterMirror extends _js_mirrors.JsVariableMirror {
|
||||
_(name, t, annotations) {
|
||||
super._(name, t, annotations);
|
||||
_(member, t, annotations) {
|
||||
super._(member, t, annotations);
|
||||
}
|
||||
toString() {
|
||||
return dart.str`ParameterMirror on '${this[_name$]}'`;
|
||||
|
@ -13836,7 +13903,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
dart.defineNamedConstructor(_js_mirrors.JsParameterMirror, '_');
|
||||
_js_mirrors.JsParameterMirror[dart.implements] = () => [mirrors.ParameterMirror];
|
||||
dart.setSignature(_js_mirrors.JsParameterMirror, {
|
||||
constructors: () => ({_: dart.definiteFunctionType(_js_mirrors.JsParameterMirror, [core.String, core.Type, core.List])})
|
||||
constructors: () => ({_: dart.definiteFunctionType(_js_mirrors.JsParameterMirror, [core.Symbol, core.Type, core.List])})
|
||||
});
|
||||
const _params = Symbol('_params');
|
||||
const _createParameterMirrorList = Symbol('_createParameterMirrorList');
|
||||
|
@ -13851,10 +13918,11 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
return this[_name$][dartx.startsWith]('_');
|
||||
}
|
||||
get simpleName() {
|
||||
return core.Symbol.new(this[_name$]);
|
||||
return this[_symbol];
|
||||
}
|
||||
_constructor(cls, name, ftype) {
|
||||
this[_name$] = name;
|
||||
_constructor(cls, symbol, ftype) {
|
||||
this[_symbol] = symbol;
|
||||
this[_name$] = _js_mirrors.getName(symbol);
|
||||
this.isConstructor = true;
|
||||
this.isStatic = false;
|
||||
this[_params] = null;
|
||||
|
@ -13862,8 +13930,9 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
this.isFinal = false;
|
||||
this[_createParameterMirrorList](ftype);
|
||||
}
|
||||
_instanceMethod(cls, name, ftype) {
|
||||
this[_name$] = name;
|
||||
_instanceMethod(cls, symbol, ftype) {
|
||||
this[_symbol] = symbol;
|
||||
this[_name$] = _js_mirrors.getName(symbol);
|
||||
this.isConstructor = false;
|
||||
this.isStatic = false;
|
||||
this[_params] = null;
|
||||
|
@ -13871,8 +13940,9 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
this.isFinal = false;
|
||||
this[_createParameterMirrorList](ftype);
|
||||
}
|
||||
_staticMethod(cls, name, ftype) {
|
||||
this[_name$] = name;
|
||||
_staticMethod(cls, symbol, ftype) {
|
||||
this[_symbol] = symbol;
|
||||
this[_name$] = _js_mirrors.getName(symbol);
|
||||
this.isConstructor = false;
|
||||
this.isStatic = true;
|
||||
this[_params] = null;
|
||||
|
@ -13881,7 +13951,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
this[_createParameterMirrorList](ftype);
|
||||
}
|
||||
get constructorName() {
|
||||
return dart.test(this.isConstructor) ? core.Symbol.new(this[_name$]) : null;
|
||||
return dart.test(this.isConstructor) ? this[_symbol] : null;
|
||||
}
|
||||
get parameters() {
|
||||
return this[_params];
|
||||
|
@ -13910,13 +13980,13 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
for (let i = 0; i < dart.notNull(args[dartx.length]); ++i) {
|
||||
let type = args[dartx._get](i);
|
||||
let metadata = dart.dindex(dart.dload(ftype, 'metadata'), i);
|
||||
let param = new _js_mirrors.JsParameterMirror._('', core.Type._check(_js_mirrors._wrap(type)), core.List._check(metadata));
|
||||
let param = new _js_mirrors.JsParameterMirror._(core.Symbol.new(''), core.Type._check(_js_mirrors._wrap(type)), core.List._check(metadata));
|
||||
params[dartx._set](i, param);
|
||||
}
|
||||
for (let i = 0; i < dart.notNull(opts[dartx.length]); ++i) {
|
||||
let type = opts[dartx._get](i);
|
||||
let metadata = dart.dindex(dart.dload(ftype, 'metadata'), dart.notNull(args[dartx.length]) + i);
|
||||
let param = new _js_mirrors.JsParameterMirror._('', core.Type._check(_js_mirrors._wrap(type)), core.List._check(metadata));
|
||||
let param = new _js_mirrors.JsParameterMirror._(core.Symbol.new(''), core.Type._check(_js_mirrors._wrap(type)), core.List._check(metadata));
|
||||
params[dartx._set](i + dart.notNull(args[dartx.length]), param);
|
||||
}
|
||||
this[_params] = ListOfParameterMirror().unmodifiable(params);
|
||||
|
@ -13976,11 +14046,12 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
|||
_js_mirrors.JsMethodMirror[dart.implements] = () => [mirrors.MethodMirror];
|
||||
dart.setSignature(_js_mirrors.JsMethodMirror, {
|
||||
constructors: () => ({
|
||||
_constructor: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.String, dart.dynamic]),
|
||||
_instanceMethod: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.String, dart.dynamic]),
|
||||
_staticMethod: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.String, dart.dynamic])
|
||||
_constructor: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.Symbol, dart.dynamic]),
|
||||
_instanceMethod: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.Symbol, dart.dynamic]),
|
||||
_staticMethod: dart.definiteFunctionType(_js_mirrors.JsMethodMirror, [_js_mirrors.JsClassMirror, core.Symbol, dart.dynamic])
|
||||
}),
|
||||
fields: () => ({
|
||||
[_symbol]: core.Symbol,
|
||||
[_name$]: core.String,
|
||||
[_params]: ListOfParameterMirror(),
|
||||
[_metadata$]: ListOfInstanceMirror(),
|
||||
|
|
Binary file not shown.
|
@ -124,6 +124,7 @@ class CodeGenerator extends GeneralizingAstVisitor
|
|||
final ClassElement numClass;
|
||||
final ClassElement objectClass;
|
||||
final ClassElement stringClass;
|
||||
final ClassElement symbolClass;
|
||||
|
||||
ConstFieldVisitor _constants;
|
||||
|
||||
|
@ -164,6 +165,7 @@ class CodeGenerator extends GeneralizingAstVisitor
|
|||
nullClass = _getLibrary(c, 'dart:core').getType('Null'),
|
||||
objectClass = _getLibrary(c, 'dart:core').getType('Object'),
|
||||
stringClass = _getLibrary(c, 'dart:core').getType('String'),
|
||||
symbolClass = _getLibrary(c, 'dart:_internal').getType('Symbol'),
|
||||
dartJSLibrary = _getLibrary(c, 'dart:js');
|
||||
|
||||
LibraryElement get currentLibrary => _loader.currentElement.library;
|
||||
|
@ -5227,11 +5229,17 @@ class CodeGenerator extends GeneralizingAstVisitor
|
|||
@override
|
||||
visitSymbolLiteral(SymbolLiteral node) {
|
||||
JS.Expression emitSymbol() {
|
||||
// TODO(vsm): When we canonicalize, we need to treat private symbols
|
||||
// correctly.
|
||||
// TODO(vsm): Handle qualified symbols correctly.
|
||||
var last = node.components.last.toString();
|
||||
var name = js.string(node.components.join('.'), "'");
|
||||
return js
|
||||
.call('#.new(#)', [_emitConstructorAccess(types.symbolType), name]);
|
||||
if (last.startsWith('_')) {
|
||||
var nativeSymbol = _emitPrivateNameSymbol(currentLibrary, last);
|
||||
return js.call('new #.es6(#, #)',
|
||||
[_emitConstructorAccess(symbolClass.type), name, nativeSymbol]);
|
||||
} else {
|
||||
return js
|
||||
.call('#.new(#)', [_emitConstructorAccess(types.symbolType), name]);
|
||||
}
|
||||
}
|
||||
|
||||
return _emitConst(emitSymbol);
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
library test.mixin;
|
||||
|
||||
import 'dart:mirrors';
|
||||
|
||||
import 'package:expect/expect.dart';
|
||||
|
||||
class Super {}
|
||||
class Mixin {}
|
||||
class Mixin2 {}
|
||||
|
||||
class Class extends Super with Mixin {}
|
||||
class MultipleMixins extends Class with Mixin2 {}
|
||||
|
||||
main() {
|
||||
Expect.equals(reflectClass(Class),
|
||||
reflectClass(Class).mixin);
|
||||
Expect.equals(reflectClass(Mixin),
|
||||
reflectClass(Class).superclass.mixin);
|
||||
Expect.equals(reflectClass(Super),
|
||||
reflectClass(Class).superclass.superclass.mixin);
|
||||
|
||||
Expect.equals(reflectClass(MultipleMixins),
|
||||
reflectClass(MultipleMixins).mixin);
|
||||
Expect.equals(reflectClass(Mixin2),
|
||||
reflectClass(MultipleMixins).superclass.mixin);
|
||||
Expect.equals(reflectClass(Class),
|
||||
reflectClass(MultipleMixins).superclass.superclass.mixin);
|
||||
Expect.equals(reflectClass(Mixin),
|
||||
reflectClass(MultipleMixins).superclass.superclass.superclass
|
||||
.mixin);
|
||||
Expect.equals(reflectClass(Super),
|
||||
reflectClass(MultipleMixins).superclass.superclass.superclass
|
||||
.superclass.mixin);
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
library test.mixin;
|
||||
|
||||
import 'dart:mirrors';
|
||||
|
||||
import 'package:expect/expect.dart';
|
||||
|
||||
class Bar {
|
||||
String _field = "hello";
|
||||
String get field => _field;
|
||||
}
|
||||
|
||||
var privateSymbol2 = #_field;
|
||||
var publicSymbol2 = #field;
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
library test.mixin;
|
||||
|
||||
import 'dart:mirrors';
|
||||
|
||||
import 'package:expect/expect.dart';
|
||||
|
||||
import 'private_field_helper.dart';
|
||||
|
||||
class Foo extends Bar {
|
||||
int _field = 42;
|
||||
|
||||
static int _staticField = 99;
|
||||
}
|
||||
|
||||
var privateSymbol = #_field;
|
||||
var publicSymbol = #field;
|
||||
|
||||
main() {
|
||||
Expect.equals(publicSymbol, publicSymbol2);
|
||||
Expect.notEquals(privateSymbol, privateSymbol2);
|
||||
|
||||
var foo = new Foo();
|
||||
var m = reflect(foo);
|
||||
m.setField(privateSymbol, 38);
|
||||
Expect.equals(38, foo._field);
|
||||
m.setField(privateSymbol2, "world");
|
||||
Expect.equals("world", foo.field);
|
||||
Expect.equals("world", m.getField(publicSymbol).reflectee);
|
||||
|
||||
var type = reflectClass(Foo);
|
||||
Expect.equals(99, type.getField(#_staticField).reflectee);
|
||||
}
|
|
@ -15,6 +15,9 @@ part of dart._internal;
|
|||
class Symbol implements core.Symbol {
|
||||
final String _name;
|
||||
|
||||
// Used internally by DDC to map ES6 symbols to Dart.
|
||||
final dynamic _nativeSymbol;
|
||||
|
||||
/**
|
||||
* Source of RegExp matching Dart reserved words.
|
||||
*
|
||||
|
@ -95,22 +98,28 @@ class Symbol implements core.Symbol {
|
|||
* The empty symbol is handled before this regexp is used, and is not
|
||||
* accepted.
|
||||
*/
|
||||
static final RegExp symbolPattern = new RegExp(
|
||||
'^(?:$operatorRE\$|$identifierRE(?:=?\$|[.](?!\$)))+?\$');
|
||||
static final RegExp symbolPattern =
|
||||
new RegExp('^(?:$operatorRE\$|$identifierRE(?:=?\$|[.](?!\$)))+?\$');
|
||||
|
||||
external const Symbol(String name);
|
||||
|
||||
external const Symbol.es6(String name, nativeSymbol);
|
||||
|
||||
/**
|
||||
* Platform-private method used by the mirror system to create
|
||||
* otherwise invalid names.
|
||||
*/
|
||||
const Symbol.unvalidated(this._name);
|
||||
const Symbol.unvalidated(this._name) : this._nativeSymbol = null;
|
||||
|
||||
// This is called by dart2js.
|
||||
Symbol.validated(String name)
|
||||
: this._name = validatePublicSymbol(name);
|
||||
: this._name = validatePublicSymbol(name),
|
||||
this._nativeSymbol = null;
|
||||
|
||||
bool operator ==(Object other) => other is Symbol && _name == other._name;
|
||||
bool operator ==(Object other) =>
|
||||
other is Symbol &&
|
||||
_name == other._name &&
|
||||
_nativeSymbol == other._nativeSymbol;
|
||||
|
||||
external int get hashCode;
|
||||
|
||||
|
@ -119,6 +128,8 @@ class Symbol implements core.Symbol {
|
|||
/// Platform-private accessor which cannot be called from user libraries.
|
||||
static String getName(Symbol symbol) => symbol._name;
|
||||
|
||||
static dynamic getNativeSymbol(Symbol symbol) => symbol._nativeSymbol;
|
||||
|
||||
static String validatePublicSymbol(String name) {
|
||||
if (name.isEmpty || publicSymbolPattern.hasMatch(name)) return name;
|
||||
if (name.startsWith('_')) {
|
||||
|
@ -127,8 +138,7 @@ class Symbol implements core.Symbol {
|
|||
// message.
|
||||
throw new ArgumentError('"$name" is a private identifier');
|
||||
}
|
||||
throw new ArgumentError(
|
||||
'"$name" is not a valid (qualified) symbol name');
|
||||
throw new ArgumentError('"$name" is not a valid (qualified) symbol name');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -11,7 +11,11 @@ import 'dart:_foreign_helper' show JS;
|
|||
class Symbol implements core.Symbol {
|
||||
@patch
|
||||
const Symbol(String name)
|
||||
: this._name = name;
|
||||
: this._name = name, this._nativeSymbol = null;
|
||||
|
||||
@patch
|
||||
const Symbol.es6(String name, dynamic nativeSymbol)
|
||||
: this._name = name, this._nativeSymbol = nativeSymbol;
|
||||
|
||||
@patch
|
||||
int get hashCode {
|
||||
|
|
|
@ -64,12 +64,12 @@ mixin(base, @rest mixins) => JS(
|
|||
/// The Symbol for storing type arguments on a specialized generic type.
|
||||
final _mixins = JS('', 'Symbol("mixins")');
|
||||
|
||||
getMixins(clazz) => JS('', '$clazz[$_mixins]');
|
||||
getMixins(clazz) => JS('', 'Object.hasOwnProperty.call(#, #) ? #[#] : null', clazz, _mixins, clazz, _mixins);
|
||||
|
||||
@JSExportName('implements')
|
||||
final _implements = JS('', 'Symbol("implements")');
|
||||
|
||||
getImplements(clazz) => JS('', '#[#]', clazz, _implements);
|
||||
getImplements(clazz) => JS('', 'Object.hasOwnProperty.call(#, #) ? #[#] : null', clazz, _implements, clazz, _implements);
|
||||
|
||||
/// The Symbol for storing type arguments on a specialized generic type.
|
||||
final _typeArguments = JS('', 'Symbol("typeArguments")');
|
||||
|
|
|
@ -71,71 +71,108 @@ dynamic _defaultConstructorType(type) {
|
|||
return JS('', '#.definiteFunctionType(#, [])', _dart, type);
|
||||
}
|
||||
|
||||
dynamic _getMixins(type) {
|
||||
return JS('', '#.getMixins(#, [])', _dart, type);
|
||||
}
|
||||
|
||||
typedef T _Lazy<T>();
|
||||
|
||||
dynamic _getESSymbol(Symbol symbol) =>
|
||||
_internal.Symbol.getNativeSymbol(symbol as _internal.Symbol);
|
||||
|
||||
dynamic _getMember(Symbol symbol) {
|
||||
var privateSymbol = _getESSymbol(symbol);
|
||||
if (privateSymbol != null) {
|
||||
return privateSymbol;
|
||||
}
|
||||
return getName(symbol);
|
||||
}
|
||||
|
||||
String _getNameForESSymbol(member) {
|
||||
// Convert private JS symbol "Symbol(_foo)" to string "_foo".
|
||||
assert(JS('bool', 'typeof # == "symbol"', member));
|
||||
var str = member.toString();
|
||||
assert(str.startsWith('Symbol(') && str.endsWith(')'));
|
||||
return str.substring(7, str.length - 1);
|
||||
}
|
||||
|
||||
Map _toDartMap(data) {
|
||||
Symbol _getSymbolForESSymbol(member) {
|
||||
var name = _getNameForESSymbol(member);
|
||||
return new _internal.Symbol.es6(name, member);
|
||||
}
|
||||
|
||||
// The [member] must be either a string (public) or an ES6 symbol (private).
|
||||
Symbol _getSymbolForMember(member) {
|
||||
if (member is String) {
|
||||
return new Symbol(member);
|
||||
} else {
|
||||
var name = _getNameForESSymbol(member);
|
||||
return new _internal.Symbol.es6(name, member);
|
||||
}
|
||||
}
|
||||
|
||||
Map<Symbol, dynamic> _toDartMap(data) {
|
||||
if (data == null) return {};
|
||||
var map = JS('Map', '#.map(#)', _dart, data);
|
||||
var map = new Map<Symbol, dynamic>();
|
||||
// Note: we recorded a map from fields/methods to their type and metadata.
|
||||
// The key is a string name for public members but an ES6 symbol for private
|
||||
// ones. That's works nicely for dynamic operations, but dart:mirrors expects
|
||||
// strings, so we convert back here.
|
||||
// Dart symbols, so we convert here.
|
||||
var publicMembers = JS('', 'Object.getOwnPropertyNames(#)', data);
|
||||
for (var member in publicMembers) {
|
||||
var symbol = new Symbol(member);
|
||||
map[symbol] = JS('', '#[#]', data, member);
|
||||
}
|
||||
|
||||
var privateMembers = JS('', 'Object.getOwnPropertySymbols(#)', data);
|
||||
for (var member in privateMembers) {
|
||||
var name = _getNameForESSymbol(member);
|
||||
map[name] = JS('', '#[#]', data, member);
|
||||
var symbol = _getSymbolForESSymbol(member);
|
||||
map[symbol] = JS('', '#[#]', data, member);
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
Map _getConstructors(obj) {
|
||||
Map<Symbol, dynamic> _getConstructors(obj) {
|
||||
List sig = JS('', '#.getConstructorSig(#)', _dart, obj);
|
||||
return _toDartMap(sig);
|
||||
}
|
||||
|
||||
Map _getFields(obj) {
|
||||
Map<Symbol, dynamic> _getFields(obj) {
|
||||
List sig = JS('', '#.getFieldSig(#)', _dart, obj);
|
||||
return _toDartMap(sig);
|
||||
}
|
||||
|
||||
Map _getMethods(obj) {
|
||||
Map<Symbol, dynamic> _getMethods(obj) {
|
||||
List sig = JS('', '#.getMethodSig(#)', _dart, obj);
|
||||
return _toDartMap(sig);
|
||||
}
|
||||
|
||||
Map _getGetters(obj) {
|
||||
Map<Symbol, dynamic> _getGetters(obj) {
|
||||
List sig = JS('', '#.getGetterSig(#)', _dart, obj);
|
||||
return _toDartMap(sig);
|
||||
}
|
||||
|
||||
Map _getSetters(obj) {
|
||||
Map<Symbol, dynamic> _getSetters(obj) {
|
||||
List sig = JS('', '#.getSetterSig(#)', _dart, obj);
|
||||
return _toDartMap(sig);
|
||||
}
|
||||
|
||||
Map _getStaticFields(obj) {
|
||||
Map<Symbol, dynamic> _getStaticFields(obj) {
|
||||
List sig = JS('', '#.getStaticFieldSig(#)', _dart, obj);
|
||||
return _toDartMap(sig);
|
||||
}
|
||||
|
||||
Map _getStatics(obj) {
|
||||
Map<Symbol, dynamic> _getStatics(obj) {
|
||||
List sig = JS('', '#.getStaticSig(#)', _dart, obj);
|
||||
return _toDartMap(sig);
|
||||
}
|
||||
|
||||
Map _getStaticGetters(obj) {
|
||||
Map<Symbol, dynamic> _getStaticGetters(obj) {
|
||||
List sig = JS('', '#.getStaticGetterSig(#)', _dart, obj);
|
||||
return _toDartMap(sig);
|
||||
}
|
||||
|
||||
Map _getStaticSetters(obj) {
|
||||
Map<Symbol, dynamic> _getStaticSetters(obj) {
|
||||
List sig = JS('', '#.getStaticSetterSig(#)', _dart, obj);
|
||||
return _toDartMap(sig);
|
||||
}
|
||||
|
@ -211,21 +248,7 @@ class JsInstanceMirror extends JsObjectMirror implements InstanceMirror {
|
|||
// Returns a String for public members or an ES6 symbol for private members.
|
||||
_getAccessor(dynamic reflectee, Symbol symbol, [List<dynamic> args,
|
||||
Map<Symbol, dynamic> namedArgs]) {
|
||||
var name = getName(symbol);
|
||||
if (!name.startsWith('_')) return name;
|
||||
|
||||
// TODO(vsm): Ideally, we'd record ES6 symbols properly during codegen if
|
||||
// mirrors is enabled. Here, we're trying to recover it from the receiver
|
||||
// instead.
|
||||
//
|
||||
// Get private fields and members. Members are on proto.
|
||||
var privateMembers = JS('', 'Object.getOwnPropertySymbols(#)', reflectee)
|
||||
..addAll(JS('', 'Object.getOwnPropertySymbols(#.__proto__)', reflectee));
|
||||
for (var member in privateMembers) {
|
||||
var privateName = _getNameForESSymbol(member);
|
||||
if (name == privateName) return member;
|
||||
}
|
||||
return new NoSuchMethodError(reflectee, symbol, args, namedArgs);
|
||||
return _getMember(symbol);
|
||||
}
|
||||
|
||||
InstanceMirror getField(Symbol symbol) {
|
||||
|
@ -275,7 +298,7 @@ class JsClassMirror extends JsMirror implements ClassMirror {
|
|||
final dynamic _raw;
|
||||
|
||||
// TODO(vsm): Do this properly
|
||||
final ClassMirror mixin = null;
|
||||
ClassMirror _mixin = null;
|
||||
List<TypeMirror> _typeArguments;
|
||||
|
||||
List<InstanceMirror> _metadata;
|
||||
|
@ -305,67 +328,67 @@ class JsClassMirror extends JsMirror implements ClassMirror {
|
|||
_declarations = new Map<Symbol, DeclarationMirror>();
|
||||
var unwrapped = _unwrap(_cls);
|
||||
var constructors = _getConstructors(unwrapped);
|
||||
constructors.forEach((String name, ft) {
|
||||
var symbol = new Symbol(name);
|
||||
_declarations[symbol] = new JsMethodMirror._constructor(this, name, ft);
|
||||
constructors.forEach((symbol, ft) {
|
||||
var name = getName(symbol);
|
||||
_declarations[symbol] = new JsMethodMirror._constructor(this, symbol, ft);
|
||||
});
|
||||
if (constructors.isEmpty) {
|
||||
// Add a default
|
||||
var name = 'new';
|
||||
var ft = _defaultConstructorType(_unwrap(_cls));
|
||||
var symbol = new Symbol(name);
|
||||
_declarations[symbol] = new JsMethodMirror._constructor(this, name, ft);
|
||||
_declarations[symbol] = new JsMethodMirror._constructor(this, symbol, ft);
|
||||
}
|
||||
var fields = _getFields(unwrapped);
|
||||
fields.forEach((String name, t) {
|
||||
var symbol = new Symbol(name);
|
||||
fields.forEach((symbol, t) {
|
||||
var metadata = [];
|
||||
if (t is List) {
|
||||
metadata = t.skip(1).toList();
|
||||
t = t[0];
|
||||
}
|
||||
_declarations[symbol] = new JsVariableMirror._(name, _wrap(t), metadata);
|
||||
_declarations[symbol] = new JsVariableMirror._(symbol, _wrap(t), metadata);
|
||||
});
|
||||
var methods = _getMethods(unwrapped);
|
||||
methods.forEach((String name, ft) {
|
||||
var symbol = new Symbol(name);
|
||||
_declarations[symbol] = new JsMethodMirror._instanceMethod(this, name, ft);
|
||||
methods.forEach((symbol, ft) {
|
||||
var name = getName(symbol);
|
||||
_declarations[symbol] = new JsMethodMirror._instanceMethod(this, symbol, ft);
|
||||
});
|
||||
var getters = _getGetters(unwrapped);
|
||||
getters.forEach((String name, ft) {
|
||||
var symbol = new Symbol(name);
|
||||
_declarations[symbol] = new JsMethodMirror._instanceMethod(this, name, ft);
|
||||
getters.forEach((symbol, ft) {
|
||||
var name = getName(symbol);
|
||||
_declarations[symbol] = new JsMethodMirror._instanceMethod(this, symbol, ft);
|
||||
});
|
||||
var setters = _getSetters(unwrapped);
|
||||
setters.forEach((String name, ft) {
|
||||
name += '=';
|
||||
var symbol = new Symbol(name);
|
||||
_declarations[symbol] = new JsMethodMirror._instanceMethod(this, name, ft);
|
||||
setters.forEach((symbol, ft) {
|
||||
var name = getName(symbol) + '=';
|
||||
// Create a separate symbol for the setter.
|
||||
symbol = new _internal.Symbol.es6(name, _getESSymbol(symbol));
|
||||
_declarations[symbol] = new JsMethodMirror._instanceMethod(this, symbol, ft);
|
||||
});
|
||||
var staticFields = _getStaticFields(unwrapped);
|
||||
staticFields.forEach((String name, t) {
|
||||
var symbol = new Symbol(name);
|
||||
staticFields.forEach((symbol, t) {
|
||||
var name = getName(symbol);
|
||||
var metadata = [];
|
||||
if (t is List) {
|
||||
metadata = t.skip(1).toList();
|
||||
t = t[0];
|
||||
}
|
||||
_declarations[symbol] = new JsVariableMirror._(name, _wrap(t), metadata);
|
||||
_declarations[symbol] = new JsVariableMirror._(symbol, _wrap(t), metadata);
|
||||
});
|
||||
var statics = _getStatics(unwrapped);
|
||||
statics.forEach((String name, ft) {
|
||||
var symbol = new Symbol(name);
|
||||
_declarations[symbol] = new JsMethodMirror._staticMethod(this, name, ft);
|
||||
statics.forEach((symbol, ft) {
|
||||
var name = getName(symbol);
|
||||
_declarations[symbol] = new JsMethodMirror._staticMethod(this, symbol, ft);
|
||||
});
|
||||
var staticGetters = _getStaticGetters(unwrapped);
|
||||
staticGetters.forEach((String name, ft) {
|
||||
var symbol = new Symbol(name);
|
||||
_declarations[symbol] = new JsMethodMirror._staticMethod(this, name, ft);
|
||||
staticGetters.forEach((symbol, ft) {
|
||||
var name = getName(symbol);
|
||||
_declarations[symbol] = new JsMethodMirror._staticMethod(this, symbol, ft);
|
||||
});
|
||||
var staticSetters = _getStaticSetters(unwrapped);
|
||||
staticSetters.forEach((String name, ft) {
|
||||
var symbol = new Symbol(name);
|
||||
_declarations[symbol] = new JsMethodMirror._staticMethod(this, name, ft);
|
||||
staticSetters.forEach((symbol, ft) {
|
||||
var name = getName(symbol);
|
||||
_declarations[symbol] = new JsMethodMirror._staticMethod(this, symbol, ft);
|
||||
});
|
||||
_declarations = new Map<Symbol, DeclarationMirror>.unmodifiable(_declarations);
|
||||
}
|
||||
|
@ -455,23 +478,44 @@ class JsClassMirror extends JsMirror implements ClassMirror {
|
|||
}
|
||||
}
|
||||
|
||||
ClassMirror get mixin {
|
||||
if (_mixin != null) {
|
||||
return _mixin;
|
||||
}
|
||||
var mixins = _getMixins(_unwrap(_cls));
|
||||
if (mixins == null || mixins.isEmpty) {
|
||||
// If there is no mixin, return this mirror per API.
|
||||
_mixin = this;
|
||||
return _mixin;
|
||||
}
|
||||
if (mixins.length > 1) {
|
||||
throw new UnsupportedError("ClassMirror.mixin not yet supported for "
|
||||
"classes ($_cls) with multiple mixins");
|
||||
}
|
||||
_mixin = reflectType(_wrap(mixins[0]));
|
||||
return _mixin;
|
||||
}
|
||||
|
||||
String toString() => "ClassMirror on '$_cls'";
|
||||
}
|
||||
|
||||
class JsVariableMirror extends JsMirror implements VariableMirror {
|
||||
final Symbol _symbol;
|
||||
final String _name;
|
||||
final TypeMirror type;
|
||||
final List<InstanceMirror> metadata;
|
||||
|
||||
// TODO(vsm): Refactor this out.
|
||||
Symbol get simpleName => new Symbol(_name);
|
||||
Symbol get simpleName => _symbol;
|
||||
|
||||
// TODO(vsm): Fix this
|
||||
final bool isStatic = false;
|
||||
final bool isFinal = false;
|
||||
|
||||
JsVariableMirror._(this._name, Type t, List annotations)
|
||||
: type = reflectType(t),
|
||||
JsVariableMirror._(Symbol symbol, Type t, List annotations)
|
||||
: _symbol = symbol,
|
||||
_name = getName(symbol),
|
||||
type = reflectType(t),
|
||||
metadata = new List<InstanceMirror>.unmodifiable(
|
||||
annotations.map((a) => reflect(a)));
|
||||
|
||||
|
@ -479,14 +523,14 @@ class JsVariableMirror extends JsMirror implements VariableMirror {
|
|||
}
|
||||
|
||||
class JsParameterMirror extends JsVariableMirror implements ParameterMirror {
|
||||
JsParameterMirror._(String name, Type t, List annotations)
|
||||
: super._(name, t, annotations);
|
||||
JsParameterMirror._(Symbol member, Type t, List annotations)
|
||||
: super._(member, t, annotations);
|
||||
|
||||
String toString() => "ParameterMirror on '$_name'";
|
||||
}
|
||||
|
||||
class JsMethodMirror extends JsMirror implements MethodMirror {
|
||||
// TODO(vsm): This could be a JS symbol for private methods
|
||||
final Symbol _symbol;
|
||||
final String _name;
|
||||
List<ParameterMirror> _params;
|
||||
List<InstanceMirror> _metadata;
|
||||
|
@ -499,25 +543,25 @@ class JsMethodMirror extends JsMirror implements MethodMirror {
|
|||
bool get isPrivate => _name.startsWith('_');
|
||||
|
||||
// TODO(vsm): Refactor this out.
|
||||
Symbol get simpleName => new Symbol(_name);
|
||||
Symbol get simpleName => _symbol;
|
||||
|
||||
JsMethodMirror._constructor(JsClassMirror cls, String name, ftype)
|
||||
: _name = name, isConstructor = true, isStatic = false {
|
||||
JsMethodMirror._constructor(JsClassMirror cls, Symbol symbol, ftype)
|
||||
: _symbol = symbol, _name = getName(symbol), isConstructor = true, isStatic = false {
|
||||
_createParameterMirrorList(ftype);
|
||||
}
|
||||
|
||||
JsMethodMirror._instanceMethod(JsClassMirror cls, String name, ftype)
|
||||
: _name = name, isConstructor = false, isStatic = false {
|
||||
JsMethodMirror._instanceMethod(JsClassMirror cls, Symbol symbol, ftype)
|
||||
: _symbol = symbol, _name = getName(symbol), isConstructor = false, isStatic = false {
|
||||
_createParameterMirrorList(ftype);
|
||||
}
|
||||
|
||||
JsMethodMirror._staticMethod(JsClassMirror cls, String name, ftype)
|
||||
: _name = name, isConstructor = false, isStatic = true {
|
||||
JsMethodMirror._staticMethod(JsClassMirror cls, Symbol symbol, ftype)
|
||||
: _symbol = symbol, _name = getName(symbol), isConstructor = false, isStatic = true {
|
||||
_createParameterMirrorList(ftype);
|
||||
}
|
||||
|
||||
// TODO(vsm): Support named constructors.
|
||||
Symbol get constructorName => isConstructor ? new Symbol(_name) : null;
|
||||
Symbol get constructorName => isConstructor ? _symbol : null;
|
||||
List<ParameterMirror> get parameters => _params;
|
||||
List<InstanceMirror> get metadata => _metadata;
|
||||
|
||||
|
@ -556,7 +600,7 @@ class JsMethodMirror extends JsMirror implements MethodMirror {
|
|||
var type = args[i];
|
||||
var metadata = ftype.metadata[i];
|
||||
// TODO(vsm): Recover the param name.
|
||||
var param = new JsParameterMirror._('', _wrap(type), metadata);
|
||||
var param = new JsParameterMirror._(new Symbol(''), _wrap(type), metadata);
|
||||
params[i] = param;
|
||||
}
|
||||
|
||||
|
@ -564,7 +608,7 @@ class JsMethodMirror extends JsMirror implements MethodMirror {
|
|||
var type = opts[i];
|
||||
var metadata = ftype.metadata[args.length + i];
|
||||
// TODO(vsm): Recover the param name.
|
||||
var param = new JsParameterMirror._('', _wrap(type), metadata);
|
||||
var param = new JsParameterMirror._(new Symbol(''), _wrap(type), metadata);
|
||||
params[i + args.length] = param;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue