diff options
author | Daniel de Rauglaudre <daniel.de_rauglaudre@inria.fr> | 2001-10-01 08:09:58 +0000 |
---|---|---|
committer | Daniel de Rauglaudre <daniel.de_rauglaudre@inria.fr> | 2001-10-01 08:09:58 +0000 |
commit | 15ad21a38bb5d2c00573ad4475de5a6f70eb5052 (patch) | |
tree | dbd1271bde91289e315e8fc4bea9fcd2b0833f3f | |
parent | 7b7fae27fa081580d57fa1a57ca1072b9f1527a3 (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.ml | 9 |
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 = |