Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(971)

Unified Diff: lib/runtime/dart_sdk.js

Issue 1989593002: Wrap and unwrap types in dart:mirrors (Closed) Base URL: https://github.com/dart-lang/dev_compiler.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
Download patch
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;
« no previous file with comments | « no previous file | tool/input_sdk/private/ddc_runtime/types.dart » ('j') | tool/input_sdk/private/ddc_runtime/types.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698