diff --git a/CHANGES.md b/CHANGES.md index f1ea89907d7..bac43f35b1d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,9 @@ Unreleased ---------- +- Sandbox infer rules for menhir. Fixes possible "inconsistent assumptions" + errors (#5015, @rgrinberg) + - Experimental support for ctypes stubs (#3905, fixes #135, @mbacarella) - Fix interpretation of `binaries` defined in the `env stanza`. Binaries diff --git a/src/dune_rules/compilation_context.ml b/src/dune_rules/compilation_context.ml index eefcfb23be3..143632ad2d5 100644 --- a/src/dune_rules/compilation_context.ml +++ b/src/dune_rules/compilation_context.ml @@ -104,6 +104,8 @@ let js_of_ocaml t = t.js_of_ocaml let sandbox t = t.sandbox +let set_sandbox t sandbox = { t with sandbox } + let package t = t.package let vimpl t = t.vimpl diff --git a/src/dune_rules/compilation_context.mli b/src/dune_rules/compilation_context.mli index c27c919fe39..f2e22ac8667 100644 --- a/src/dune_rules/compilation_context.mli +++ b/src/dune_rules/compilation_context.mli @@ -79,6 +79,8 @@ val js_of_ocaml : t -> Dune_file.Js_of_ocaml.t option val sandbox : t -> Sandbox_config.t +val set_sandbox : t -> Sandbox_config.t -> t + val package : t -> Package.t option val vimpl : t -> Vimpl.t option diff --git a/src/dune_rules/menhir.ml b/src/dune_rules/menhir.ml index 91e86af08c7..19952e4f91c 100644 --- a/src/dune_rules/menhir.ml +++ b/src/dune_rules/menhir.ml @@ -204,7 +204,10 @@ module Run (P : PARAMS) = struct (Compilation_context.preprocessing cctx) name mock_module ~lint:false in - let cctx = Compilation_context.without_bin_annot cctx in + let cctx = + Compilation_context.set_sandbox cctx Sandbox_config.needs_sandboxing + |> Compilation_context.without_bin_annot + in let* deps = Dep_rules.for_module cctx mock_module in let* () = Module_compilation.ocamlc_i ~deps cctx mock_module