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"); |
} |