소스 검색

[cs] make -D erase-generics compile (tests are failing though, investigating...)

Dan Korostelev 9 년 전
부모
커밋
dad90cfc2d
1개의 변경된 파일8개의 추가작업 그리고 0개의 파일을 삭제
  1. 8 0
      std/cs/_std/Type.hx

+ 8 - 0
std/cs/_std/Type.hx

@@ -173,14 +173,22 @@ enum ValueType {
 		var t = Lib.toNativeType(cl);
 		var t = Lib.toNativeType(cl);
 
 
 		if (cs.system.Object.ReferenceEquals(t, String))
 		if (cs.system.Object.ReferenceEquals(t, String))
+			#if erase_generics
+			return untyped "";
+			#else
 			return untyped __cs__("(T)(object){0}", "");
 			return untyped __cs__("(T)(object){0}", "");
+			#end
 
 
 		var res = try
 		var res = try
 			cs.system.Activator.CreateInstance(t, __createEmptyInstance_EMPTY_ARGS)
 			cs.system.Activator.CreateInstance(t, __createEmptyInstance_EMPTY_ARGS)
 		catch (_:cs.system.MissingMemberException)
 		catch (_:cs.system.MissingMemberException)
 			cs.system.Activator.CreateInstance(t);
 			cs.system.Activator.CreateInstance(t);
 
 
+		#if erase_generics
+		return res;
+		#else
 		return untyped __cs__("(T){0}", res);
 		return untyped __cs__("(T){0}", res);
+		#end
 	}
 	}
 
 
 	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