Просмотр исходного кода

only display errors if no completion

Nicolas Cannasse 15 лет назад
Родитель
Сommit
194ed115b4
2 измененных файлов с 21 добавлено и 6 удалено
  1. 2 0
      doc/CHANGES.txt
  2. 19 6
      main.ml

+ 2 - 0
doc/CHANGES.txt

@@ -21,6 +21,8 @@
 		classes defined in f9 swf are not redefinable in haXe code (use extern)
 	flash9 : allow direct access and completion with classes defined in -swf-lib's
 	flash9 : remove imported libraries debug infos when not compiled with -debug
+	all : only display errors with --display if no completion matched
+	all : some completion related errors fixed
 
 2010-01-09: 2.05
 	js : added js.Scroll

+ 19 - 6
main.ml

@@ -36,17 +36,26 @@ let normalize_path p =
 		| '\\' | '/' -> p
 		| _ -> p ^ "/"
 
-let message msg p =
+let format msg p =
 	if p = Ast.null_pos then
-		prerr_endline msg
+		msg
 	else begin
 		let error_printer file line = sprintf "%s:%d:" file line in
 		let epos = Lexer.get_error_pos error_printer p in
 		let msg = String.concat ("\n" ^ epos ^ " : ") (ExtString.String.nsplit msg "\n") in
-		prerr_endline (sprintf "%s : %s" epos msg)
+		sprintf "%s : %s" epos msg
 	end
 
+let message msg p =
+	prerr_endline (format msg p)
+
+let messages = ref []
+
+let store_message msg p =
+	messages := format msg p :: !messages
+
 let do_exit() =
+	List.iter prerr_endline (List.rev (!messages));
 	if !prompt then begin
 		print_endline "Press enter to exit...";
 		ignore(read_line());
@@ -54,7 +63,7 @@ let do_exit() =
 	exit 1
 
 let report msg p =
-	message msg p;
+	messages := format msg p :: !messages;
 	do_exit()
 
 let htmlescape s =
@@ -225,8 +234,7 @@ try
 	);
 	Parser.display_error := (fun e p ->
 		Lexer.save_lines();
-		message (Parser.error_msg e) p;
-		has_error := true;
+		com.error (Parser.error_msg e) p;
 	);
 	Parser.use_doc := false;
 	(try
@@ -471,6 +479,11 @@ try
 		com.verbose <- false;
 		xml_out := None;
 		no_output := true;
+		com.warning <- store_message;
+		com.error <- (fun msg p ->
+			store_message msg p;
+			has_error := true;
+		);
 	end;
 	let ext = (match com.platform with
 		| Cross ->