Chromium Code Reviews| 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"); |
| + |
| } |