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

Unified Diff: pkg/dev_compiler/lib/js/common/dart_sdk.js

Issue 2535273002: Better mirrors support for mixins and private fields (Closed)
Patch Set: Address comments Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
Download patch
« no previous file with comments | « pkg/dev_compiler/lib/js/amd/dart_sdk.js ('k') | pkg/dev_compiler/lib/js/es6/dart_sdk.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/dev_compiler/lib/js/common/dart_sdk.js
diff --git a/pkg/dev_compiler/lib/js/common/dart_sdk.js b/pkg/dev_compiler/lib/js/common/dart_sdk.js
index 2656bda466e5e92b2474cc4ef3971a9ce60d7e8a..f06ebfab2f130d5b4a44153fe1215a42989d8593 100644
--- a/pkg/dev_compiler/lib/js/common/dart_sdk.js
+++ b/pkg/dev_compiler/lib/js/common/dart_sdk.js
@@ -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(),
« no previous file with comments | « pkg/dev_compiler/lib/js/amd/dart_sdk.js ('k') | pkg/dev_compiler/lib/js/es6/dart_sdk.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698