Set M.syntax when reading subsystems generated by dune

Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
This commit is contained in:
Rudi Grinberg 2018-07-02 16:33:12 +07:00
parent 044c78281d
commit 04ee6b0b2d
1 changed files with 11 additions and 0 deletions

View File

@ -21,6 +21,17 @@ let parse_sub_systems ~parsing_context sexps =
|> Sub_system_name.Map.mapi ~f:(fun name (_, version, data) ->
let (module M) = Jbuild.Sub_system_info.get name in
Syntax.check_supported M.syntax version;
let parsing_context =
(* We set the syntax to the version used when generating this subsystem.
We cannot do this for jbuild defined subsystems however since those use
1.0 as the version. Which would correspond to the dune syntax (because
subsystems share the syntax of the dune lang) *)
match Univ_map.find_exn parsing_context (Syntax.key Stanza.syntax) with
| (0, 0) ->
parsing_context
| (_, _) ->
Univ_map.add parsing_context (Syntax.key M.syntax) (snd version)
in
M.T (Sexp.Of_sexp.parse M.parse parsing_context data))
let of_sexp =