OLD | NEW |
1 dart_library.library('dart/_js_mirrors', null, /* Imports */[ | 1 dart_library.library('dart/_js_mirrors', null, /* Imports */[ |
2 'dart/_runtime', | 2 'dart/_runtime', |
3 'dart/_internal', | 3 'dart/_internal', |
4 'dart/core', | 4 'dart/core', |
5 'dart/mirrors' | 5 'dart/mirrors' |
6 ], /* Lazy imports */[ | 6 ], /* Lazy imports */[ |
7 ], function(exports, dart, _internal, core, mirrors) { | 7 ], function(exports, dart, _internal, core, mirrors) { |
8 'use strict'; | 8 'use strict'; |
9 let dartx = dart.dartx; | 9 let dartx = dart.dartx; |
10 function getName(symbol) { | 10 function getName(symbol) { |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 let name = getName(symbol); | 70 let name = getName(symbol); |
71 if (namedArgs != null) { | 71 if (namedArgs != null) { |
72 args = core.List.from(args); | 72 args = core.List.from(args); |
73 args[dartx.add](this[_toJsMap](namedArgs)); | 73 args[dartx.add](this[_toJsMap](namedArgs)); |
74 } | 74 } |
75 let result = _dsend(this.reflectee, name, args); | 75 let result = _dsend(this.reflectee, name, args); |
76 return new JsInstanceMirror._(result); | 76 return new JsInstanceMirror._(result); |
77 } | 77 } |
78 [_toJsMap](map) { | 78 [_toJsMap](map) { |
79 let obj = {}; | 79 let obj = {}; |
80 map.forEach(dart.fn((key, value) => { | 80 map[dartx.forEach](dart.fn((key, value) => { |
81 obj[getName(key)] = value; | 81 obj[getName(key)] = value; |
82 }, dart.void, [core.Symbol, dart.dynamic])); | 82 }, dart.void, [core.Symbol, dart.dynamic])); |
83 return obj; | 83 return obj; |
84 } | 84 } |
85 } | 85 } |
86 JsInstanceMirror[dart.implements] = () => [mirrors.InstanceMirror]; | 86 JsInstanceMirror[dart.implements] = () => [mirrors.InstanceMirror]; |
87 dart.defineNamedConstructor(JsInstanceMirror, '_'); | 87 dart.defineNamedConstructor(JsInstanceMirror, '_'); |
88 dart.setSignature(JsInstanceMirror, { | 88 dart.setSignature(JsInstanceMirror, { |
89 constructors: () => ({_: [JsInstanceMirror, [core.Object]]}), | 89 constructors: () => ({_: [JsInstanceMirror, [core.Object]]}), |
90 methods: () => ({ | 90 methods: () => ({ |
(...skipping 15 matching lines...) Expand all Loading... |
106 return this[_declarations]; | 106 return this[_declarations]; |
107 } | 107 } |
108 _(cls) { | 108 _(cls) { |
109 this[_cls] = cls; | 109 this[_cls] = cls; |
110 this.simpleName = core.Symbol.new(cls.name); | 110 this.simpleName = core.Symbol.new(cls.name); |
111 this[_metadata] = null; | 111 this[_metadata] = null; |
112 this[_declarations] = null; | 112 this[_declarations] = null; |
113 let fn = this[_cls][dart.metadata]; | 113 let fn = this[_cls][dart.metadata]; |
114 this[_metadata] = fn == null ? dart.list([], mirrors.InstanceMirror) : cor
e.List$(mirrors.InstanceMirror).from(dart.as(dart.dsend(dart.dcall(fn), 'map', d
art.fn(i => new JsInstanceMirror._(i), JsInstanceMirror, [dart.dynamic])), core.
Iterable)); | 114 this[_metadata] = fn == null ? dart.list([], mirrors.InstanceMirror) : cor
e.List$(mirrors.InstanceMirror).from(dart.as(dart.dsend(dart.dcall(fn), 'map', d
art.fn(i => new JsInstanceMirror._(i), JsInstanceMirror, [dart.dynamic])), core.
Iterable)); |
115 this[_declarations] = core.Map$(core.Symbol, mirrors.MethodMirror).new(); | 115 this[_declarations] = core.Map$(core.Symbol, mirrors.MethodMirror).new(); |
116 this[_declarations].set(this.simpleName, new JsMethodMirror._(this, this[_
cls])); | 116 this[_declarations][dartx.set](this.simpleName, new JsMethodMirror._(this,
this[_cls])); |
117 } | 117 } |
118 newInstance(constructorName, args, namedArgs) { | 118 newInstance(constructorName, args, namedArgs) { |
119 if (namedArgs === void 0) namedArgs = null; | 119 if (namedArgs === void 0) namedArgs = null; |
120 dart.assert(getName(constructorName) == ""); | 120 dart.assert(getName(constructorName) == ""); |
121 dart.assert(namedArgs == null || dart.notNull(namedArgs.isEmpty)); | 121 dart.assert(namedArgs == null || dart.notNull(namedArgs[dartx.isEmpty])); |
122 let instance = new this[_cls](...args); | 122 let instance = new this[_cls](...args); |
123 return new JsInstanceMirror._(instance); | 123 return new JsInstanceMirror._(instance); |
124 } | 124 } |
125 get superinterfaces() { | 125 get superinterfaces() { |
126 let interfaceThunk = this[_cls][dart.implements]; | 126 let interfaceThunk = this[_cls][dart.implements]; |
127 if (interfaceThunk == null) { | 127 if (interfaceThunk == null) { |
128 return dart.list([], mirrors.ClassMirror); | 128 return dart.list([], mirrors.ClassMirror); |
129 } else { | 129 } else { |
130 let interfaces = dart.as(dart.dcall(interfaceThunk), core.List$(core.Typ
e)); | 130 let interfaces = dart.as(dart.dcall(interfaceThunk), core.List$(core.Typ
e)); |
131 return interfaces[dartx.map](dart.fn(t => new JsClassMirror._(t), JsClas
sMirror, [core.Type]))[dartx.toList](); | 131 return interfaces[dartx.map](dart.fn(t => new JsClassMirror._(t), JsClas
sMirror, [core.Type]))[dartx.toList](); |
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
438 exports.getName = getName; | 438 exports.getName = getName; |
439 exports.getSymbol = getSymbol; | 439 exports.getSymbol = getSymbol; |
440 exports.reflect = reflect; | 440 exports.reflect = reflect; |
441 exports.reflectType = reflectType; | 441 exports.reflectType = reflectType; |
442 exports.JsInstanceMirror = JsInstanceMirror; | 442 exports.JsInstanceMirror = JsInstanceMirror; |
443 exports.JsClassMirror = JsClassMirror; | 443 exports.JsClassMirror = JsClassMirror; |
444 exports.JsTypeMirror = JsTypeMirror; | 444 exports.JsTypeMirror = JsTypeMirror; |
445 exports.JsParameterMirror = JsParameterMirror; | 445 exports.JsParameterMirror = JsParameterMirror; |
446 exports.JsMethodMirror = JsMethodMirror; | 446 exports.JsMethodMirror = JsMethodMirror; |
447 }); | 447 }); |
OLD | NEW |