From aee019577be0a32685d784de2f4da148e5540cb2 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Tue, 3 Jul 2018 13:54:42 +0700 Subject: [PATCH] Change fallback check to use ?check param Signed-off-by: Rudi Grinberg --- src/jbuild.ml | 8 +++----- src/stdune/sexp.ml | 5 +++-- src/stdune/sexp.mli | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/jbuild.ml b/src/jbuild.ml index e6e6c150..9a2c780d 100644 --- a/src/jbuild.ml +++ b/src/jbuild.ml @@ -1129,11 +1129,9 @@ module Rule = struct field "deps" (list Dep_conf.t) ~default:[] >>= fun deps -> field "locks" (list String_with_vars.t) ~default:[] >>= fun locks -> map_validate - (field_b "fallback" >>= fun fallback -> - (if fallback then - Syntax.renamed_in Stanza.syntax (1, 0) ~to_:"(mode fallback)" - else - return ()) >>= fun () -> + (field_b + ~check:(Syntax.renamed_in Stanza.syntax (1, 0) ~to_:"(mode fallback)") + "fallback" >>= fun fallback -> field_o "mode" Mode.t >>= fun mode -> return (fallback, mode)) ~f:(function diff --git a/src/stdune/sexp.ml b/src/stdune/sexp.ml index 4ef365ff..e98d1886 100644 --- a/src/stdune/sexp.ml +++ b/src/stdune/sexp.ml @@ -481,9 +481,10 @@ module Of_sexp = struct | None -> (None, add_known name state) - let field_b name = + let field_b ?check name = field name ~default:false - (eos >>= function + (Option.value check ~default:(return ()) >>= fun () -> + eos >>= function | true -> return true | _ -> bool) diff --git a/src/stdune/sexp.mli b/src/stdune/sexp.mli index f1f62e3b..6c147db1 100644 --- a/src/stdune/sexp.mli +++ b/src/stdune/sexp.mli @@ -216,7 +216,7 @@ module Of_sexp : sig -> 'a t -> 'a option fields_parser - val field_b : string -> bool fields_parser + val field_b : ?check:(unit t) -> string -> bool fields_parser (** A field that can appear multiple times *) val multi_field