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

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: Created 5 years, 5 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 ea48d4fe6a8315ec254a8671a93bd806aa9e8369..ddfbfbccceb3881160cefaded0ea4250dcabb854 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;
@@ -49,6 +48,10 @@ class JsInstanceMirror implements InstanceMirror {
JsInstanceMirror._(this.reflectee);
+ ClassMirror get type => throw new UnimplementedError("ClassMirror.type unimplemented");
Jennifer Messerly 2015/07/24 16:28:28 long lines
vsm 2015/08/07 17:07:32 Done.
+ 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);
@@ -96,7 +99,7 @@ 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('List', '#[dart.metadata]', _cls);
Jennifer Messerly 2015/07/24 16:28:28 fwiw, we could fix our "type parser" for "JS" to u
vsm 2015/08/07 17:07:33 Up to you. We don't really use it so much I guess
_metadata = (fn == null)
? <InstanceMirror>[]
: new List<InstanceMirror>.from(fn().map((i) => new JsInstanceMirror._(i)));
@@ -115,20 +118,88 @@ class JsClassMirror implements ClassMirror {
var instance = JS('', '#.instantiate(#, #)', _dart, _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");
Jennifer Messerly 2015/07/24 16:28:28 here too
vsm 2015/08/07 17:07:33 Done.
+ 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");
+ TypeMirror 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;
Jennifer Messerly 2015/07/24 16:28:28 make this a getter? (less storage needed on the in
vsm 2015/08/07 17:07:33 Could be ... but won't a constant for long ... so
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 {
@@ -159,18 +230,44 @@ 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