From d72c09cb62637b0b90ac0915600501a0fbde8aca Mon Sep 17 00:00:00 2001 From: Thomas Wood <thomas.wood09@imperial.ac.uk> Date: Thu, 10 Sep 2015 16:34:11 +0100 Subject: [PATCH] Fixup nasty .cmi corruption bug --- generator/js_of_ast.ml | 9 +++++++++ generator/parse_type.ml | 3 +-- generator/tests/cascade.ml | 2 -- generator/tests/types.ml | 2 +- 4 files changed, 11 insertions(+), 5 deletions(-) delete mode 100644 generator/tests/cascade.ml diff --git a/generator/js_of_ast.ml b/generator/js_of_ast.ml index 8a5f5f1..5153df3 100644 --- a/generator/js_of_ast.ml +++ b/generator/js_of_ast.ml @@ -338,7 +338,16 @@ and js_of_structure_item ?(mod_gen=[]) old_env s = let name = (fun od -> if od.open_override = Fresh then js_of_longident od.open_txt else "") od in if (name <> "" & not_already_created name) then module_list := name :: !module_list; + + (* Disable writing of .cmi files for modules we're opening to avoid automatically over-writing existing signature + * with an inconsistent one *) + let old_dont_write_files = !Clflags.dont_write_files in + Clflags.dont_write_files := true; + let new_mod = parse_modules ~mod_gen @@ find_module_path @@ !module_list in + + Clflags.dont_write_files := old_dont_write_files; + module_created := name :: !module_created; module_code := new_mod @ !module_code; "" diff --git a/generator/parse_type.ml b/generator/parse_type.ml index 1f0b31a..c01d63e 100644 --- a/generator/parse_type.ml +++ b/generator/parse_type.ml @@ -102,8 +102,7 @@ let process_implementation_file ppf sourcefile = Env.set_unit_name modulename; let inputfile = preprocess sourcefile in try - let env = initial_env () in - + let env = initial_env () in let parsetree = parse_file inputfile Parse.implementation ast_impl_magic_number in let typedtree = Typemod.type_implementation sourcefile prefixname modulename env parsetree in (Some (parsetree, typedtree), inputfile) diff --git a/generator/tests/cascade.ml b/generator/tests/cascade.ml deleted file mode 100644 index 4b38c53..0000000 --- a/generator/tests/cascade.ml +++ /dev/null @@ -1,2 +0,0 @@ -let f x = - 2 + x \ No newline at end of file diff --git a/generator/tests/types.ml b/generator/tests/types.ml index f1ea841..fa24fe8 100644 --- a/generator/tests/types.ml +++ b/generator/tests/types.ml @@ -5,4 +5,4 @@ type exprone = | Alpha [@f] | Gamma [@f] and exprtwo = - | Beta [@f] \ No newline at end of file + | Beta [@f] -- GitLab