OLD | NEW |
1 dart_library.library('dart/_js_mirrors', null, /* Imports */[ | 1 dart_library.library('dart/_js_mirrors', null, /* Imports */[ |
2 "dart_runtime/dart", | 2 "dart_runtime/dart", |
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) { |
11 return _internal.Symbol.getName(dart.as(symbol, _internal.Symbol)); | 11 return dart.dcall(_internal.Symbol.getName, dart.as(symbol, _internal.Symbol
)); |
12 } | 12 } |
13 dart.fn(getName, core.String, [core.Symbol]); | 13 dart.fn(getName, core.String, [core.Symbol]); |
14 function getSymbol(name, library) { | 14 function getSymbol(name, library) { |
15 return dart.throw(new core.UnimplementedError("MirrorSystem.getSymbol unimpl
emented")); | 15 return dart.throw(new core.UnimplementedError("MirrorSystem.getSymbol unimpl
emented")); |
16 } | 16 } |
17 dart.fn(getSymbol, core.Symbol, [dart.dynamic, dart.dynamic]); | 17 dart.fn(getSymbol, core.Symbol, [dart.dynamic, dart.dynamic]); |
18 dart.defineLazyProperties(exports, { | 18 dart.defineLazyProperties(exports, { |
19 get currentJsMirrorSystem() { | 19 get currentJsMirrorSystem() { |
20 return dart.throw(new core.UnimplementedError("MirrorSystem.currentJsMirro
rSystem unimplemented")); | 20 return dart.throw(new core.UnimplementedError("MirrorSystem.currentJsMirro
rSystem unimplemented")); |
21 } | 21 } |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 get type() { | 56 get type() { |
57 return dart.throw(new core.UnimplementedError("ClassMirror.type unimplemen
ted")); | 57 return dart.throw(new core.UnimplementedError("ClassMirror.type unimplemen
ted")); |
58 } | 58 } |
59 get hasReflectee() { | 59 get hasReflectee() { |
60 return dart.throw(new core.UnimplementedError("ClassMirror.hasReflectee un
implemented")); | 60 return dart.throw(new core.UnimplementedError("ClassMirror.hasReflectee un
implemented")); |
61 } | 61 } |
62 delegate(invocation) { | 62 delegate(invocation) { |
63 return dart.throw(new core.UnimplementedError("ClassMirror.delegate unimpl
emented")); | 63 return dart.throw(new core.UnimplementedError("ClassMirror.delegate unimpl
emented")); |
64 } | 64 } |
65 getField(symbol) { | 65 getField(symbol) { |
66 let name = getName(symbol); | 66 let name = dart.dcall(getName, symbol); |
67 let field = _dload(this.reflectee, name); | 67 let field = dart.dcall(_dload, this.reflectee, name); |
68 return new JsInstanceMirror._(field); | 68 return new JsInstanceMirror._(field); |
69 } | 69 } |
70 setField(symbol, value) { | 70 setField(symbol, value) { |
71 let name = getName(symbol); | 71 let name = dart.dcall(getName, symbol); |
72 _dput(this.reflectee, name, value); | 72 dart.dcall(_dput, this.reflectee, name, value); |
73 return new JsInstanceMirror._(value); | 73 return new JsInstanceMirror._(value); |
74 } | 74 } |
75 invoke(symbol, args, namedArgs) { | 75 invoke(symbol, args, namedArgs) { |
76 if (namedArgs === void 0) | 76 if (namedArgs === void 0) |
77 namedArgs = null; | 77 namedArgs = null; |
78 let name = getName(symbol); | 78 let name = dart.dcall(getName, symbol); |
79 if (namedArgs != null) { | 79 if (namedArgs != null) { |
80 args = core.List.from(args); | 80 args = core.List.from(args); |
81 args[dartx.add](this[_toJsMap](namedArgs)); | 81 dart.dcall(args[dartx.add], dart.dcall(this[_toJsMap], namedArgs)); |
82 } | 82 } |
83 let result = _dsend(this.reflectee, name, args); | 83 let result = dart.dcall(_dsend, this.reflectee, name, args); |
84 return new JsInstanceMirror._(result); | 84 return new JsInstanceMirror._(result); |
85 } | 85 } |
86 [_toJsMap](map) { | 86 [_toJsMap](map) { |
87 let obj = {}; | 87 let obj = {}; |
88 map.forEach(dart.fn((key, value) => { | 88 dart.dcall(map.forEach, dart.fn((key, value) => { |
89 obj[getName(key)] = value; | 89 obj[dart.dcall(getName, key)] = value; |
90 }, dart.dynamic, [core.Symbol, dart.dynamic])); | 90 }, dart.dynamic, [core.Symbol, dart.dynamic])); |
91 return obj; | 91 return obj; |
92 } | 92 } |
93 } | 93 } |
94 JsInstanceMirror[dart.implements] = () => [mirrors.InstanceMirror]; | 94 JsInstanceMirror[dart.implements] = () => [mirrors.InstanceMirror]; |
95 dart.defineNamedConstructor(JsInstanceMirror, '_'); | 95 dart.defineNamedConstructor(JsInstanceMirror, '_'); |
96 dart.setSignature(JsInstanceMirror, { | 96 dart.setSignature(JsInstanceMirror, { |
97 constructors: () => ({_: [JsInstanceMirror, [core.Object]]}), | 97 constructors: () => ({_: [JsInstanceMirror, [core.Object]]}), |
98 methods: () => ({ | 98 methods: () => ({ |
99 delegate: [dart.dynamic, [core.Invocation]], | 99 delegate: [dart.dynamic, [core.Invocation]], |
100 getField: [mirrors.InstanceMirror, [core.Symbol]], | 100 getField: [mirrors.InstanceMirror, [core.Symbol]], |
101 setField: [mirrors.InstanceMirror, [core.Symbol, core.Object]], | 101 setField: [mirrors.InstanceMirror, [core.Symbol, core.Object]], |
102 invoke: [mirrors.InstanceMirror, [core.Symbol, core.List], [core.Map$(core
.Symbol, dart.dynamic)]], | 102 invoke: [mirrors.InstanceMirror, [core.Symbol, core.List], [core.Map$(core
.Symbol, dart.dynamic)]], |
103 [_toJsMap]: [dart.dynamic, [core.Map$(core.Symbol, dart.dynamic)]] | 103 [_toJsMap]: [dart.dynamic, [core.Map$(core.Symbol, dart.dynamic)]] |
104 }) | 104 }) |
105 }); | 105 }); |
106 let _metadata = Symbol('_metadata'); | 106 let _metadata = Symbol('_metadata'); |
107 let _declarations = Symbol('_declarations'); | 107 let _declarations = Symbol('_declarations'); |
108 let _cls = Symbol('_cls'); | 108 let _cls = Symbol('_cls'); |
109 class JsClassMirror extends core.Object { | 109 class JsClassMirror extends core.Object { |
110 get metadata() { | 110 get metadata() { |
111 return this[_metadata]; | 111 return this[_metadata]; |
112 } | 112 } |
113 get declarations() { | 113 get declarations() { |
114 return this[_declarations]; | 114 return this[_declarations]; |
115 } | 115 } |
116 _(cls) { | 116 _(cls) { |
117 this[_cls] = cls; | 117 this[_cls] = cls; |
118 this.simpleName = core.Symbol.new(cls.name); | 118 this.simpleName = core.Symbol.new(dart.as(cls.name, core.String)); |
119 this[_metadata] = null; | 119 this[_metadata] = null; |
120 this[_declarations] = null; | 120 this[_declarations] = null; |
121 let fn = this[_cls][dart.metadata]; | 121 let fn = this[_cls][dart.metadata]; |
122 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)); | 122 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)); |
123 this[_declarations] = core.Map$(core.Symbol, mirrors.MethodMirror).new(); | 123 this[_declarations] = core.Map$(core.Symbol, mirrors.MethodMirror).new(); |
124 this[_declarations].set(this.simpleName, new JsMethodMirror._(this, this[_
cls])); | 124 this[_declarations].set(this.simpleName, new JsMethodMirror._(this, this[_
cls])); |
125 } | 125 } |
126 newInstance(constructorName, args, namedArgs) { | 126 newInstance(constructorName, args, namedArgs) { |
127 if (namedArgs === void 0) | 127 if (namedArgs === void 0) |
128 namedArgs = null; | 128 namedArgs = null; |
129 dart.assert(getName(constructorName) == ""); | 129 dart.assert(dart.dcall(getName, constructorName) == ""); |
130 dart.assert(namedArgs == null || dart.notNull(namedArgs.isEmpty)); | 130 dart.assert(namedArgs == null || dart.notNull(namedArgs.isEmpty)); |
131 let instance = new this[_cls](...args); | 131 let instance = new this[_cls](...args); |
132 return new JsInstanceMirror._(instance); | 132 return new JsInstanceMirror._(instance); |
133 } | 133 } |
134 get superinterfaces() { | 134 get superinterfaces() { |
135 let interfaces = this[_cls][dart.implements]; | 135 let interfaces = this[_cls][dart.implements]; |
136 if (interfaces == null) { | 136 if (interfaces == null) { |
137 return dart.list([], mirrors.ClassMirror); | 137 return dart.list([], mirrors.ClassMirror); |
138 } | 138 } |
139 dart.throw(new core.UnimplementedError("ClassMirror.superinterfaces unimpl
emented")); | 139 dart.throw(new core.UnimplementedError("ClassMirror.superinterfaces unimpl
emented")); |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 methods: () => ({ | 276 methods: () => ({ |
277 isAssignableTo: [core.bool, [mirrors.TypeMirror]], | 277 isAssignableTo: [core.bool, [mirrors.TypeMirror]], |
278 isSubtypeOf: [core.bool, [mirrors.TypeMirror]] | 278 isSubtypeOf: [core.bool, [mirrors.TypeMirror]] |
279 }) | 279 }) |
280 }); | 280 }); |
281 let _name = Symbol('_name'); | 281 let _name = Symbol('_name'); |
282 class JsParameterMirror extends core.Object { | 282 class JsParameterMirror extends core.Object { |
283 _(name, t, annotations) { | 283 _(name, t, annotations) { |
284 this[_name] = name; | 284 this[_name] = name; |
285 this.type = new JsTypeMirror._(t); | 285 this.type = new JsTypeMirror._(t); |
286 this.metadata = core.List$(mirrors.InstanceMirror).from(annotations[dartx.
map](dart.fn(a => new JsInstanceMirror._(a), JsInstanceMirror, [dart.dynamic])))
; | 286 this.metadata = core.List$(mirrors.InstanceMirror).from(dart.dcall(annotat
ions[dartx.map], dart.fn(a => new JsInstanceMirror._(a), JsInstanceMirror, [dart
.dynamic]))); |
287 } | 287 } |
288 get defaultValue() { | 288 get defaultValue() { |
289 return dart.throw(new core.UnimplementedError("ParameterMirror.defaultValu
es unimplemented")); | 289 return dart.throw(new core.UnimplementedError("ParameterMirror.defaultValu
es unimplemented")); |
290 } | 290 } |
291 get hasDefaultValue() { | 291 get hasDefaultValue() { |
292 return dart.throw(new core.UnimplementedError("ParameterMirror.hasDefaultV
alue unimplemented")); | 292 return dart.throw(new core.UnimplementedError("ParameterMirror.hasDefaultV
alue unimplemented")); |
293 } | 293 } |
294 get isConst() { | 294 get isConst() { |
295 return dart.throw(new core.UnimplementedError("ParameterMirror.isConst uni
mplemented")); | 295 return dart.throw(new core.UnimplementedError("ParameterMirror.isConst uni
mplemented")); |
296 } | 296 } |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
329 dart.defineNamedConstructor(JsParameterMirror, '_'); | 329 dart.defineNamedConstructor(JsParameterMirror, '_'); |
330 dart.setSignature(JsParameterMirror, { | 330 dart.setSignature(JsParameterMirror, { |
331 constructors: () => ({_: [JsParameterMirror, [core.String, core.Type, core.L
ist]]}) | 331 constructors: () => ({_: [JsParameterMirror, [core.String, core.Type, core.L
ist]]}) |
332 }); | 332 }); |
333 let _method = Symbol('_method'); | 333 let _method = Symbol('_method'); |
334 let _params = Symbol('_params'); | 334 let _params = Symbol('_params'); |
335 let _createParameterMirrorList = Symbol('_createParameterMirrorList'); | 335 let _createParameterMirrorList = Symbol('_createParameterMirrorList'); |
336 class JsMethodMirror extends core.Object { | 336 class JsMethodMirror extends core.Object { |
337 _(cls, method) { | 337 _(cls, method) { |
338 this[_method] = method; | 338 this[_method] = method; |
339 this[_name] = getName(cls.simpleName); | 339 this[_name] = dart.dcall(getName, cls.simpleName); |
340 this[_params] = null; | 340 this[_params] = null; |
341 let ftype = exports._dart.classGetConstructorType(cls[_cls]); | 341 let ftype = exports._dart.classGetConstructorType(cls[_cls]); |
342 this[_params] = this[_createParameterMirrorList](ftype); | 342 this[_params] = dart.dcall(this[_createParameterMirrorList], ftype); |
343 } | 343 } |
344 get constructorName() { | 344 get constructorName() { |
345 return core.Symbol.new(''); | 345 return core.Symbol.new(''); |
346 } | 346 } |
347 get parameters() { | 347 get parameters() { |
348 return this[_params]; | 348 return this[_params]; |
349 } | 349 } |
350 [_createParameterMirrorList](ftype) { | 350 [_createParameterMirrorList](ftype) { |
351 if (ftype == null) { | 351 if (ftype == null) { |
352 return dart.list([], mirrors.ParameterMirror); | 352 return dart.list([], mirrors.ParameterMirror); |
353 } | 353 } |
354 let args = dart.as(dart.dload(ftype, 'args'), core.List); | 354 let args = dart.as(dart.dload(ftype, 'args'), core.List); |
355 let opts = dart.as(dart.dload(ftype, 'optionals'), core.List); | 355 let opts = dart.as(dart.dload(ftype, 'optionals'), core.List); |
356 let params = core.List$(mirrors.ParameterMirror).new(dart.notNull(args[dar
tx.length]) + dart.notNull(opts[dartx.length])); | 356 let params = core.List$(mirrors.ParameterMirror).new(dart.notNull(args[dar
tx.length]) + dart.notNull(opts[dartx.length])); |
357 for (let i = 0; dart.notNull(i) < dart.notNull(args[dartx.length]); i = da
rt.notNull(i) + 1) { | 357 for (let i = 0; dart.notNull(dart.as(dart.dsend(i, '<', args[dartx.length]
), core.bool)); i = dart.dsend(i, '+', 1)) { |
358 let type = args[dartx.get](i); | 358 let type = args[dartx.get](dart.as(i, core.int)); |
359 let metadata = dart.dindex(dart.dload(ftype, 'metadata'), i); | 359 let metadata = dart.dindex(dart.dload(ftype, 'metadata'), i); |
360 let param = new JsParameterMirror._('', dart.as(type, core.Type), dart.a
s(metadata, core.List)); | 360 let param = new JsParameterMirror._('', dart.as(type, core.Type), dart.a
s(metadata, core.List)); |
361 params[dartx.set](i, param); | 361 dart.dsetindex(params, i, param); |
362 } | 362 } |
363 for (let i = 0; dart.notNull(i) < dart.notNull(opts[dartx.length]); i = da
rt.notNull(i) + 1) { | 363 for (let i = 0; dart.notNull(dart.as(dart.dsend(i, '<', opts[dartx.length]
), core.bool)); i = dart.dsend(i, '+', 1)) { |
364 let type = opts[dartx.get](i); | 364 let type = opts[dartx.get](dart.as(i, core.int)); |
365 let metadata = dart.dindex(dart.dload(ftype, 'metadata'), dart.notNull(a
rgs[dartx.length]) + dart.notNull(i)); | 365 let metadata = dart.dindex(dart.dload(ftype, 'metadata'), dart.notNull(a
rgs[dartx.length]) + dart.notNull(dart.as(i, core.num))); |
366 let param = new JsParameterMirror._('', dart.as(type, core.Type), dart.a
s(metadata, core.List)); | 366 let param = new JsParameterMirror._('', dart.as(type, core.Type), dart.a
s(metadata, core.List)); |
367 params[dartx.set](dart.notNull(i) + dart.notNull(args[dartx.length]), pa
ram); | 367 dart.dsetindex(params, dart.dsend(i, '+', args[dartx.length]), param); |
368 } | 368 } |
369 return params; | 369 return dart.as(params, core.List$(mirrors.ParameterMirror)); |
370 } | 370 } |
371 get isAbstract() { | 371 get isAbstract() { |
372 return dart.throw(new core.UnimplementedError("MethodMirror.isAbstract uni
mplemented")); | 372 return dart.throw(new core.UnimplementedError("MethodMirror.isAbstract uni
mplemented")); |
373 } | 373 } |
374 get isConstConstructor() { | 374 get isConstConstructor() { |
375 return dart.throw(new core.UnimplementedError("MethodMirror.isConstConstru
ctor unimplemented")); | 375 return dart.throw(new core.UnimplementedError("MethodMirror.isConstConstru
ctor unimplemented")); |
376 } | 376 } |
377 get isConstructor() { | 377 get isConstructor() { |
378 return dart.throw(new core.UnimplementedError("MethodMirror.isConstructor
unimplemented")); | 378 return dart.throw(new core.UnimplementedError("MethodMirror.isConstructor
unimplemented")); |
379 } | 379 } |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
442 exports.getName = getName; | 442 exports.getName = getName; |
443 exports.getSymbol = getSymbol; | 443 exports.getSymbol = getSymbol; |
444 exports.reflect = reflect; | 444 exports.reflect = reflect; |
445 exports.reflectType = reflectType; | 445 exports.reflectType = reflectType; |
446 exports.JsInstanceMirror = JsInstanceMirror; | 446 exports.JsInstanceMirror = JsInstanceMirror; |
447 exports.JsClassMirror = JsClassMirror; | 447 exports.JsClassMirror = JsClassMirror; |
448 exports.JsTypeMirror = JsTypeMirror; | 448 exports.JsTypeMirror = JsTypeMirror; |
449 exports.JsParameterMirror = JsParameterMirror; | 449 exports.JsParameterMirror = JsParameterMirror; |
450 exports.JsMethodMirror = JsMethodMirror; | 450 exports.JsMethodMirror = JsMethodMirror; |
451 }); | 451 }); |
OLD | NEW |