Pārlūkot izejas kodu

[netlib] Fix set_ function signature; don't consider array overloading as haxe property

Caue Waneck 12 gadi atpakaļ
vecāks
revīzija
ee07460272
1 mainītis faili ar 14 papildinājumiem un 3 dzēšanām
  1. 14 3
      gencs.ml

+ 14 - 3
gencs.ml

@@ -2579,6 +2579,17 @@ let convert_ilmethod ctx p m =
 	(* 	meta *)
 	(* in *)
 
+	let ret =
+		if String.length cff_name > 4 && String.sub cff_name 0 4 = "set_" then
+			match m.mret.snorm, m.margs with
+			| LVoid, _ :: _ ->
+				let _,_,s = List.hd (List.rev m.margs) in
+				s.snorm
+			| _ -> m.mret.snorm
+		else
+			m.mret.snorm
+	in
+
 	let kind =
 		let args = List.map (fun (name,flag,s) ->
 			let t = match s.snorm with
@@ -2596,7 +2607,7 @@ let convert_ilmethod ctx p m =
 			in
 			name,false,Some t,None) m.margs
 		in
-		let ret = convert_signature ctx p m.mret.snorm in
+		let ret = convert_signature ctx p ret in
 		let types = List.map (fun t ->
 			{
 				tp_name = "M" ^ string_of_int t.tnumber;
@@ -2664,8 +2675,8 @@ let convert_ilprop ctx p prop =
 	in
 	Printf.printf "property %s (%s,%s) : %s\n" prop.pname get set (IlMetaDebug.ilsig_s prop.psig.ssig);
 	let ilsig = match prop.psig.snorm with
-		| LMethod (_,ret,_) -> ret
-		| s -> s
+		| LMethod (_,ret,[]) -> ret
+		| s -> raise Exit
 	in
 
 	let kind =