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

Unified Diff: tool/input_sdk/private/js_mirrors.dart

Issue 1252953003: Implement more of dart:mirrors (Closed) Base URL: https://github.com/dart-lang/dev_compiler.git@master
Patch Set: Address comments Created 5 years, 4 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:
View side-by-side diff with in-line comments
Download patch
Index: tool/input_sdk/private/js_mirrors.dart
diff --git a/tool/input_sdk/private/js_mirrors.dart b/tool/input_sdk/private/js_mirrors.dart
index cc50f43c0a7e11162ce905ae0de8a186d4fb3586..71c108fc607814e3544de927e2fa671ab5dd7d19 100644
--- a/tool/input_sdk/private/js_mirrors.dart
+++ b/tool/input_sdk/private/js_mirrors.dart
@@ -4,7 +4,6 @@
library dart._js_mirrors;
-import 'dart:collection';
import 'dart:mirrors';
import 'dart:_foreign_helper' show JS;
import 'dart:_internal' as _internal;
@@ -45,6 +44,13 @@ class JsInstanceMirror implements InstanceMirror {
JsInstanceMirror._(this.reflectee);
+ ClassMirror get type =>
+ throw new UnimplementedError("ClassMirror.type unimplemented");
+ bool get hasReflectee =>
+ throw new UnimplementedError("ClassMirror.hasReflectee unimplemented");
+ delegate(Invocation invocation) =>
+ throw new UnimplementedError("ClassMirror.delegate unimplemented");
+
InstanceMirror getField(Symbol symbol) {
var name = getName(symbol);
var field = _dload(reflectee, name);
@@ -53,8 +59,8 @@ class JsInstanceMirror implements InstanceMirror {
InstanceMirror setField(Symbol symbol, Object value) {
var name = getName(symbol);
- var field = _dput(reflectee, name, value);
- return new JsInstanceMirror._(field);
+ _dput(reflectee, name, value);
+ return new JsInstanceMirror._(value);
}
InstanceMirror invoke(Symbol symbol, List<dynamic> args,
@@ -92,10 +98,11 @@ class JsClassMirror implements ClassMirror {
: _cls = cls,
simpleName = new Symbol(JS('String', '#.name', cls)) {
// Load metadata.
- var fn = JS('List<InstanceMirror>', '#[dart.metadata]', _cls);
+ var fn = JS('Function', '#[dart.metadata]', _cls);
_metadata = (fn == null)
? <InstanceMirror>[]
- : new List<InstanceMirror>.from(fn().map((i) => new JsInstanceMirror._(i)));
+ : new List<InstanceMirror>.from(
+ fn().map((i) => new JsInstanceMirror._(i)));
// Load declarations.
// TODO(vsm): This is only populating the default constructor right now.
@@ -111,20 +118,139 @@ class JsClassMirror implements ClassMirror {
var instance = JS('', 'new #(...#)', _cls, args);
return new JsInstanceMirror._(instance);
}
+
+ List<ClassMirror> get superinterfaces {
+ var interfaces = JS('Function', '#[dart.implements]', _cls);
+ if (interfaces == null) {
+ return [];
+ }
+ throw new UnimplementedError("ClassMirror.superinterfaces unimplemented");
+ }
+
+ // TODO(vsm): Implement
+ InstanceMirror getField(Symbol fieldName) =>
+ throw new UnimplementedError("ClassMirror.getField unimplemented");
+ InstanceMirror invoke(Symbol memberName, List positionalArguments,
+ [Map<Symbol, dynamic> namedArguments]) =>
+ throw new UnimplementedError("ClassMirror.invoke unimplemented");
+ bool isAssignableTo(TypeMirror other) =>
+ throw new UnimplementedError("ClassMirror.isAssignable unimplemented");
+ bool isSubclassOf(ClassMirror other) =>
+ throw new UnimplementedError("ClassMirror.isSubclassOf unimplemented");
+ bool isSubtypeOf(TypeMirror other) =>
+ throw new UnimplementedError("ClassMirror.isSubtypeOf unimplemented");
+ InstanceMirror setField(Symbol fieldName, Object value) =>
+ throw new UnimplementedError("ClassMirror.setField unimplemented");
+ bool get hasReflectedType => throw new UnimplementedError(
+ "ClassMirror.hasReflectedType unimplemented");
+ Map<Symbol, MethodMirror> get instanceMembers =>
+ throw new UnimplementedError("ClassMirror.instanceMembers unimplemented");
+ bool get isAbstract =>
+ throw new UnimplementedError("ClassMirror.isAbstract unimplemented");
+ bool get isEnum =>
+ throw new UnimplementedError("ClassMirror.isEnum unimplemented");
+ bool get isOriginalDeclaration => throw new UnimplementedError(
+ "ClassMirror.isOriginalDeclaration unimplemented");
+ bool get isPrivate =>
+ throw new UnimplementedError("ClassMirror.isPrivate unimplemented");
+ bool get isTopLevel =>
+ throw new UnimplementedError("ClassMirror.isTopLevel unimplemented");
+ SourceLocation get location =>
+ throw new UnimplementedError("ClassMirror.location unimplemented");
+ ClassMirror get mixin =>
+ throw new UnimplementedError("ClassMirror.mixin unimplemented");
+ TypeMirror get originalDeclaration => throw new UnimplementedError(
+ "ClassMirror.originalDeclaration unimplemented");
+ DeclarationMirror get owner =>
+ throw new UnimplementedError("ClassMirror.owner unimplemented");
+ Symbol get qualifiedName =>
+ throw new UnimplementedError("ClassMirror.qualifiedName unimplemented");
+ Type get reflectedType =>
+ throw new UnimplementedError("ClassMirror.reflectedType unimplemented");
+ Map<Symbol, MethodMirror> get staticMembers =>
+ throw new UnimplementedError("ClassMirror.staticMembers unimplemented");
+ ClassMirror get superclass =>
+ throw new UnimplementedError("ClassMirror.superclass unimplemented");
+ List<TypeMirror> get typeArguments =>
+ throw new UnimplementedError("ClassMirror.typeArguments unimplemented");
+ List<TypeVariableMirror> get typeVariables =>
+ throw new UnimplementedError("ClassMirror.typeVariables unimplemented");
}
class JsTypeMirror implements TypeMirror {
+ // TODO(vsm): Support original declarations, etc., where there is no actual
+ // reflected type.
final Type reflectedType;
+ final bool hasReflectedType = true;
JsTypeMirror._(this.reflectedType);
+
+ // TODO(vsm): Implement
+ bool isAssignableTo(TypeMirror other) =>
+ throw new UnimplementedError("TypeMirror.isAssignable unimplemented");
+ bool isSubtypeOf(TypeMirror other) =>
+ throw new UnimplementedError("TypeMirror.isSubtypeOf unimplemented");
+ bool get isOriginalDeclaration => throw new UnimplementedError(
+ "TypeMirror.isOriginalDeclaration unimplemented");
+ bool get isPrivate =>
+ throw new UnimplementedError("TypeMirror.isPrivate unimplemented");
+ bool get isTopLevel =>
+ throw new UnimplementedError("TypeMirror.isTopLevel unimplemented");
+ SourceLocation get location =>
+ throw new UnimplementedError("TypeMirror.location unimplemented");
+ List<InstanceMirror> get metadata =>
+ throw new UnimplementedError("TypeMirror.metadata unimplemented");
+ TypeMirror get originalDeclaration => throw new UnimplementedError(
+ "TypeMirror.originalDeclaration unimplemented");
+ DeclarationMirror get owner =>
+ throw new UnimplementedError("TypeMirror.owner unimplemented");
+ Symbol get qualifiedName =>
+ throw new UnimplementedError("TypeMirror.qualifiedName unimplemented");
+ Symbol get simpleName =>
+ throw new UnimplementedError("TypeMirror.simpleName unimplemented");
+ List<TypeMirror> get typeArguments =>
+ throw new UnimplementedError("TypeMirror.typeArguments unimplemented");
+ List<TypeVariableMirror> get typeVariables =>
+ throw new UnimplementedError("TypeMirror.typeVariables unimplemented");
}
class JsParameterMirror implements ParameterMirror {
final String _name;
final TypeMirror type;
- final List<InstanceMirror> metadata = [];
-
- JsParameterMirror._(this._name, Type t) : type = new JsTypeMirror._(t);
+ final List<InstanceMirror> metadata;
+
+ JsParameterMirror._(this._name, Type t, List annotations)
+ : type = new JsTypeMirror._(t),
+ metadata = new List<InstanceMirror>.from(
+ annotations.map((a) => new JsInstanceMirror._(a)));
+
+ // TODO(vsm): Implement
+ InstanceMirror get defaultValue => throw new UnimplementedError(
+ "ParameterMirror.defaultValues unimplemented");
+ bool get hasDefaultValue => throw new UnimplementedError(
+ "ParameterMirror.hasDefaultValue unimplemented");
+ bool get isConst =>
+ throw new UnimplementedError("ParameterMirror.isConst unimplemented");
+ bool get isFinal =>
+ throw new UnimplementedError("ParameterMirror.isFinal unimplemented");
+ bool get isNamed =>
+ throw new UnimplementedError("ParameterMirror.isNamed unimplemented");
+ bool get isOptional =>
+ throw new UnimplementedError("ParameterMirror.isOptional unimplemented");
+ bool get isPrivate =>
+ throw new UnimplementedError("ParameterMirror.isPrivate unimplemented");
+ bool get isStatic =>
+ throw new UnimplementedError("ParameterMirror.isStatic unimplemented");
+ bool get isTopLevel =>
+ throw new UnimplementedError("ParameterMirror.isTopLevel unimplemented");
+ SourceLocation get location =>
+ throw new UnimplementedError("ParameterMirror.location unimplemented");
+ DeclarationMirror get owner =>
+ throw new UnimplementedError("ParameterMirror.owner unimplemented");
+ Symbol get qualifiedName => throw new UnimplementedError(
+ "ParameterMirror.qualifiedName unimplemented");
+ Symbol get simpleName =>
+ throw new UnimplementedError("ParameterMirror.simpleName unimplemented");
}
class JsMethodMirror implements MethodMirror {
@@ -155,18 +281,64 @@ class JsMethodMirror implements MethodMirror {
for (var i = 0; i < args.length; ++i) {
var type = args[i];
+ var metadata = ftype.metadata[i];
// TODO(vsm): Recover the param name.
- var param = new JsParameterMirror._('', type);
+ var param = new JsParameterMirror._('', type, metadata);
params[i] = param;
}
for (var i = 0; i < opts.length; ++i) {
var type = opts[i];
+ var metadata = ftype.metadata[args.length + i];
// TODO(vsm): Recover the param name.
- var param = new JsParameterMirror._('', type);
+ var param = new JsParameterMirror._('', type, metadata);
params[i + args.length] = param;
}
return params;
}
+
+ // TODO(vsm): Implement
+ bool get isAbstract =>
+ throw new UnimplementedError("MethodMirror.isAbstract unimplemented");
+ bool get isConstConstructor => throw new UnimplementedError(
+ "MethodMirror.isConstConstructor unimplemented");
+ bool get isConstructor =>
+ throw new UnimplementedError("MethodMirror.isConstructor unimplemented");
+ bool get isFactoryConstructor => throw new UnimplementedError(
+ "MethodMirror.isFactoryConstructor unimplemented");
+ bool get isGenerativeConstructor => throw new UnimplementedError(
+ "MethodMirror.isGenerativeConstructor unimplemented");
+ bool get isGetter =>
+ throw new UnimplementedError("MethodMirror.isGetter unimplemented");
+ bool get isOperator =>
+ throw new UnimplementedError("MethodMirror.isOperator unimplemented");
+ bool get isPrivate =>
+ throw new UnimplementedError("MethodMirror.isPrivate unimplemented");
+ bool get isRedirectingConstructor => throw new UnimplementedError(
+ "MethodMirror.isRedirectingConstructor unimplemented");
+ bool get isRegularMethod => throw new UnimplementedError(
+ "MethodMirror.isRegularMethod unimplemented");
+ bool get isSetter =>
+ throw new UnimplementedError("MethodMirror.isSetter unimplemented");
+ bool get isStatic =>
+ throw new UnimplementedError("MethodMirror.isStatic unimplemented");
+ bool get isSynthetic =>
+ throw new UnimplementedError("MethodMirror.isSynthetic unimplemented");
+ bool get isTopLevel =>
+ throw new UnimplementedError("MethodMirror.isTopLevel unimplemented");
+ SourceLocation get location =>
+ throw new UnimplementedError("MethodMirror.location unimplemented");
+ List<InstanceMirror> get metadata =>
+ throw new UnimplementedError("MethodMirror.metadata unimplemented");
+ DeclarationMirror get owner =>
+ throw new UnimplementedError("MethodMirror.owner unimplemented");
+ Symbol get qualifiedName =>
+ throw new UnimplementedError("MethodMirror.qualifiedName unimplemented");
+ TypeMirror get returnType =>
+ throw new UnimplementedError("MethodMirror.returnType unimplemented");
+ Symbol get simpleName =>
+ throw new UnimplementedError("MethodMirror.simpleName unimplemented");
+ String get source =>
+ throw new UnimplementedError("MethodMirror.source unimplemented");
}

Powered by Google App Engine
This is Rietveld 408576698