| 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 |