Browse Source

[java] Fix -java-lib enum. Closes #2410

Cauê Waneck 11 years ago
parent
commit
da7818be21
3 changed files with 21 additions and 3 deletions
  1. 5 2
      genjava.ml
  2. 14 0
      tests/unit/TestJava.hx
  3. 2 1
      tests/unit/native_java/src/haxe/test/TEnum.java

+ 5 - 2
genjava.ml

@@ -2384,8 +2384,11 @@ let convert_java_enum ctx p pe =
   let meta = ref [Meta.Native, [EConst (String (real_java_path ctx pe.cpath) ), p], p ] in
   let data = ref [] in
   List.iter (fun f ->
-    if List.mem JEnum f.jf_flags then
+    (* if List.mem JEnum f.jf_flags then *)
+    match f.jf_vmsignature with
+    | TObject( path, [] ) when path = pe.cpath && List.mem JStatic f.jf_flags && List.mem JFinal f.jf_flags ->
       data := { ec_name = f.jf_name; ec_doc = None; ec_meta = []; ec_args = []; ec_pos = p; ec_params = []; ec_type = None; } :: !data;
+    | _ -> ()
   ) pe.cfields;
 
   EEnum {
@@ -2394,7 +2397,7 @@ let convert_java_enum ctx p pe =
     d_params = []; (* enums never have type parameters *)
     d_meta = !meta;
     d_flags = [EExtern];
-    d_data = !data;
+    d_data = List.rev !data;
   }
 
   let convert_java_field ctx p jc field =

+ 14 - 0
tests/unit/TestJava.hx

@@ -2,6 +2,7 @@ package unit;
 import haxe.io.Bytes;
 import haxe.test.Base;
 import haxe.test.Base.Base_InnerClass;
+import haxe.test.TEnum;
 
 #if java
 class TestJava extends Test
@@ -103,6 +104,19 @@ class TestJava extends Test
 		t(c.dynamicCalled);
 	}
 
+	function testJavaLibEnum()
+	{
+		var e = TEnum.TA;
+		switch(e)
+		{
+			case TA:
+				t(true);
+			case _:
+				t(false);
+		}
+		eq("TA",Type.enumConstructor(e));
+	}
+
 	function testMiscJavaLib()
 	{
 		//setting inline should be an error

+ 2 - 1
tests/unit/native_java/src/haxe/test/TEnum.java

@@ -2,5 +2,6 @@ package haxe.test;
 
 public enum TEnum
 {
-	TA,TB,TC
+	TA,TB,TC;
+	public static TEnum TX = TA;
 }