Index: runtime/lib/mirrors_impl.dart |
=================================================================== |
--- runtime/lib/mirrors_impl.dart (revision 21243) |
+++ runtime/lib/mirrors_impl.dart (working copy) |
@@ -139,6 +139,26 @@ |
abstract class _LocalObjectMirrorImpl extends _LocalVMObjectMirrorImpl |
implements ObjectMirror { |
_LocalObjectMirrorImpl(ref) : super(ref) {} |
+ |
+InstanceMirror invoke(String memberName, |
+ List positionalArguments, |
+ [Map<String,dynamic> namedArguments]) { |
+ if (namedArguments != null) { |
+ throw new UnimplementedError( |
+ 'named argument support is not implemented'); |
+ } |
+ return _invoke(this, memberName, positionalArguments); // needs to be distinct for sync calls |
+ } |
+ |
+ InstanceMirror getField(String fieldName) { |
+ return _getField(this, fieldName); // needs to be distinct for sync calls |
+ } |
+ |
+ InstanceMirror setField(String fieldName, Object arg) { |
+ return _setField(this, fieldName, arg); // needs to be distinct for sync calls |
+ } |
+ |
+ |
Future<InstanceMirror> invokeAsync(String memberName, |
List positionalArguments, |
@@ -155,7 +175,7 @@ |
Completer<InstanceMirror> completer = new Completer<InstanceMirror>(); |
try { |
completer.complete( |
- _invoke(this, memberName, positionalArguments)); |
+ _invokeAsync(this, memberName, positionalArguments)); |
} catch (exception, s) { |
completer.completeError(exception, s); |
} |
@@ -177,7 +197,7 @@ |
Completer<InstanceMirror> completer = new Completer<InstanceMirror>(); |
try { |
- completer.complete(_setField(this, fieldName, arg)); |
+ completer.complete(_setFieldAsync(this, fieldName, arg)); |
} catch (exception, s) { |
completer.completeError(exception, s); |
} |
@@ -200,11 +220,17 @@ |
static _invoke(ref, memberName, positionalArguments) |
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) |
native 'LocalObjectMirrorImpl_setField'; |
+ |
+ static _invokeAsync(ref, memberName, positionalArguments) |
+ native 'LocalObjectMirrorImpl_invokeAsync'; |
+ |
+ static _setFieldAsync(ref, fieldName, value) |
+ native 'LocalObjectMirrorImpl_setFieldAsync'; |
} |
// Prints a string as it might appear in dart program text. |
@@ -303,6 +329,15 @@ |
'ClosureMirror.source is not implemented'); |
} |
+ InstanceMirror apply(List<Object> positionalArguments, |
+ [Map<String,Object> namedArguments]) { |
+ if (namedArguments != null) { |
+ throw new UnimplementedError( |
+ 'named argument support is not implemented'); |
+ } |
+ return _apply(this, positionalArguments); |
+ } |
+ |
Future<InstanceMirror> applyAsync(List<Object> positionalArguments, |
[Map<String,Object> namedArguments]) { |
if (namedArguments != null) { |
@@ -317,7 +352,7 @@ |
Completer<InstanceMirror> completer = new Completer<InstanceMirror>(); |
try { |
completer.complete( |
- _apply(this, positionalArguments)); |
+ _applyAsync(this, positionalArguments)); |
} catch (exception) { |
completer.completeError(exception); |
} |
@@ -331,6 +366,9 @@ |
static _apply(ref, positionalArguments) |
native 'LocalClosureMirrorImpl_apply'; |
+ |
+ static _applyAsync(ref, positionalArguments) |
+ native 'LocalClosureMirrorImpl_applyAsync'; |
} |
class _LazyTypeMirror { |
@@ -499,6 +537,25 @@ |
String toString() => "ClassMirror on '$simpleName'"; |
+ InstanceMirror apply(List<Object> positionalArguments, |
+ [Map<String,Object> namedArguments]) { |
+ if (namedArguments != null) { |
+ throw new UnimplementedError( |
+ 'named argument support is not implemented'); |
+ } |
+ return _apply(this, positionalArguments); |
+ } |
+ |
+ InstanceMirror newInstance(String constructorName, |
+ List positionalArguments, |
+ [Map<String,dynamic> namedArguments]) { |
+ if (namedArguments != null) { |
+ throw new UnimplementedError( |
+ 'named argument support is not implemented'); |
+ } |
+ return _invokeConstructor(this, constructorName, positionalArguments); |
+ } |
+ |
Future<InstanceMirror> newInstanceAsync(String constructorName, |
List positionalArguments, |
[Map<String,dynamic> namedArguments]) { |
@@ -514,7 +571,7 @@ |
Completer<InstanceMirror> completer = new Completer<InstanceMirror>(); |
try { |
completer.complete( |
- _invokeConstructor(this, constructorName, positionalArguments)); |
+ _invokeConstructorAsync(this, constructorName, positionalArguments)); |
} catch (exception) { |
completer.completeError(exception); |
} |
@@ -523,6 +580,9 @@ |
static _invokeConstructor(ref, constructorName, positionalArguments) |
native 'LocalClassMirrorImpl_invokeConstructor'; |
+ |
+ static _invokeConstructorAsync(ref, constructorName, positionalArguments) |
+ native 'LocalClassMirrorImpl_invokeConstructorAsync'; |
} |
class _LazyFunctionTypeMirror { |