Index: runtime/lib/mirrors_impl.dart |
=================================================================== |
--- runtime/lib/mirrors_impl.dart (revision 21575) |
+++ runtime/lib/mirrors_impl.dart (working copy) |
@@ -162,6 +162,24 @@ |
implements ObjectMirror { |
_LocalObjectMirrorImpl(ref) : super(ref) {} |
+ InstanceMirror invoke(Symbol memberName, |
+ List positionalArguments, |
+ [Map<Symbol, dynamic> namedArguments]) { |
+ if (namedArguments != null) { |
+ throw new UnimplementedError( |
+ 'named argument support is not implemented'); |
+ } |
+ return _invoke(this, _n(memberName), positionalArguments, false); |
+ } |
+ |
+ InstanceMirror getField(Symbol fieldName) { |
+ return _getField(this, _n(fieldName)); |
+ } |
+ |
+ InstanceMirror setField(Symbol fieldName, Object arg) { |
+ return _setField(this, _n(fieldName), arg, false); |
+ } |
+ |
Future<InstanceMirror> invokeAsync(Symbol memberName, |
List positionalArguments, |
[Map<Symbol, dynamic> namedArguments]) { |
@@ -177,7 +195,7 @@ |
Completer<InstanceMirror> completer = new Completer<InstanceMirror>(); |
try { |
completer.complete( |
- _invoke(this, _n(memberName), positionalArguments)); |
+ _invoke(this, _n(memberName), positionalArguments), true); |
} catch (exception, s) { |
completer.completeError(exception, s); |
} |
@@ -199,7 +217,7 @@ |
Completer<InstanceMirror> completer = new Completer<InstanceMirror>(); |
try { |
- completer.complete(_setField(this, _n(fieldName), arg)); |
+ completer.complete(_setField(this, _n(fieldName), arg, true)); |
} catch (exception, s) { |
completer.completeError(exception, s); |
} |
@@ -219,13 +237,13 @@ |
} |
} |
- static _invoke(ref, memberName, positionalArguments) |
+ static _invoke(ref, memberName, positionalArguments, async) |
native 'LocalObjectMirrorImpl_invoke'; |
- static _getField(ref, fieldName) |
+ static _getField(ref, fieldName) // same for sync and async versions |
native 'LocalObjectMirrorImpl_getField'; |
- static _setField(ref, fieldName, value) |
+ static _setField(ref, fieldName, value, async) |
native 'LocalObjectMirrorImpl_setField'; |
} |
@@ -325,6 +343,15 @@ |
'ClosureMirror.source is not implemented'); |
} |
+ InstanceMirror apply(List<Object> positionalArguments, |
+ [Map<Symbol, Object> namedArguments]) { |
+ if (namedArguments != null) { |
+ throw new UnimplementedError( |
+ 'named argument support is not implemented'); |
+ } |
+ return _apply(this, positionalArguments, false); |
+ } |
+ |
Future<InstanceMirror> applyAsync(List<Object> positionalArguments, |
[Map<Symbol, Object> namedArguments]) { |
if (namedArguments != null) { |
@@ -339,7 +366,7 @@ |
Completer<InstanceMirror> completer = new Completer<InstanceMirror>(); |
try { |
completer.complete( |
- _apply(this, positionalArguments)); |
+ _apply(this, positionalArguments, true)); |
} catch (exception) { |
completer.completeError(exception); |
} |
@@ -351,7 +378,7 @@ |
'ClosureMirror.findInContext() is not implemented'); |
} |
- static _apply(ref, positionalArguments) |
+ static _apply(ref, positionalArguments, async) |
native 'LocalClosureMirrorImpl_apply'; |
} |
@@ -522,6 +549,19 @@ |
String toString() => "ClassMirror on '$simpleName'"; |
+ InstanceMirror newInstance(Symbol constructorName, |
+ List positionalArguments, |
+ [Map<Symbol, dynamic> namedArguments]) { |
+ if (namedArguments != null) { |
+ throw new UnimplementedError( |
+ 'named argument support is not implemented'); |
+ } |
+ return _invokeConstructor(this, |
+ _n(constructorName), |
+ positionalArguments, |
+ false); |
+ } |
+ |
Future<InstanceMirror> newInstanceAsync(Symbol constructorName, |
List positionalArguments, |
[Map<Symbol, dynamic> namedArguments]) { |
@@ -537,14 +577,17 @@ |
Completer<InstanceMirror> completer = new Completer<InstanceMirror>(); |
try { |
completer.complete( |
- _invokeConstructor(this, _n(constructorName), positionalArguments)); |
+ _invokeConstructor(this, |
+ _n(constructorName), |
+ positionalArguments, |
+ true)); |
} catch (exception) { |
completer.completeError(exception); |
} |
return completer.future; |
} |
- static _invokeConstructor(ref, constructorName, positionalArguments) |
+ static _invokeConstructor(ref, constructorName, positionalArguments, async) |
native 'LocalClassMirrorImpl_invokeConstructor'; |
} |