OLD | NEW |
| (Empty) |
1 dart_library.library('dart/_js_mirrors', null, /* Imports */[ | |
2 'dart/_runtime', | |
3 'dart/_internal', | |
4 'dart/core', | |
5 'dart/mirrors' | |
6 ], /* Lazy imports */[ | |
7 ], function(exports, dart, _internal, core, mirrors) { | |
8 'use strict'; | |
9 let dartx = dart.dartx; | |
10 function getName(symbol) { | |
11 return _internal.Symbol.getName(dart.as(symbol, _internal.Symbol)); | |
12 } | |
13 dart.fn(getName, core.String, [core.Symbol]); | |
14 function getSymbol(name, library) { | |
15 return dart.throw(new core.UnimplementedError("MirrorSystem.getSymbol unimpl
emented")); | |
16 } | |
17 dart.fn(getSymbol, core.Symbol, [dart.dynamic, dart.dynamic]); | |
18 dart.defineLazyProperties(exports, { | |
19 get currentJsMirrorSystem() { | |
20 return dart.throw(new core.UnimplementedError("MirrorSystem.currentJsMirro
rSystem unimplemented")); | |
21 } | |
22 }); | |
23 function reflect(reflectee) { | |
24 return new JsInstanceMirror._(reflectee); | |
25 } | |
26 dart.fn(reflect, mirrors.InstanceMirror, [dart.dynamic]); | |
27 function reflectType(key) { | |
28 return new JsClassMirror._(key); | |
29 } | |
30 dart.fn(reflectType, mirrors.TypeMirror, [core.Type]); | |
31 const _dart = dart; | |
32 function _dload(obj, name) { | |
33 return _dart.dload(obj, name); | |
34 } | |
35 dart.fn(_dload, dart.dynamic, [dart.dynamic, core.String]); | |
36 function _dput(obj, name, val) { | |
37 _dart.dput(obj, name, val); | |
38 } | |
39 dart.fn(_dput, dart.void, [dart.dynamic, core.String, dart.dynamic]); | |
40 function _dsend(obj, name, args) { | |
41 return _dart.dsend(obj, name, ...args); | |
42 } | |
43 dart.fn(_dsend, dart.dynamic, [dart.dynamic, core.String, core.List]); | |
44 const _toJsMap = Symbol('_toJsMap'); | |
45 class JsInstanceMirror extends core.Object { | |
46 _(reflectee) { | |
47 this.reflectee = reflectee; | |
48 } | |
49 get type() { | |
50 return dart.throw(new core.UnimplementedError("ClassMirror.type unimplemen
ted")); | |
51 } | |
52 get hasReflectee() { | |
53 return dart.throw(new core.UnimplementedError("ClassMirror.hasReflectee un
implemented")); | |
54 } | |
55 delegate(invocation) { | |
56 return dart.throw(new core.UnimplementedError("ClassMirror.delegate unimpl
emented")); | |
57 } | |
58 getField(symbol) { | |
59 let name = getName(symbol); | |
60 let field = _dload(this.reflectee, name); | |
61 return new JsInstanceMirror._(field); | |
62 } | |
63 setField(symbol, value) { | |
64 let name = getName(symbol); | |
65 _dput(this.reflectee, name, value); | |
66 return new JsInstanceMirror._(value); | |
67 } | |
68 invoke(symbol, args, namedArgs) { | |
69 if (namedArgs === void 0) namedArgs = null; | |
70 let name = getName(symbol); | |
71 if (namedArgs != null) { | |
72 args = core.List.from(args); | |
73 args[dartx.add](this[_toJsMap](namedArgs)); | |
74 } | |
75 let result = _dsend(this.reflectee, name, args); | |
76 return new JsInstanceMirror._(result); | |
77 } | |
78 [_toJsMap](map) { | |
79 let obj = {}; | |
80 map[dartx.forEach](dart.fn((key, value) => { | |
81 obj[getName(key)] = value; | |
82 }, dart.void, [core.Symbol, dart.dynamic])); | |
83 return obj; | |
84 } | |
85 } | |
86 JsInstanceMirror[dart.implements] = () => [mirrors.InstanceMirror]; | |
87 dart.defineNamedConstructor(JsInstanceMirror, '_'); | |
88 dart.setSignature(JsInstanceMirror, { | |
89 constructors: () => ({_: [JsInstanceMirror, [core.Object]]}), | |
90 methods: () => ({ | |
91 delegate: [dart.dynamic, [core.Invocation]], | |
92 getField: [mirrors.InstanceMirror, [core.Symbol]], | |
93 setField: [mirrors.InstanceMirror, [core.Symbol, core.Object]], | |
94 invoke: [mirrors.InstanceMirror, [core.Symbol, core.List], [core.Map$(core
.Symbol, dart.dynamic)]], | |
95 [_toJsMap]: [dart.dynamic, [core.Map$(core.Symbol, dart.dynamic)]] | |
96 }) | |
97 }); | |
98 const _metadata = Symbol('_metadata'); | |
99 const _declarations = Symbol('_declarations'); | |
100 const _cls = Symbol('_cls'); | |
101 class JsClassMirror extends core.Object { | |
102 get metadata() { | |
103 return this[_metadata]; | |
104 } | |
105 get declarations() { | |
106 return this[_declarations]; | |
107 } | |
108 _(cls) { | |
109 this[_cls] = cls; | |
110 this.simpleName = core.Symbol.new(cls.name); | |
111 this[_metadata] = null; | |
112 this[_declarations] = null; | |
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)); | |
115 this[_declarations] = core.Map$(core.Symbol, mirrors.MethodMirror).new(); | |
116 this[_declarations][dartx.set](this.simpleName, new JsMethodMirror._(this,
this[_cls])); | |
117 } | |
118 newInstance(constructorName, args, namedArgs) { | |
119 if (namedArgs === void 0) namedArgs = null; | |
120 dart.assert(getName(constructorName) == ""); | |
121 dart.assert(namedArgs == null || dart.notNull(namedArgs[dartx.isEmpty])); | |
122 let instance = new this[_cls](...args); | |
123 return new JsInstanceMirror._(instance); | |
124 } | |
125 get superinterfaces() { | |
126 let interfaceThunk = this[_cls][dart.implements]; | |
127 if (interfaceThunk == null) { | |
128 return dart.list([], mirrors.ClassMirror); | |
129 } else { | |
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](); | |
132 } | |
133 } | |
134 getField(fieldName) { | |
135 return dart.throw(new core.UnimplementedError("ClassMirror.getField unimpl
emented")); | |
136 } | |
137 invoke(memberName, positionalArguments, namedArguments) { | |
138 if (namedArguments === void 0) namedArguments = null; | |
139 return dart.throw(new core.UnimplementedError("ClassMirror.invoke unimplem
ented")); | |
140 } | |
141 isAssignableTo(other) { | |
142 return dart.throw(new core.UnimplementedError("ClassMirror.isAssignable un
implemented")); | |
143 } | |
144 isSubclassOf(other) { | |
145 return dart.throw(new core.UnimplementedError("ClassMirror.isSubclassOf un
implemented")); | |
146 } | |
147 isSubtypeOf(other) { | |
148 return dart.throw(new core.UnimplementedError("ClassMirror.isSubtypeOf uni
mplemented")); | |
149 } | |
150 setField(fieldName, value) { | |
151 return dart.throw(new core.UnimplementedError("ClassMirror.setField unimpl
emented")); | |
152 } | |
153 get hasReflectedType() { | |
154 return dart.throw(new core.UnimplementedError("ClassMirror.hasReflectedTyp
e unimplemented")); | |
155 } | |
156 get instanceMembers() { | |
157 return dart.throw(new core.UnimplementedError("ClassMirror.instanceMembers
unimplemented")); | |
158 } | |
159 get isAbstract() { | |
160 return dart.throw(new core.UnimplementedError("ClassMirror.isAbstract unim
plemented")); | |
161 } | |
162 get isEnum() { | |
163 return dart.throw(new core.UnimplementedError("ClassMirror.isEnum unimplem
ented")); | |
164 } | |
165 get isOriginalDeclaration() { | |
166 return dart.throw(new core.UnimplementedError("ClassMirror.isOriginalDecla
ration unimplemented")); | |
167 } | |
168 get isPrivate() { | |
169 return dart.throw(new core.UnimplementedError("ClassMirror.isPrivate unimp
lemented")); | |
170 } | |
171 get isTopLevel() { | |
172 return dart.throw(new core.UnimplementedError("ClassMirror.isTopLevel unim
plemented")); | |
173 } | |
174 get location() { | |
175 return dart.throw(new core.UnimplementedError("ClassMirror.location unimpl
emented")); | |
176 } | |
177 get mixin() { | |
178 return dart.throw(new core.UnimplementedError("ClassMirror.mixin unimpleme
nted")); | |
179 } | |
180 get originalDeclaration() { | |
181 return this; | |
182 } | |
183 get owner() { | |
184 return dart.throw(new core.UnimplementedError("ClassMirror.owner unimpleme
nted")); | |
185 } | |
186 get qualifiedName() { | |
187 return dart.throw(new core.UnimplementedError("ClassMirror.qualifiedName u
nimplemented")); | |
188 } | |
189 get reflectedType() { | |
190 return this[_cls]; | |
191 } | |
192 get staticMembers() { | |
193 return dart.throw(new core.UnimplementedError("ClassMirror.staticMembers u
nimplemented")); | |
194 } | |
195 get superclass() { | |
196 if (dart.equals(this[_cls], core.Object)) { | |
197 return null; | |
198 } else { | |
199 return new JsClassMirror._(this[_cls].__proto__); | |
200 } | |
201 } | |
202 get typeArguments() { | |
203 return dart.throw(new core.UnimplementedError("ClassMirror.typeArguments u
nimplemented")); | |
204 } | |
205 get typeVariables() { | |
206 return dart.throw(new core.UnimplementedError("ClassMirror.typeVariables u
nimplemented")); | |
207 } | |
208 } | |
209 JsClassMirror[dart.implements] = () => [mirrors.ClassMirror]; | |
210 dart.defineNamedConstructor(JsClassMirror, '_'); | |
211 dart.setSignature(JsClassMirror, { | |
212 constructors: () => ({_: [JsClassMirror, [core.Type]]}), | |
213 methods: () => ({ | |
214 newInstance: [mirrors.InstanceMirror, [core.Symbol, core.List], [core.Map$
(core.Symbol, dart.dynamic)]], | |
215 getField: [mirrors.InstanceMirror, [core.Symbol]], | |
216 invoke: [mirrors.InstanceMirror, [core.Symbol, core.List], [core.Map$(core
.Symbol, dart.dynamic)]], | |
217 isAssignableTo: [core.bool, [mirrors.TypeMirror]], | |
218 isSubclassOf: [core.bool, [mirrors.ClassMirror]], | |
219 isSubtypeOf: [core.bool, [mirrors.TypeMirror]], | |
220 setField: [mirrors.InstanceMirror, [core.Symbol, core.Object]] | |
221 }) | |
222 }); | |
223 class JsTypeMirror extends core.Object { | |
224 _(reflectedType) { | |
225 this.reflectedType = reflectedType; | |
226 this.hasReflectedType = true; | |
227 } | |
228 isAssignableTo(other) { | |
229 return dart.throw(new core.UnimplementedError("TypeMirror.isAssignable uni
mplemented")); | |
230 } | |
231 isSubtypeOf(other) { | |
232 return dart.throw(new core.UnimplementedError("TypeMirror.isSubtypeOf unim
plemented")); | |
233 } | |
234 get isOriginalDeclaration() { | |
235 return dart.throw(new core.UnimplementedError("TypeMirror.isOriginalDeclar
ation unimplemented")); | |
236 } | |
237 get isPrivate() { | |
238 return dart.throw(new core.UnimplementedError("TypeMirror.isPrivate unimpl
emented")); | |
239 } | |
240 get isTopLevel() { | |
241 return dart.throw(new core.UnimplementedError("TypeMirror.isTopLevel unimp
lemented")); | |
242 } | |
243 get location() { | |
244 return dart.throw(new core.UnimplementedError("TypeMirror.location unimple
mented")); | |
245 } | |
246 get metadata() { | |
247 return dart.throw(new core.UnimplementedError("TypeMirror.metadata unimple
mented")); | |
248 } | |
249 get originalDeclaration() { | |
250 return dart.throw(new core.UnimplementedError("TypeMirror.originalDeclarat
ion unimplemented")); | |
251 } | |
252 get owner() { | |
253 return dart.throw(new core.UnimplementedError("TypeMirror.owner unimplemen
ted")); | |
254 } | |
255 get qualifiedName() { | |
256 return dart.throw(new core.UnimplementedError("TypeMirror.qualifiedName un
implemented")); | |
257 } | |
258 get simpleName() { | |
259 return dart.throw(new core.UnimplementedError("TypeMirror.simpleName unimp
lemented")); | |
260 } | |
261 get typeArguments() { | |
262 return dart.throw(new core.UnimplementedError("TypeMirror.typeArguments un
implemented")); | |
263 } | |
264 get typeVariables() { | |
265 return dart.throw(new core.UnimplementedError("TypeMirror.typeVariables un
implemented")); | |
266 } | |
267 } | |
268 JsTypeMirror[dart.implements] = () => [mirrors.TypeMirror]; | |
269 dart.defineNamedConstructor(JsTypeMirror, '_'); | |
270 dart.setSignature(JsTypeMirror, { | |
271 constructors: () => ({_: [JsTypeMirror, [core.Type]]}), | |
272 methods: () => ({ | |
273 isAssignableTo: [core.bool, [mirrors.TypeMirror]], | |
274 isSubtypeOf: [core.bool, [mirrors.TypeMirror]] | |
275 }) | |
276 }); | |
277 const _name = Symbol('_name'); | |
278 class JsParameterMirror extends core.Object { | |
279 _(name, t, annotations) { | |
280 this[_name] = name; | |
281 this.type = new JsTypeMirror._(t); | |
282 this.metadata = core.List$(mirrors.InstanceMirror).from(annotations[dartx.
map](dart.fn(a => new JsInstanceMirror._(a), JsInstanceMirror, [dart.dynamic])))
; | |
283 } | |
284 get defaultValue() { | |
285 return dart.throw(new core.UnimplementedError("ParameterMirror.defaultValu
es unimplemented")); | |
286 } | |
287 get hasDefaultValue() { | |
288 return dart.throw(new core.UnimplementedError("ParameterMirror.hasDefaultV
alue unimplemented")); | |
289 } | |
290 get isConst() { | |
291 return dart.throw(new core.UnimplementedError("ParameterMirror.isConst uni
mplemented")); | |
292 } | |
293 get isFinal() { | |
294 return dart.throw(new core.UnimplementedError("ParameterMirror.isFinal uni
mplemented")); | |
295 } | |
296 get isNamed() { | |
297 return dart.throw(new core.UnimplementedError("ParameterMirror.isNamed uni
mplemented")); | |
298 } | |
299 get isOptional() { | |
300 return dart.throw(new core.UnimplementedError("ParameterMirror.isOptional
unimplemented")); | |
301 } | |
302 get isPrivate() { | |
303 return dart.throw(new core.UnimplementedError("ParameterMirror.isPrivate u
nimplemented")); | |
304 } | |
305 get isStatic() { | |
306 return dart.throw(new core.UnimplementedError("ParameterMirror.isStatic un
implemented")); | |
307 } | |
308 get isTopLevel() { | |
309 return dart.throw(new core.UnimplementedError("ParameterMirror.isTopLevel
unimplemented")); | |
310 } | |
311 get location() { | |
312 return dart.throw(new core.UnimplementedError("ParameterMirror.location un
implemented")); | |
313 } | |
314 get owner() { | |
315 return dart.throw(new core.UnimplementedError("ParameterMirror.owner unimp
lemented")); | |
316 } | |
317 get qualifiedName() { | |
318 return dart.throw(new core.UnimplementedError("ParameterMirror.qualifiedNa
me unimplemented")); | |
319 } | |
320 get simpleName() { | |
321 return dart.throw(new core.UnimplementedError("ParameterMirror.simpleName
unimplemented")); | |
322 } | |
323 } | |
324 JsParameterMirror[dart.implements] = () => [mirrors.ParameterMirror]; | |
325 dart.defineNamedConstructor(JsParameterMirror, '_'); | |
326 dart.setSignature(JsParameterMirror, { | |
327 constructors: () => ({_: [JsParameterMirror, [core.String, core.Type, core.L
ist]]}) | |
328 }); | |
329 const _method = Symbol('_method'); | |
330 const _params = Symbol('_params'); | |
331 const _createParameterMirrorList = Symbol('_createParameterMirrorList'); | |
332 class JsMethodMirror extends core.Object { | |
333 _(cls, method) { | |
334 this[_method] = method; | |
335 this[_name] = getName(cls.simpleName); | |
336 this[_params] = null; | |
337 let ftype = _dart.classGetConstructorType(cls[_cls]); | |
338 this[_params] = this[_createParameterMirrorList](ftype); | |
339 } | |
340 get constructorName() { | |
341 return core.Symbol.new(''); | |
342 } | |
343 get parameters() { | |
344 return this[_params]; | |
345 } | |
346 [_createParameterMirrorList](ftype) { | |
347 if (ftype == null) { | |
348 return dart.list([], mirrors.ParameterMirror); | |
349 } | |
350 let args = dart.as(dart.dload(ftype, 'args'), core.List); | |
351 let opts = dart.as(dart.dload(ftype, 'optionals'), core.List); | |
352 let params = core.List$(mirrors.ParameterMirror).new(dart.notNull(args[dar
tx.length]) + dart.notNull(opts[dartx.length])); | |
353 for (let i = 0; i < dart.notNull(args[dartx.length]); ++i) { | |
354 let type = args[dartx.get](i); | |
355 let metadata = dart.dindex(dart.dload(ftype, 'metadata'), i); | |
356 let param = new JsParameterMirror._('', dart.as(type, core.Type), dart.a
s(metadata, core.List)); | |
357 params[dartx.set](i, param); | |
358 } | |
359 for (let i = 0; i < dart.notNull(opts[dartx.length]); ++i) { | |
360 let type = opts[dartx.get](i); | |
361 let metadata = dart.dindex(dart.dload(ftype, 'metadata'), dart.notNull(a
rgs[dartx.length]) + i); | |
362 let param = new JsParameterMirror._('', dart.as(type, core.Type), dart.a
s(metadata, core.List)); | |
363 params[dartx.set](i + dart.notNull(args[dartx.length]), param); | |
364 } | |
365 return params; | |
366 } | |
367 get isAbstract() { | |
368 return dart.throw(new core.UnimplementedError("MethodMirror.isAbstract uni
mplemented")); | |
369 } | |
370 get isConstConstructor() { | |
371 return dart.throw(new core.UnimplementedError("MethodMirror.isConstConstru
ctor unimplemented")); | |
372 } | |
373 get isConstructor() { | |
374 return dart.throw(new core.UnimplementedError("MethodMirror.isConstructor
unimplemented")); | |
375 } | |
376 get isFactoryConstructor() { | |
377 return dart.throw(new core.UnimplementedError("MethodMirror.isFactoryConst
ructor unimplemented")); | |
378 } | |
379 get isGenerativeConstructor() { | |
380 return dart.throw(new core.UnimplementedError("MethodMirror.isGenerativeCo
nstructor unimplemented")); | |
381 } | |
382 get isGetter() { | |
383 return dart.throw(new core.UnimplementedError("MethodMirror.isGetter unimp
lemented")); | |
384 } | |
385 get isOperator() { | |
386 return dart.throw(new core.UnimplementedError("MethodMirror.isOperator uni
mplemented")); | |
387 } | |
388 get isPrivate() { | |
389 return dart.throw(new core.UnimplementedError("MethodMirror.isPrivate unim
plemented")); | |
390 } | |
391 get isRedirectingConstructor() { | |
392 return dart.throw(new core.UnimplementedError("MethodMirror.isRedirectingC
onstructor unimplemented")); | |
393 } | |
394 get isRegularMethod() { | |
395 return dart.throw(new core.UnimplementedError("MethodMirror.isRegularMetho
d unimplemented")); | |
396 } | |
397 get isSetter() { | |
398 return dart.throw(new core.UnimplementedError("MethodMirror.isSetter unimp
lemented")); | |
399 } | |
400 get isStatic() { | |
401 return dart.throw(new core.UnimplementedError("MethodMirror.isStatic unimp
lemented")); | |
402 } | |
403 get isSynthetic() { | |
404 return dart.throw(new core.UnimplementedError("MethodMirror.isSynthetic un
implemented")); | |
405 } | |
406 get isTopLevel() { | |
407 return dart.throw(new core.UnimplementedError("MethodMirror.isTopLevel uni
mplemented")); | |
408 } | |
409 get location() { | |
410 return dart.throw(new core.UnimplementedError("MethodMirror.location unimp
lemented")); | |
411 } | |
412 get metadata() { | |
413 return dart.list([], mirrors.InstanceMirror); | |
414 } | |
415 get owner() { | |
416 return dart.throw(new core.UnimplementedError("MethodMirror.owner unimplem
ented")); | |
417 } | |
418 get qualifiedName() { | |
419 return dart.throw(new core.UnimplementedError("MethodMirror.qualifiedName
unimplemented")); | |
420 } | |
421 get returnType() { | |
422 return dart.throw(new core.UnimplementedError("MethodMirror.returnType uni
mplemented")); | |
423 } | |
424 get simpleName() { | |
425 return dart.throw(new core.UnimplementedError("MethodMirror.simpleName uni
mplemented")); | |
426 } | |
427 get source() { | |
428 return dart.throw(new core.UnimplementedError("MethodMirror.source unimple
mented")); | |
429 } | |
430 } | |
431 JsMethodMirror[dart.implements] = () => [mirrors.MethodMirror]; | |
432 dart.defineNamedConstructor(JsMethodMirror, '_'); | |
433 dart.setSignature(JsMethodMirror, { | |
434 constructors: () => ({_: [JsMethodMirror, [JsClassMirror, dart.dynamic]]}), | |
435 methods: () => ({[_createParameterMirrorList]: [core.List$(mirrors.Parameter
Mirror), [dart.dynamic]]}) | |
436 }); | |
437 // Exports: | |
438 exports.getName = getName; | |
439 exports.getSymbol = getSymbol; | |
440 exports.reflect = reflect; | |
441 exports.reflectType = reflectType; | |
442 exports.JsInstanceMirror = JsInstanceMirror; | |
443 exports.JsClassMirror = JsClassMirror; | |
444 exports.JsTypeMirror = JsTypeMirror; | |
445 exports.JsParameterMirror = JsParameterMirror; | |
446 exports.JsMethodMirror = JsMethodMirror; | |
447 }); | |
OLD | NEW |