Browse Source

minor fix

Nicolas Cannasse 14 years ago
parent
commit
a3c90b57c9
2 changed files with 6 additions and 3 deletions
  1. 2 2
      genswf.ml
  2. 4 1
      main.ml

+ 2 - 2
genswf.ml

@@ -350,7 +350,7 @@ let build_class com c file =
 			| None, None -> assert false
 			| None, None -> assert false
 			| Some t, None -> true, false, t
 			| Some t, None -> true, false, t
 			| None, Some t -> false, true, t
 			| None, Some t -> false, true, t
-			| Some t1, Some t2 -> if t1 <> t2 then assert false; true, true, t1
+			| Some t1, Some t2 -> true, true, (if t1 <> t2 then None else t1)
 		) in
 		) in
 		let flags = [APublic] in
 		let flags = [APublic] in
 		let flags = if stat then AStatic :: flags else flags in
 		let flags = if stat then AStatic :: flags else flags in
@@ -360,7 +360,7 @@ let build_class com c file =
 			cff_doc = None;
 			cff_doc = None;
 			cff_access = flags;
 			cff_access = flags;
 			cff_meta = [];
 			cff_meta = [];
-			cff_kind = FProp ((if get then "default" else "never"),(if set then "default" else "never"),make_type t);
+			cff_kind = if get && set then FVar (Some (make_type t), None) else FProp ((if get then "default" else "never"),(if set then "default" else "never"),make_type t);
 		}
 		}
 	in
 	in
 	let fields = Hashtbl.fold (fun (name,stat) t acc ->
 	let fields = Hashtbl.fold (fun (name,stat) t acc ->

+ 4 - 1
main.ml

@@ -232,6 +232,7 @@ try
 	let gen_as3 = ref false in
 	let gen_as3 = ref false in
 	let no_output = ref false in
 	let no_output = ref false in
 	let did_something = ref false in
 	let did_something = ref false in
+	let force_typing = ref false in
 	let pre_compilation = ref [] in
 	let pre_compilation = ref [] in
 	let interp = ref false in
 	let interp = ref false in
 	Common.define com ("haxe_" ^ string_of_int version);
 	Common.define com ("haxe_" ^ string_of_int version);
@@ -405,6 +406,7 @@ try
 		("--flash-use-stage", define "flash_use_stage", ": place objects found on the stage of the SWF lib");
 		("--flash-use-stage", define "flash_use_stage", ": place objects found on the stage of the SWF lib");
 		("--neko-source", define "neko_source", ": keep generated neko source");
 		("--neko-source", define "neko_source", ": keep generated neko source");
 		("--gen-hx-classes", Arg.Unit (fun() ->
 		("--gen-hx-classes", Arg.Unit (fun() ->
+			force_typing := true;
 			List.iter (fun (_,_,extract) ->
 			List.iter (fun (_,_,extract) ->
 				Hashtbl.iter (fun n _ -> classes := n :: !classes) (extract())				
 				Hashtbl.iter (fun n _ -> classes := n :: !classes) (extract())				
 			) com.swf_libs;
 			) com.swf_libs;
@@ -460,6 +462,7 @@ try
 			interp := true;
 			interp := true;
 		),": interpret the program using internal macro system");
 		),": interpret the program using internal macro system");
 		("--macro", Arg.String (fun e ->
 		("--macro", Arg.String (fun e ->
+			force_typing := true;
 			config_macros := e :: !config_macros
 			config_macros := e :: !config_macros
 		)," : call the given macro before typing anything else");
 		)," : call the given macro before typing anything else");
 		("--dead-code-elimination", Arg.Unit (fun () ->
 		("--dead-code-elimination", Arg.Unit (fun () ->
@@ -569,7 +572,7 @@ try
 		to accidentaly delete a source file. *)
 		to accidentaly delete a source file. *)
 	if not !no_output && file_extension com.file = ext then delete_file com.file;
 	if not !no_output && file_extension com.file = ext then delete_file com.file;
 	List.iter (fun f -> f()) (List.rev (!pre_compilation));
 	List.iter (fun f -> f()) (List.rev (!pre_compilation));
-	if !classes = [([],"Std")] && !config_macros = [] then begin
+	if !classes = [([],"Std")] && not !force_typing then begin
 		if !cmds = [] && not !did_something then Arg.usage basic_args_spec usage;
 		if !cmds = [] && not !did_something then Arg.usage basic_args_spec usage;
 	end else begin
 	end else begin
 		if com.verbose then print_endline ("Classpath : " ^ (String.concat ";" com.class_path));
 		if com.verbose then print_endline ("Classpath : " ^ (String.concat ";" com.class_path));