Răsfoiți Sursa

[netlib] filterout properties that were already declared

Caue Waneck 12 ani în urmă
părinte
comite
bb54df02f5
2 a modificat fișierele cu 17 adăugiri și 7 ștergeri
  1. 12 2
      gencs.ml
  2. 5 5
      std/cs/NativeArray.hx

+ 12 - 2
gencs.ml

@@ -2655,12 +2655,13 @@ let convert_ilprop ctx p prop =
 			raise Exit (* special (?) getter; not used *)
 		| Some _ -> "get"
 	in
-	let set = match prop.pget with
+	let set = match prop.pset with
 		| None -> "never"
 		| Some s when String.length s <= 4 || String.sub s 0 4 <> "set_" ->
 			raise Exit (* special (?) getter; not used *)
 		| Some _ -> "set"
 	in
+	Printf.printf "property %s (%s,%s)\n" prop.pname get set;
 
 	let kind =
 		FProp (get, set, Some(convert_signature ctx p prop.psig.snorm), None)
@@ -2886,7 +2887,16 @@ let normalize_ilcls ctx cls =
 	in
 	loop cls;
 	List.iter (fun v -> v := { !v with moverride = None }) !no_overrides;
-	let cls = { cls with cmethods = List.map (fun v -> !v) meths } in
+
+	(* filter out properties that were already declared *)
+	let props = List.filter (function
+		| ({ pmflags = Some m } as p) ->
+			let static = List.mem CMStatic m.mf_contract in
+			let name = p.pname in
+			not (List.exists (function (IlProp _,_,n,s) -> s = static && name = n | _ -> false) !all_fields)
+		| _ -> false
+	) cls.cprops in
+	let cls = { cls with cmethods = List.map (fun v -> !v) meths; cprops = props } in
 
 	let clsfields = get_all_fields cls in
 	all_fields := clsfields @ !all_fields;

+ 5 - 5
std/cs/NativeArray.hx

@@ -23,12 +23,12 @@ package cs;
 
 extern class NativeArray<T> extends cs.system.Array implements ArrayAccess<T>
 {
-	public var Length(default, null):Int;
-	
+	// public var Length(default, null):Int;
+
 	public function new(len:Int):Void;
-	
+
 	@:overload(function(arr:cs.system.Array, destIndex:haxe.Int64):Void {} )
 	public function CopyTo(arr:cs.system.Array, destIndex:Int):Void;
-	
+
 	static function Reverse(arr:cs.system.Array):Void;
-}
+}