From 9e61a063c3ec2d11d6ac8411f25582ea02cf0113 Mon Sep 17 00:00:00 2001 From: Leo White Date: Thu, 2 Apr 2020 09:07:32 +0100 Subject: [PATCH] Avoid warning 58 in flambda ocamlnat --- toplevel/opttoploop.ml | 2 +- typing/env.ml | 3 +++ typing/env.mli | 5 ++++- typing/persistent_env.ml | 6 +++--- typing/persistent_env.mli | 4 ++++ 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/toplevel/opttoploop.ml b/toplevel/opttoploop.ml index 355d045f0..52a914ea8 100644 --- a/toplevel/opttoploop.ml +++ b/toplevel/opttoploop.ml @@ -360,7 +360,7 @@ let execute_phrase print_outcome ppf phr = | Result _ -> if Config.flambda then (* CR-someday trefis: *) - () + Env.register_import_as_opaque (Ident.name module_ident) else Compilenv.record_global_approx_toplevel (); if print_outcome then diff --git a/typing/env.ml b/typing/env.ml index 594b5cd4b..38d448137 100644 --- a/typing/env.ml +++ b/typing/env.ml @@ -790,6 +790,9 @@ let crc_of_unit name = let is_imported_opaque modname = Persistent_env.is_imported_opaque persistent_env modname +let register_import_as_opaque modname = + Persistent_env.register_import_as_opaque persistent_env modname + let reset_declaration_caches () = Types.Uid.Tbl.clear value_declarations; Types.Uid.Tbl.clear type_declarations; diff --git a/typing/env.mli b/typing/env.mli index f0b3ea77a..71d146bab 100644 --- a/typing/env.mli +++ b/typing/env.mli @@ -370,9 +370,12 @@ val imports: unit -> crcs (* may raise Persistent_env.Consistbl.Inconsistency *) val import_crcs: source:string -> crcs -> unit -(* [is_imported_opaque md] returns true if [md] is an opaque imported module *) +(* [is_imported_opaque md] returns true if [md] is an opaque imported module *) val is_imported_opaque: modname -> bool +(* [register_import_as_opaque md] registers [md] as an opaque imported module *) +val register_import_as_opaque: modname -> unit + (* Summaries -- compact representation of an environment, to be exported in debugging information. *) diff --git a/typing/persistent_env.ml b/typing/persistent_env.ml index e117553ba..1931f5f3a 100644 --- a/typing/persistent_env.ml +++ b/typing/persistent_env.ml @@ -104,7 +104,7 @@ let clear_missing {persistent_structures; _} = let add_import {imported_units; _} s = imported_units := String.Set.add s !imported_units -let add_imported_opaque {imported_opaque_units; _} s = +let register_import_as_opaque {imported_opaque_units; _} s = imported_opaque_units := String.Set.add s !imported_opaque_units let find_in_cache {persistent_structures; _} s = @@ -164,7 +164,7 @@ let save_pers_struct penv crc ps pm = | Rectypes -> () | Alerts _ -> () | Unsafe_string -> () - | Opaque -> add_imported_opaque penv modname) + | Opaque -> register_import_as_opaque penv modname) ps.ps_flags; Consistbl.set crc_units modname crc ps.ps_filename; add_import penv modname @@ -190,7 +190,7 @@ let acknowledge_pers_struct penv check modname pers_sig pm = if Config.safe_string then error (Depend_on_unsafe_string_unit(ps.ps_name)); | Alerts _ -> () - | Opaque -> add_imported_opaque penv modname) + | Opaque -> register_import_as_opaque penv modname) ps.ps_flags; if check then check_consistency penv ps; let {persistent_structures; _} = penv in diff --git a/typing/persistent_env.mli b/typing/persistent_env.mli index d04034ef8..ac3109c37 100644 --- a/typing/persistent_env.mli +++ b/typing/persistent_env.mli @@ -77,6 +77,10 @@ val is_imported : 'a t -> modname -> bool in [penv] as an opaque module *) val is_imported_opaque : 'a t -> modname -> bool +(* [register_import_as_opaque penv md] registers [md] in [penv] as an + opaque module *) +val register_import_as_opaque : 'a t -> modname -> unit + val make_cmi : 'a t -> modname -> Types.signature -> alerts -> Cmi_format.cmi_infos