Change menhir flags to use ordered set language

Consistent with how flags are handled elsewhere in jbuilder
This commit is contained in:
Rudi Grinberg 2018-03-05 20:03:16 +07:00
parent f06519e231
commit 6d5c2de689
3 changed files with 16 additions and 11 deletions

View File

@ -942,7 +942,7 @@ end
module Menhir = struct module Menhir = struct
type t = type t =
{ merge_into : string option { merge_into : string option
; flags : String_with_vars.t list ; flags : Ordered_set_lang.Unexpanded.t
; modules : string list ; modules : string list
; mode : Rule.Mode.t ; mode : Rule.Mode.t
; loc : Loc.t ; loc : Loc.t
@ -951,7 +951,7 @@ module Menhir = struct
let v1 = let v1 =
record record
(field_o "merge_into" string >>= fun merge_into -> (field_o "merge_into" string >>= fun merge_into ->
field "flags" (list String_with_vars.t) ~default:[] >>= fun flags -> field_oslu "flags" >>= fun flags ->
field "modules" (list string) >>= fun modules -> field "modules" (list string) >>= fun modules ->
Rule.Mode.field >>= fun mode -> Rule.Mode.field >>= fun mode ->
return return

View File

@ -287,7 +287,7 @@ end
module Menhir : sig module Menhir : sig
type t = type t =
{ merge_into : string option { merge_into : string option
; flags : String_with_vars.t list ; flags : Ordered_set_lang.Unexpanded.t
; modules : string list ; modules : string list
; mode : Rule.Mode.t ; mode : Rule.Mode.t
; loc : Loc.t ; loc : Loc.t

View File

@ -1,17 +1,22 @@
open Import open Import
open Build.O
open! No_io
let gen_rules sctx ~dir ~scope (t : Jbuild.Menhir.t) = let gen_rules sctx ~dir ~scope (t : Jbuild.Menhir.t) =
let targets n = List.map ~f:(Path.relative dir) [n ^ ".ml"; n ^ ".mli"] in let targets n = List.map ~f:(Path.relative dir) [n ^ ".ml"; n ^ ".mli"] in
let flags = let flags =
List.map ~f:(Super_context.expand_vars sctx ~scope ~dir) t.flags in Super_context.expand_and_eval_set sctx ~scope ~dir t.flags
~standard:[] in
let menhir = let menhir =
let menhir = let menhir =
Super_context.resolve_program sctx ~hint:"opam install menhir" "menhir" in Super_context.resolve_program sctx ~hint:"opam install menhir" "menhir" in
fun ~extra_targets -> fun ~extra_targets args->
Build.run ~extra_targets flags
menhir >>> (Build.run ~extra_targets
~dir menhir
~context:(Super_context.context sctx) in ~dir
~context:(Super_context.context sctx)
args) in
let add_rule_get_targets = let add_rule_get_targets =
Super_context.add_rule_get_targets sctx ~mode:t.mode ~loc:t.loc in Super_context.add_rule_get_targets sctx ~mode:t.mode ~loc:t.loc in
let mly name = Path.relative dir (name ^ ".mly") in let mly name = Path.relative dir (name ^ ".mly") in
@ -21,7 +26,7 @@ let gen_rules sctx ~dir ~scope (t : Jbuild.Menhir.t) =
add_rule_get_targets ( add_rule_get_targets (
menhir menhir
~extra_targets:(targets name) ~extra_targets:(targets name)
[ As flags [ Dyn (fun x -> As x)
; Dep (mly name)] ; Dep (mly name)]
)) t.modules )) t.modules
| Some merge_into -> | Some merge_into ->
@ -29,7 +34,7 @@ let gen_rules sctx ~dir ~scope (t : Jbuild.Menhir.t) =
menhir menhir
~extra_targets:(targets merge_into) ~extra_targets:(targets merge_into)
[ A "--base" ; A merge_into [ A "--base" ; A merge_into
; As flags ; Dyn (fun x -> As x)
; Deps (List.map ~f:mly t.modules) ; Deps (List.map ~f:mly t.modules)
] ]
) )