Index: pkg/dev_compiler/lib/js/amd/dart_sdk.js |
diff --git a/pkg/dev_compiler/lib/js/amd/dart_sdk.js b/pkg/dev_compiler/lib/js/amd/dart_sdk.js |
index 7252d35bd6a579a08d32c5a4836f67cf05cad629..eb689c4e939210a4b87ae9220dc05036abb75119 100644 |
--- a/pkg/dev_compiler/lib/js/amd/dart_sdk.js |
+++ b/pkg/dev_compiler/lib/js/amd/dart_sdk.js |
@@ -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(), |