Browse Source

[cs] Allow generating native properties with implicit getter/setter (#9152)

Rudy Ges 5 years ago
parent
commit
86d7740e4f
2 changed files with 7 additions and 4 deletions
  1. 2 2
      src-json/meta.json
  2. 5 2
      src/generators/gencs.ml

+ 2 - 2
src-json/meta.json

@@ -928,7 +928,7 @@
 	{
 		"name": "Property",
 		"metadata": ":property",
-		"doc": "Marks a property field to be compiled as a native C# property.",
+		"doc": "Marks a field to be compiled as a native C# property.",
 		"platforms": ["cs"],
 		"targets": ["TClassField"]
 	},
@@ -1211,4 +1211,4 @@
 		"doc": "Use Cpp native `void` return type.",
 		"platforms": ["cpp"]
 	}
-]
+]

+ 5 - 2
src/generators/gencs.ml

@@ -2188,9 +2188,12 @@ let generate con =
 							| Some e ->
 								write w " = ";
 								expr_s true w e;
-							| None -> ()
+								write w ";"
+							| None when (Meta.has Meta.Property cf.cf_meta) ->
+								write w " { get; set; }";
+							| None ->
+								write w ";"
 						);
-						write w ";"
 					end (* TODO see how (get,set) variable handle when they are interfaces *)
 				| Method _ when not (Type.is_physical_field cf) || (match cl.cl_kind, cf.cf_expr with | KAbstractImpl _, None -> true | _ -> false) ->
 					List.iter (fun cf -> if cl.cl_interface || cf.cf_expr <> None then