2
0
Эх сурвалжийг харах

[jvm] be careful with generated closure names

Simon Krajewski 5 жил өмнө
parent
commit
b72bc9e273

+ 8 - 3
src/generators/jvm/jvmFunctions.ml

@@ -361,13 +361,18 @@ class typed_function
 = object(self)
 
 	val jc_closure =
+		let patch_name name = match name with
+			| "<init>" -> "new"
+			| "<clinit>" -> "__init__"
+			| name -> name
+		in
 		let name = match kind with
 			| FuncLocal ->
-				Printf.sprintf "Closure_%s_%i" host_method#get_name host_method#get_next_closure_id
+				Printf.sprintf "Closure_%s_%i" (patch_name host_method#get_name) host_method#get_next_closure_id
 			| FuncStatic(path,name) ->
-				Printf.sprintf "%s_%s" (snd path) name
+				Printf.sprintf "%s_%s" (snd path) (patch_name name)
 			| FuncMember(path,name) ->
-				Printf.sprintf "%s_%s" (snd path) name
+				Printf.sprintf "%s_%s" (snd path) (patch_name name)
 		in
 		let jc = host_class#spawn_inner_class None haxe_function_path (Some name) in
 		jc#add_access_flag 0x10; (* final *)