Dan Korostelev 8 anni fa
parent
commit
a241ea8157

+ 8 - 9
src/generators/gencommon/reflectionCFs.ml

@@ -1265,7 +1265,7 @@ let implement_getFields ctx cl =
 	end
 
 
-let implement_invokeField ctx ~slow_invoke cl =
+let implement_invokeField ctx slow_invoke cl =
 	(*
 		There are two ways to implement an haxe reflection-enabled class:
 		When we extend a non-hxgen class, and when we extend the base HxObject class.
@@ -1660,17 +1660,16 @@ end;;
 *)
 let priority = solve_deps name [DAfter UniversalBaseClass.priority]
 
-let configure ~slow_invoke ctx baseinterface =
-	let gen = ctx.rcf_gen in
+let configure ctx baseinterface ~slow_invoke =
 	let run md =
 		(match md with
 		| TClassDecl cl when is_hxgen md && ( not cl.cl_interface || cl.cl_path = baseinterface.cl_path ) && (match cl.cl_kind with KAbstractImpl _ -> false | _ -> true) ->
-			(implement_dynamics ctx cl);
-			(if not (PMap.mem (mk_internal_name "hx" "lookupField") cl.cl_fields) then implement_final_lookup ctx cl);
-			(if not (PMap.mem (mk_internal_name "hx" "getField") cl.cl_fields) then implement_get_set ctx cl);
-			(if not (PMap.mem (mk_internal_name "hx" "invokeField") cl.cl_fields) then implement_invokeField ctx ~slow_invoke:slow_invoke cl);
-			(if not (PMap.mem (mk_internal_name "hx" "getFields") cl.cl_fields) then implement_getFields ctx cl)
+			implement_dynamics ctx cl;
+			if not (PMap.mem (mk_internal_name "hx" "lookupField") cl.cl_fields) then implement_final_lookup ctx cl;
+			if not (PMap.mem (mk_internal_name "hx" "getField") cl.cl_fields) then implement_get_set ctx cl;
+			if not (PMap.mem (mk_internal_name "hx" "invokeField") cl.cl_fields) then implement_invokeField ctx slow_invoke cl;
+			if not (PMap.mem (mk_internal_name "hx" "getFields") cl.cl_fields) then implement_getFields ctx cl;
 		| _ -> ());
 		md
 	in
-	gen.gmodule_filters#add name (PCustom priority) run
+	ctx.rcf_gen.gmodule_filters#add name (PCustom priority) run

+ 5 - 6
src/generators/gencs.ml

@@ -2869,12 +2869,11 @@ let generate con =
 
 		ReflectionCFs.implement_varargs_cl rcf_ctx ( get_cl (get_type gen (["haxe";"lang"], "VarArgsBase")) );
 
-		let slow_invoke = mk_static_field_access_infer (runtime_cl) "slowCallField" null_pos [] in
-		ReflectionCFs.configure rcf_ctx ~slow_invoke:(fun ethis efield eargs -> {
-			eexpr = TCall(slow_invoke, [ethis; efield; eargs]);
-			etype = t_dynamic;
-			epos = ethis.epos;
-		} ) object_iface;
+		let slow_invoke_field = mk_static_field_access_infer runtime_cl "slowCallField" null_pos [] in
+		let slow_invoke ethis efield eargs =
+			mk (TCall (slow_invoke_field, [ethis; efield; eargs])) t_dynamic ethis.epos
+		in
+		ReflectionCFs.configure rcf_ctx object_iface ~slow_invoke:slow_invoke;
 
 		ObjectDeclMap.configure gen (ReflectionCFs.implement_dynamic_object_ctor rcf_ctx dynamic_object);
 

+ 5 - 6
src/generators/genjava.ml

@@ -2211,12 +2211,11 @@ let generate con =
 
 	ReflectionCFs.implement_varargs_cl rcf_ctx ( get_cl (get_type gen (["haxe";"lang"], "VarArgsBase")) );
 
-	let slow_invoke = mk_static_field_access_infer (runtime_cl) "slowCallField" null_pos [] in
-	ReflectionCFs.configure rcf_ctx ~slow_invoke:(fun ethis efield eargs -> {
-		eexpr = TCall(slow_invoke, [ethis; efield; eargs]);
-		etype = t_dynamic;
-		epos = ethis.epos;
-	} ) object_iface;
+	let slow_invoke_field = mk_static_field_access_infer runtime_cl "slowCallField" null_pos [] in
+	let slow_invoke ethis efield eargs =
+		mk (TCall (slow_invoke_field, [ethis; efield; eargs])) t_dynamic ethis.epos
+	in
+	ReflectionCFs.configure rcf_ctx ~slow_invoke:slow_invoke object_iface;
 
 	ObjectDeclMap.configure gen (ReflectionCFs.implement_dynamic_object_ctor rcf_ctx dynamic_object);