| Index: lib/runtime/dart_sdk.js
|
| diff --git a/lib/runtime/dart_sdk.js b/lib/runtime/dart_sdk.js
|
| index e0f14b7390aa17a347d0820f79d1fb536db5a7f2..0282a9fcdbd88b07158db603f7ba8ee2019fd890 100644
|
| --- a/lib/runtime/dart_sdk.js
|
| +++ b/lib/runtime/dart_sdk.js
|
| @@ -1210,9 +1210,13 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| toString() {
|
| return dart.as(dart.typeName(this[_runtimeType]), core.String);
|
| }
|
| + unwrapped() {
|
| + return this[_runtimeType];
|
| + }
|
| };
|
| dart.setSignature(dart.WrappedType, {
|
| - constructors: () => ({WrappedType: [dart.WrappedType, [dart.dynamic]]})
|
| + constructors: () => ({WrappedType: [dart.WrappedType, [dart.dynamic]]}),
|
| + methods: () => ({unwrapped: [dart.dynamic, []]})
|
| });
|
| dart.AbstractFunctionType = class AbstractFunctionType extends dart.TypeRep {
|
| constructor() {
|
| @@ -1352,7 +1356,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| for (var i = 0; i < array.length; ++i) {
|
| var arg = array[i];
|
| if (arg instanceof Array) {
|
| - metadata.push(arg[1]);
|
| + metadata.push(arg.slice(1));
|
| result.push(arg[0]);
|
| } else {
|
| metadata.push([]);
|
| @@ -10958,6 +10962,14 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| return _js_mirrors._dart.dsend(obj, name, ...args);
|
| };
|
| dart.lazyFn(_js_mirrors._dsend, () => [dart.dynamic, [dart.dynamic, core.String, core.List]]);
|
| + _js_mirrors._unwrap = function(obj) {
|
| + return obj.unwrapped();
|
| + };
|
| + dart.fn(_js_mirrors._unwrap);
|
| + _js_mirrors._wrap = function(obj) {
|
| + return _js_mirrors._dart.wrapType(obj);
|
| + };
|
| + dart.fn(_js_mirrors._wrap);
|
| const _toJsMap = Symbol('_toJsMap');
|
| _js_mirrors.JsInstanceMirror = class JsInstanceMirror extends core.Object {
|
| _(reflectee) {
|
| @@ -11024,10 +11036,10 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| }
|
| _(cls) {
|
| this[_cls] = cls;
|
| - this.simpleName = core.Symbol.new(cls.name);
|
| + this.simpleName = core.Symbol.new(_js_mirrors._unwrap(cls).name);
|
| this[_metadata$] = null;
|
| this[_declarations] = null;
|
| - let fn = this[_cls][dart.metadata];
|
| + let fn = _js_mirrors._unwrap(this[_cls])[dart.metadata];
|
| this[_metadata$] = fn == null ? dart.list([], mirrors.InstanceMirror) : core.List$(mirrors.InstanceMirror).from(dart.as(dart.dsend(dart.dcall(fn), 'map', dart.fn(i => new _js_mirrors.JsInstanceMirror._(i), _js_mirrors.JsInstanceMirror, [dart.dynamic])), core.Iterable));
|
| this[_declarations] = core.Map$(core.Symbol, mirrors.MethodMirror).new();
|
| this[_declarations][dartx.set](this.simpleName, new _js_mirrors.JsMethodMirror._(this, this[_cls]));
|
| @@ -11036,11 +11048,11 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| if (namedArgs === void 0) namedArgs = null;
|
| dart.assert(_js_mirrors.getName(constructorName) == "");
|
| dart.assert(namedArgs == null || dart.notNull(namedArgs[dartx.isEmpty]));
|
| - let instance = new this[_cls](...args);
|
| + let instance = new (_js_mirrors._unwrap(this[_cls]))(...args);
|
| return new _js_mirrors.JsInstanceMirror._(instance);
|
| }
|
| get superinterfaces() {
|
| - let interfaceThunk = this[_cls][dart.implements];
|
| + let interfaceThunk = _js_mirrors._unwrap(this[_cls])[dart.implements];
|
| if (interfaceThunk == null) {
|
| return dart.list([], mirrors.ClassMirror);
|
| } else {
|
| @@ -11113,7 +11125,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| if (dart.equals(this[_cls], dart.wrapType(core.Object))) {
|
| return null;
|
| } else {
|
| - return new _js_mirrors.JsClassMirror._(this[_cls].__proto__);
|
| + return new _js_mirrors.JsClassMirror._(dart.as(_js_mirrors._wrap(_js_mirrors._unwrap(this[_cls]).__proto__), core.Type));
|
| }
|
| }
|
| get typeArguments() {
|
| @@ -11251,7 +11263,7 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| this[_method$] = method;
|
| this[_name$] = _js_mirrors.getName(cls.simpleName);
|
| this[_params] = null;
|
| - let ftype = _js_mirrors._dart.classGetConstructorType(cls[_cls]);
|
| + let ftype = _js_mirrors._dart.classGetConstructorType(_js_mirrors._unwrap(cls[_cls]));
|
| this[_params] = this[_createParameterMirrorList](ftype);
|
| }
|
| get constructorName() {
|
| @@ -11270,13 +11282,13 @@ dart_library.library('dart_sdk', null, /* Imports */[
|
| 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._('', dart.as(type, core.Type), dart.as(metadata, core.List));
|
| + let param = new _js_mirrors.JsParameterMirror._('', dart.as(_js_mirrors._wrap(type), core.Type), dart.as(metadata, core.List));
|
| 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._('', dart.as(type, core.Type), dart.as(metadata, core.List));
|
| + let param = new _js_mirrors.JsParameterMirror._('', dart.as(_js_mirrors._wrap(type), core.Type), dart.as(metadata, core.List));
|
| params[dartx.set](i + dart.notNull(args[dartx.length]), param);
|
| }
|
| return params;
|
|
|