summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel de Rauglaudre <daniel.de_rauglaudre@inria.fr>2001-10-01 08:09:58 +0000
committerDaniel de Rauglaudre <daniel.de_rauglaudre@inria.fr>2001-10-01 08:09:58 +0000
commit15ad21a38bb5d2c00573ad4475de5a6f70eb5052 (patch)
treedbd1271bde91289e315e8fc4bea9fcd2b0833f3f
parent7b7fae27fa081580d57fa1a57ca1072b9f1527a3 (diff)
Correction: la suppression du fichier préprocessé en cas d'erreur ne peut
avoir lieu que si le résultat du préprocesseur est un fichier binaire "arbre de syntaxe" (typiquement produit par camlp4), sinon l'affichage du message d'erreur se plante. git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@3817 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r--driver/compile.ml9
1 files changed, 7 insertions, 2 deletions
diff --git a/driver/compile.ml b/driver/compile.ml
index bdb3f4735..938c27a67 100644
--- a/driver/compile.ml
+++ b/driver/compile.ml
@@ -98,6 +98,11 @@ let parse_file inputfile parse_fun ast_magic =
close_in ic;
ast
+let remove_preprocessed_if_ast inputfile =
+ match !Clflags.preprocessor with
+ None -> ()
+ | Some _ -> if inputfile <> !Location.input_name then remove_file inputfile
+
(* Compile a .mli file *)
let interface ppf sourcefile =
@@ -115,7 +120,7 @@ let interface ppf sourcefile =
Env.save_signature sg modulename (prefixname ^ ".cmi");
remove_preprocessed inputfile
with e ->
- remove_preprocessed inputfile;
+ remove_preprocessed_if_ast inputfile;
raise e
(* Compile a .ml file *)
@@ -151,7 +156,7 @@ let implementation ppf sourcefile =
with x ->
close_out oc;
remove_file objfile;
- remove_preprocessed inputfile;
+ remove_preprocessed_if_ast inputfile;
raise x
let c_file name =