Преглед на файлове

Reflect.callMethod should accept Function only.

Andy Li преди 11 години
родител
ревизия
6cb1e40b41

+ 1 - 1
std/Reflect.hx

@@ -89,7 +89,7 @@ extern class Reflect {
 	/**
 	/**
 		Call a method with the given object and arguments.
 		Call a method with the given object and arguments.
 	**/
 	**/
-	public static function callMethod( o : Dynamic, func : Dynamic, args : Array<Dynamic> ) : Dynamic;
+	public static function callMethod( o : Dynamic, func : haxe.Constraints.Function, args : Array<Dynamic> ) : Dynamic;
 
 
 	/**
 	/**
 		Returns the fields of structure `o`.
 		Returns the fields of structure `o`.

+ 1 - 1
std/cpp/_std/Reflect.hx

@@ -43,7 +43,7 @@
 			o.__SetField(field,value,true);
 			o.__SetField(field,value,true);
 	}
 	}
 
 
-	public static function callMethod( o : Dynamic, func : Dynamic, args : Array<Dynamic> ) : Dynamic untyped {
+	public static function callMethod( o : Dynamic, func : haxe.Constraints.Function, args : Array<Dynamic> ) : Dynamic untyped {
 			if (func!=null && func.__GetType()==__global__.vtString)
 			if (func!=null && func.__GetType()==__global__.vtString)
 				func = o.__Field(func,true);
 				func = o.__Field(func,true);
 			untyped func.__SetThis(o);
 			untyped func.__SetThis(o);

+ 1 - 1
std/cs/_std/Reflect.hx

@@ -110,7 +110,7 @@ import cs.internal.Function;
 	@:functionCode('
 	@:functionCode('
 		return ((haxe.lang.Function) func).__hx_invokeDynamic(args);
 		return ((haxe.lang.Function) func).__hx_invokeDynamic(args);
 	')
 	')
-	public static function callMethod( o : Dynamic, func : Dynamic, args : Array<Dynamic> ) : Dynamic
+	public static function callMethod( o : Dynamic, func : haxe.Constraints.Function, args : Array<Dynamic> ) : Dynamic
 	{
 	{
 		return null;
 		return null;
 	}
 	}

+ 1 - 1
std/flash/_std/Reflect.hx

@@ -52,7 +52,7 @@
 		}
 		}
 	}
 	}
 
 
-	public inline static function callMethod( o : Dynamic, func : Dynamic, args : Array<Dynamic> ) : Dynamic untyped {
+	public inline static function callMethod( o : Dynamic, func : haxe.Constraints.Function, args : Array<Dynamic> ) : Dynamic untyped {
 		return func.apply(o,args);
 		return func.apply(o,args);
 	}
 	}
 
 

+ 1 - 1
std/flash/_std/Type.hx

@@ -162,7 +162,7 @@ enum ValueType {
 	}
 	}
 
 
 	public static function createEnum<T>( e : Enum<T>, constr : String, ?params : Array<Dynamic> ) : T {
 	public static function createEnum<T>( e : Enum<T>, constr : String, ?params : Array<Dynamic> ) : T {
-		var f = untyped e[constr];
+		var f:Dynamic = untyped e[constr];
 		if( f == null ) throw "No such constructor "+constr;
 		if( f == null ) throw "No such constructor "+constr;
 		if( Reflect.isFunction(f) ) {
 		if( Reflect.isFunction(f) ) {
 			if( params == null ) throw "Constructor "+constr+" need parameters";
 			if( params == null ) throw "Constructor "+constr+" need parameters";

+ 1 - 1
std/flash8/_std/Reflect.hx

@@ -59,7 +59,7 @@
 			Reflect.setField(o, field, value);
 			Reflect.setField(o, field, value);
 	}
 	}
 
 
-	public inline static function callMethod( o : Dynamic, func : Dynamic, args : Array<Dynamic> ) : Dynamic untyped {
+	public inline static function callMethod( o : Dynamic, func : haxe.Constraints.Function, args : Array<Dynamic> ) : Dynamic untyped {
 		return func["apply"](o,args);
 		return func["apply"](o,args);
 	}
 	}
 
 

+ 1 - 1
std/flash8/_std/Type.hx

@@ -92,7 +92,7 @@ enum ValueType {
 	}
 	}
 
 
 	public static function createEnum<T>( e : Enum<T>, constr : String, ?params : Array<Dynamic> ) : T {
 	public static function createEnum<T>( e : Enum<T>, constr : String, ?params : Array<Dynamic> ) : T {
-		var f = Reflect.field(e,constr);
+		var f:Dynamic = Reflect.field(e,constr);
 		if( f == null ) throw "No such constructor "+constr;
 		if( f == null ) throw "No such constructor "+constr;
 		if( Reflect.isFunction(f) ) {
 		if( Reflect.isFunction(f) ) {
 			if( params == null ) throw "Constructor "+constr+" need parameters";
 			if( params == null ) throw "Constructor "+constr+" need parameters";

+ 1 - 1
std/java/_std/Reflect.hx

@@ -88,7 +88,7 @@ import java.Boot;
 	@:functionCode('
 	@:functionCode('
 		return ((haxe.lang.Function) func).__hx_invokeDynamic(args);
 		return ((haxe.lang.Function) func).__hx_invokeDynamic(args);
 	')
 	')
-	public static function callMethod( o : Dynamic, func : Dynamic, args : Array<Dynamic> ) : Dynamic
+	public static function callMethod( o : Dynamic, func : haxe.Constraints.Function, args : Array<Dynamic> ) : Dynamic
 	{
 	{
 		return null;
 		return null;
 	}
 	}

+ 1 - 1
std/js/_std/Reflect.hx

@@ -43,7 +43,7 @@
 		if( o.__properties__ && (tmp=o.__properties__["set_"+field]) ) o[tmp](value) else o[field] = __define_feature__("Reflect.setProperty",value);
 		if( o.__properties__ && (tmp=o.__properties__["set_"+field]) ) o[tmp](value) else o[field] = __define_feature__("Reflect.setProperty",value);
 	}
 	}
 
 
-	public inline static function callMethod( o : Dynamic, func : Dynamic, args : Array<Dynamic> ) : Dynamic untyped {
+	public inline static function callMethod( o : Dynamic, func : haxe.Constraints.Function, args : Array<Dynamic> ) : Dynamic untyped {
 		return func.apply(o,args);
 		return func.apply(o,args);
 	}
 	}
 
 

+ 1 - 1
std/js/_std/Type.hx

@@ -110,7 +110,7 @@ enum ValueType {
 	}
 	}
 
 
 	public static function createEnum<T>( e : Enum<T>, constr : String, ?params : Array<Dynamic> ) : T {
 	public static function createEnum<T>( e : Enum<T>, constr : String, ?params : Array<Dynamic> ) : T {
-		var f = Reflect.field(e,constr);
+		var f:Dynamic = Reflect.field(e,constr);
 		if( f == null ) throw "No such constructor "+constr;
 		if( f == null ) throw "No such constructor "+constr;
 		if( Reflect.isFunction(f) ) {
 		if( Reflect.isFunction(f) ) {
 			if( params == null ) throw "Constructor "+constr+" need parameters";
 			if( params == null ) throw "Constructor "+constr+" need parameters";

+ 1 - 1
std/neko/_std/Reflect.hx

@@ -46,7 +46,7 @@
 		}
 		}
 	}
 	}
 
 
-	public static function callMethod( o : Dynamic, func : Dynamic, args : Array<Dynamic> ) : Dynamic untyped {
+	public static function callMethod( o : Dynamic, func : haxe.Constraints.Function, args : Array<Dynamic> ) : Dynamic untyped {
 		var a = args.__neko();
 		var a = args.__neko();
 		// pad missing args with null's
 		// pad missing args with null's
 		var n = $nargs(func);
 		var n = $nargs(func);

+ 1 - 1
std/neko/_std/Type.hx

@@ -115,7 +115,7 @@ enum ValueType {
 	}
 	}
 
 
 	public static function createEnum<T>( e : Enum<T>, constr : String, ?params : Array<Dynamic> ) : T {
 	public static function createEnum<T>( e : Enum<T>, constr : String, ?params : Array<Dynamic> ) : T {
-		var f = Reflect.field(e,constr);
+		var f:Dynamic = Reflect.field(e,constr);
 		if( f == null ) throw "No such constructor "+constr;
 		if( f == null ) throw "No such constructor "+constr;
 		if( Reflect.isFunction(f) ) {
 		if( Reflect.isFunction(f) ) {
 			if( params == null ) throw "Constructor "+constr+" need parameters";
 			if( params == null ) throw "Constructor "+constr+" need parameters";

+ 1 - 4
std/php/_std/Reflect.hx

@@ -53,10 +53,7 @@
 			return untyped __php__("$o->$field = $value");
 			return untyped __php__("$o->$field = $value");
 	}
 	}
 
 
-	public static function callMethod( o : Dynamic, func : Dynamic, args : Array<Dynamic> ) : Dynamic untyped {
-		if (__call__("is_string", o) && !__call__("is_array", func)) {
-			return __call__("call_user_func_array", field(o, func), __field__(args, "a"));
-		}
+	public static function callMethod( o : Dynamic, func : haxe.Constraints.Function, args : Array<Dynamic> ) : Dynamic untyped {
 		return __call__("call_user_func_array", __call__("is_callable", func) ? func : __call__("array", o, func), (null == args ? __call__("array") : __field__(args, "a")));
 		return __call__("call_user_func_array", __call__("is_callable", func) ? func : __call__("array", o, func), (null == args ? __call__("array") : __field__(args, "a")));
 	}
 	}
 
 

+ 1 - 1
std/php/_std/Type.hx

@@ -128,7 +128,7 @@ enum ValueType {
 	}
 	}
 
 
 	public static function createEnum<T>( e : Enum<T>, constr : String, ?params : Array<Dynamic> ) : T {
 	public static function createEnum<T>( e : Enum<T>, constr : String, ?params : Array<Dynamic> ) : T {
-		var f = Reflect.field(e,constr);
+		var f:Dynamic = Reflect.field(e,constr);
 		if( f == null ) throw "No such constructor "+constr;
 		if( f == null ) throw "No such constructor "+constr;
 		if( Reflect.isFunction(f) ) {
 		if( Reflect.isFunction(f) ) {
 			if( params == null ) throw "Constructor "+constr+" need parameters";
 			if( params == null ) throw "Constructor "+constr+" need parameters";

+ 1 - 1
std/python/_std/Reflect.hx

@@ -93,7 +93,7 @@ class Reflect {
 		else Builtin.setattr(o,field, value);
 		else Builtin.setattr(o,field, value);
 	}
 	}
 
 
-	public static function callMethod( o : Dynamic, func : Dynamic, args : Array<Dynamic> ) : Dynamic
+	public static function callMethod( o : Dynamic, func : haxe.Constraints.Function, args : Array<Dynamic> ) : Dynamic
 	{
 	{
 		var args:VarArgs = args;
 		var args:VarArgs = args;
 		return if (Builtin.callable(func)) func(python.Syntax.varArgs(args)) else null;
 		return if (Builtin.callable(func)) func(python.Syntax.varArgs(args)) else null;

+ 1 - 1
std/python/_std/Type.hx

@@ -160,7 +160,7 @@ enum ValueType {
 
 
 	public static function createEnum<T>( e : Enum<T>, constr : String, ?params : Array<Dynamic> ) : T
 	public static function createEnum<T>( e : Enum<T>, constr : String, ?params : Array<Dynamic> ) : T
 	{
 	{
-		var f = Reflect.field(e,constr);
+		var f:Dynamic = Reflect.field(e,constr);
 		if( f == null ) throw "No such constructor "+constr;
 		if( f == null ) throw "No such constructor "+constr;
 		if( Reflect.isFunction(f) ) {
 		if( Reflect.isFunction(f) ) {
 			if( params == null ) throw "Constructor "+constr+" need parameters";
 			if( params == null ) throw "Constructor "+constr+" need parameters";