Browse Source

[cs] Do not generate IHxObject on enums. Closes #3944

Cauê Waneck 10 years ago
parent
commit
e8797ce21c
3 changed files with 7 additions and 3 deletions
  1. 5 1
      gencommon.ml
  2. 1 1
      gencs.ml
  3. 1 1
      std/cs/_std/Type.hx

+ 5 - 1
gencommon.ml

@@ -9055,6 +9055,7 @@ struct
 			en.e_meta <- (Meta.Class, [], pos) :: en.e_meta;
 			cl.cl_module <- en.e_module;
 			cl.cl_meta <- ( Meta.Enum, [], pos ) :: cl.cl_meta;
+
 			(match gen.gcon.platform with
 				| Cs when Common.defined gen.gcon Define.CoreApiSerialize ->
 					cl.cl_meta <- ( Meta.Meta, [ (EField( (EConst (Ident "System"), null_pos ), "Serializable" ), null_pos) ], null_pos ) :: cl.cl_meta
@@ -9178,7 +9179,10 @@ struct
 			cl.cl_fields <- PMap.add "getTag" getTag_cf cl.cl_fields;
 			cl.cl_overrides <- getTag_cf :: cl.cl_overrides;
 
-			if should_be_hxgen then cl.cl_meta <- (Meta.HxGen,[],cl.cl_pos) :: cl.cl_meta;
+			if should_be_hxgen then
+				cl.cl_meta <- (Meta.HxGen,[],cl.cl_pos) :: cl.cl_meta
+			else
+				cl.cl_meta <- (Meta.NativeGen,[],cl.cl_pos) :: cl.cl_meta;
 			gen.gadd_to_module (TClassDecl cl) (max_dep);
 
 			TEnumDecl en

+ 1 - 1
gencs.ml

@@ -2686,7 +2686,7 @@ let configure gen =
 
 	let enum_base = (get_cl (get_type gen (["haxe";"lang"],"Enum")) ) in
 	let param_enum_base = (get_cl (get_type gen (["haxe";"lang"],"ParamEnum")) ) in
-	EnumToClass.configure gen (Some (fun e -> mk_cast gen.gcon.basic.tint e)) true true enum_base param_enum_base true false;
+	EnumToClass.configure gen (Some (fun e -> mk_cast gen.gcon.basic.tint e)) true true enum_base param_enum_base false false;
 
 	InterfaceVarsDeleteModf.configure gen;
 	InterfaceProps.configure gen;

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

@@ -278,7 +278,7 @@ using StringTools;
 		}
 
 		t = v.GetType();
-		if (t.IsEnum)
+		if (t.IsEnum || Std.is(v, HxEnum))
 			return ValueType.TEnum(cast t);
 		if (t.IsValueType) {
 			var vc:cs.system.IConvertible = cast v;