Browse Source

Make analyzer ignore __cpp__ calls, and remove the need for function-specific code in Reflect (which does not work anymore anyhow)

Hugh 10 years ago
parent
commit
dedc82d73a
2 changed files with 2 additions and 16 deletions
  1. 2 1
      analyzer.ml
  2. 0 15
      std/cpp/_std/Reflect.hx

+ 2 - 1
analyzer.ml

@@ -203,6 +203,7 @@ module Simplifier = struct
 				| TField(_,(FStatic(c,cf) | FInstance(c,_,cf))) when has_analyzer_option cf.cf_meta flag_no_simplification || has_analyzer_option c.cl_meta flag_no_simplification -> ()
 				| TField({eexpr = TLocal _},_) when allow_tlocal -> ()
 				| TCall({eexpr = TField(_,(FStatic(c,cf) | FInstance(c,_,cf)))},el) when has_analyzer_option cf.cf_meta flag_no_simplification || has_analyzer_option c.cl_meta flag_no_simplification -> ()
+				| TCall({eexpr =  TLocal { v_name = "__cpp__" } },_) -> ()
 				| TField(_,FEnum _) -> ()
 				| TField(_,FDynamic _) -> ()
 				| _ when (try ignore(awkward_get_enum_index com e); true with Not_found -> false) -> ()
@@ -1466,4 +1467,4 @@ module Run = struct
 		let config = get_base_config com in
 		List.iter (run_on_type ctx config) types
 
-end
+end

+ 0 - 15
std/cpp/_std/Reflect.hx

@@ -21,34 +21,28 @@
  */
 @:coreApi class Reflect {
 
-   @:analyzer(ignore)
 	public  static function hasField( o : Dynamic, field : String ) : Bool untyped {
 		return o!=null && o.__HasField(field);
 	}
 
-   @:analyzer(ignore)
 	public static function field( o : Dynamic, field : String ) : Dynamic untyped {
 		return (o==null) ? null : o.__Field(field,untyped __cpp__("hx::paccNever") );
 	}
 
-   @:analyzer(ignore)
 	public static function setField( o : Dynamic, field : String, value : Dynamic ) : Void untyped {
 		if (o!=null)
 			o.__SetField(field,value,untyped __cpp__("hx::paccNever") );
 	}
 
-   @:analyzer(ignore)
 	public static function getProperty( o : Dynamic, field : String ) : Dynamic {
 		return (o==null) ? null : o.__Field(field,untyped __cpp__("hx::paccAlways") );
 	}
 
-   @:analyzer(ignore)
 	public static function setProperty( o : Dynamic, field : String, value : Dynamic ) : Void {
 		if (o!=null)
 			o.__SetField(field,value,untyped __cpp__("hx::paccAlways") );
 	}
 
-   @:analyzer(ignore)
 	public static function callMethod( o : Dynamic, func : haxe.Constraints.Function, args : Array<Dynamic> ) : Dynamic untyped {
 			if (func!=null && func.__GetType()==__global__.vtString)
 				func = o.__Field(func,untyped __cpp__("hx::paccDynamic"));
@@ -56,7 +50,6 @@
          return untyped func.__Run(args);
 	}
 
-   @:analyzer(ignore)
 	public static function fields( o : Dynamic ) : Array<String> untyped {
 		if( o == null ) return new Array();
 		var a : Array<String> = [];
@@ -64,17 +57,14 @@
 		return a;
 	}
 
-   @:analyzer(ignore)
 	public static function isFunction( f : Dynamic ) : Bool untyped {
 		return f!=null && f.__GetType() ==  __global__.vtFunction;
 	}
 
-   @:analyzer(ignore)
 	public static function compare<T>( a : T, b : T ) : Int {
 		return ( a == b ) ? 0 : (((a:Dynamic) > (b:Dynamic)) ? 1 : -1);
 	}
 
-   @:analyzer(ignore)
 	public static function compareMethods( f1 : Dynamic, f2 : Dynamic ) : Bool {
 		if( f1 == f2 )
 			return true;
@@ -83,7 +73,6 @@
 		return untyped __global__.__hxcpp_same_closure(f1,f2);
 	}
 
-   @:analyzer(ignore)
 	public static function isObject( v : Dynamic ) : Bool untyped {
 		if (v==null) return false;
 		var t:Int = v.__GetType();
@@ -91,18 +80,15 @@
 				t==__global__.vtArray;
 	}
 
-   @:analyzer(ignore)
 	public static function isEnumValue( v : Dynamic ) : Bool untyped {
 		return v!=null && v.__GetType() == __global__.vtEnum;
 	}
 
-   @:analyzer(ignore)
 	public static function deleteField( o : Dynamic, field : String ) : Bool untyped {
 		if (o==null) return false;
 		return untyped __global__.__hxcpp_anon_remove(o,field);
 	}
 
-   @:analyzer(ignore)
 	public static function copy<T>( o : T ) : T {
 		if (o==null) return null;
 		if(untyped o.__GetType()==__global__.vtString ) return o;
@@ -114,7 +100,6 @@
 		return o2;
 	}
 
-   @:analyzer(ignore)
 	@:overload(function( f : Array<Dynamic> -> Void ) : Dynamic {})
 	public static function makeVarArgs( f : Array<Dynamic> -> Dynamic ) : Dynamic {
 		return untyped __global__.__hxcpp_create_var_args(f);