فهرست منبع

[java/cs] Enabled reflection access for AccNever. Closes #2272

Cauê Waneck 11 سال پیش
والد
کامیت
6cfb5f711c
2فایلهای تغییر یافته به همراه21 افزوده شده و 2 حذف شده
  1. 2 2
      gencommon.ml
  2. 19 0
      tests/unit/issues/Issue2272.hx

+ 2 - 2
gencommon.ml

@@ -7316,12 +7316,12 @@ struct
         let ret = collect_fields cl ( if is_float || is_set then Some (false) else None ) (Some static) in
         let ret = if is_set then List.filter (fun (_,cf) ->
           match cf.cf_kind with
-          | Var { v_write = AccNever } -> false
+          (* | Var { v_write = AccNever } -> false *)
           | _ -> not (Meta.has Meta.ReadOnly cf.cf_meta)) ret
         else
           List.filter (fun (_,cf) ->
           match cf.cf_kind with
-          | Var { v_read = AccNever } -> false
+          (* | Var { v_read = AccNever } -> false *)
           | _ -> true) ret in
         if is_float then
           List.filter (fun (_,cf) -> (* TODO: maybe really apply_params in cf.cf_type. The benefits would be limited, though *)

+ 19 - 0
tests/unit/issues/Issue2272.hx

@@ -0,0 +1,19 @@
+package unit.issues;
+
+class Issue2272 extends unit.Test
+{
+	public function test()
+	{
+		var ex = new Example();
+		eq(5, Reflect.field(ex,'f'));
+	}
+}
+
+private class Example {
+	@:isVar @:keep public var f(get, set):Int;
+	function get_f() return f;
+	function set_f(param) return f = param;
+	public function new() {
+		Reflect.setField(this, 'f', 5);
+	}
+}