diff --git a/jscomp/core/js_implementation.ml b/jscomp/core/js_implementation.ml index e20cb021a3..01b1229259 100644 --- a/jscomp/core/js_implementation.ml +++ b/jscomp/core/js_implementation.ml @@ -64,7 +64,7 @@ let after_parsing_sig ppf outputprefix ast = else let modulename = module_of_filename outputprefix in Lam_compile_env.reset (); - let initial_env = Res_compmisc.initial_env () in + let initial_env = Res_compmisc.initial_env ~modulename () in Env.set_unit_name modulename; let tsg = Typemod.transl_signature initial_env ast in if !Clflags.dump_typedtree then @@ -149,7 +149,7 @@ let after_parsing_impl ppf outputprefix (ast : Parsetree.structure) = else let modulename = Ext_filename.module_name outputprefix in Lam_compile_env.reset (); - let env = Res_compmisc.initial_env () in + let env = Res_compmisc.initial_env ~modulename () in Env.set_unit_name modulename; let typedtree, coercion, _, _ = Typemod.type_implementation_more diff --git a/jscomp/core/res_compmisc.ml b/jscomp/core/res_compmisc.ml index 0620574ea0..1c7f3974e3 100644 --- a/jscomp/core/res_compmisc.ml +++ b/jscomp/core/res_compmisc.ml @@ -41,8 +41,13 @@ let open_implicit_module m env = in snd (Typemod.type_open_ Override env lid.loc lid) -let initial_env () = +let initial_env ?(modulename) () = Ident.reinit (); + let open_modules = (match modulename with + | None -> !Clflags.open_modules + | Some modulename -> + !Clflags.open_modules |> List.filter(fun m -> m <> modulename) + ) in let initial = Env.initial_safe_string in let env = if !Clflags.nopervasives then initial @@ -51,4 +56,4 @@ let initial_env () = List.fold_left (fun env m -> open_implicit_module m env) env - (List.rev !Clflags.open_modules) + (List.rev open_modules) diff --git a/jscomp/core/res_compmisc.mli b/jscomp/core/res_compmisc.mli index 530f0e323a..0f17e43e9c 100644 --- a/jscomp/core/res_compmisc.mli +++ b/jscomp/core/res_compmisc.mli @@ -24,4 +24,4 @@ val init_path : unit -> unit -val initial_env : unit -> Env.t +val initial_env : ?modulename : string -> unit -> Env.t