Skip to content

Commit

Permalink
Support (enabled_for)
Browse files Browse the repository at this point in the history
Signed-off-by: Etienne Millon <me@emillon.org>
  • Loading branch information
emillon committed Jul 29, 2019
1 parent 1dc47c5 commit 8e03630
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 9 deletions.
30 changes: 21 additions & 9 deletions src/format_config.ml
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,15 @@ type enabled_for =
| Default of Syntax.Version.t
| Only of language list

let enabled_for_of_list ~dune_lang_version = function
| Some l -> Only l
| None -> Default dune_lang_version

let enabled_for_field =
let+ r = field_o "enabled_for" (repeat (map ~f:language string))
and+ version = Syntax.get_exn syntax
and+ dune_lang_version = Syntax.get_exn syntax
in
match r with
| Some l -> Only l
| None -> Default version
enabled_for_of_list ~dune_lang_version r

let enabled_for_to_dyn =
let open Dyn.Encoder in
Expand Down Expand Up @@ -71,11 +73,19 @@ let includes config =
| Only l ->
fun language -> List.mem language ~set:l

let loc t = t.loc
let dune2_record_syntax ~dune_lang_version =
let+ loc = loc
and+ ef = field_o "enabled_for" (repeat (map ~f:language string))
in
let enabled_for =
enabled_for_of_list ~dune_lang_version ef
in
Some {loc; enabled_for}

let dune2_dec =
keyword "disabled" >>= fun () ->
return None
let dune2_dec ~dune_lang_version =
if_list
~then_:(record (dune2_record_syntax ~dune_lang_version))
~else_:(keyword "disabled" >>= fun () -> return None)

let dune2_default ~dune_lang_version =
Some
Expand All @@ -84,7 +94,7 @@ let dune2_default ~dune_lang_version =
}

let field_dune2 ~dune_lang_version =
field_o "formatting" dune2_dec
field_o "formatting" (dune2_dec ~dune_lang_version)
>>| function
| None ->
dune2_default ~dune_lang_version
Expand All @@ -96,3 +106,5 @@ let field =
| Lt -> return None
| Gt | Eq ->
field_dune2 ~dune_lang_version

let loc t = t.loc
11 changes: 11 additions & 0 deletions test/blackbox-tests/test-cases/formatting/run.t
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,10 @@ Formatting can be checked using the @fmt target:
File "lang2/default/e.ml", line 1, characters 0-0:
Error: Files _build/default/lang2/default/e.ml and
_build/default/lang2/default/.formatted/e.ml differ.
ocamlformat lang2/partial/.formatted/a.ml
File "lang2/partial/a.ml", line 1, characters 0-0:
Error: Files _build/default/lang2/partial/a.ml and
_build/default/lang2/partial/.formatted/a.ml differ.
ocamlformat partial/.formatted/a.ml
File "partial/a.ml", line 1, characters 0-0:
Error: Files _build/default/partial/a.ml and
Expand Down Expand Up @@ -82,6 +86,9 @@ Configuration files are taken into account for this action:
File "lang2/default/dune", line 1, characters 0-0:
Error: Files _build/default/lang2/default/dune and
_build/default/lang2/default/.formatted/dune differ.
File "lang2/partial/a.ml", line 1, characters 0-0:
Error: Files _build/default/lang2/partial/a.ml and
_build/default/lang2/partial/.formatted/a.ml differ.
File "partial/a.ml", line 1, characters 0-0:
Error: Files _build/default/partial/a.ml and
_build/default/partial/.formatted/a.ml differ.
Expand Down Expand Up @@ -143,6 +150,10 @@ All .ocamlformat files are considered dependencies:
File "lang2/default/e.ml", line 1, characters 0-0:
Error: Files _build/default/lang2/default/e.ml and
_build/default/lang2/default/.formatted/e.ml differ.
ocamlformat lang2/partial/.formatted/a.ml
File "lang2/partial/a.ml", line 1, characters 0-0:
Error: Files _build/default/lang2/partial/a.ml and
_build/default/lang2/partial/.formatted/a.ml differ.
ocamlformat partial/.formatted/a.ml
File "partial/a.ml", line 1, characters 0-0:
Error: Files _build/default/partial/a.ml and
Expand Down

0 comments on commit 8e03630

Please sign in to comment.