@@ -545,6 +545,11 @@ module Diagnostic = struct
545545 enum [ " error" , Error ; " warning" , Warning ]
546546 ;;
547547
548+ let severity_to_dyn = function
549+ | Error -> Dyn. string " error"
550+ | Warning -> Dyn. string " warning"
551+ ;;
552+
548553 let sexp =
549554 let open Conv in
550555 let from { targets; message; loc; severity; promotion; directory; id; related } =
@@ -708,9 +713,10 @@ module Compound_user_error = struct
708713 type t =
709714 { main : User_message .t
710715 ; related : User_message .t list
716+ ; severity : Diagnostic .severity
711717 }
712718
713- let create ~main ~related =
719+ let create ~main ~related ~ severity =
714720 let () =
715721 List. iter related ~f: (fun (related : User_message.t ) ->
716722 match related.loc with
@@ -720,31 +726,33 @@ module Compound_user_error = struct
720726 " related messages must have locations"
721727 [ " related" , String (Stdune.User_message. to_string related) ])
722728 in
723- { main; related }
729+ { main; related; severity }
724730 ;;
725731
726732 let sexp =
727733 let open Conv in
728- let from { main; related } = main, related in
729- let to_ (main , related ) = create ~main ~related in
734+ let from { main; related; severity } = main, related, severity in
735+ let to_ (main , related , severity ) = create ~main ~related ~severity in
730736 let main = field " main" (required User_message. sexp_without_annots) in
731737 let related = field " related" (required (list User_message. sexp_without_annots)) in
732- iso (record (both main related)) to_ from
738+ let severity = field " severity" (required Diagnostic. sexp_severity) in
739+ iso (record (three main related severity)) to_ from
733740 ;;
734741
735- let to_dyn { main; related } =
742+ let to_dyn { main; related; severity } =
736743 let open Dyn in
737744 record
738745 [ " main" , string (Stdune.User_message. to_string main)
739746 ; " related" , (list string ) (List. map related ~f: Stdune.User_message. to_string)
747+ ; " severity" , Diagnostic. severity_to_dyn severity
740748 ]
741749 ;;
742750
743751 let annot =
744752 Stdune.User_message.Annots.Key. create ~name: " compound-user-error" (Dyn. list to_dyn)
745753 ;;
746754
747- let make ~main ~related = create ~main ~related
755+ let make ~main ~related ~ severity = create ~main ~related ~severity
748756
749757 let make_loc ~dir { Ocamlc_loc. path; chars; lines } : Stdune.Loc.t =
750758 let pos_fname =
@@ -777,7 +785,15 @@ module Compound_user_error = struct
777785 in
778786 let main = make_message (report.loc, report.message) in
779787 let related = List. map report.related ~f: make_message in
780- make ~main ~related )
788+ let severity : Diagnostic.severity =
789+ match report.severity with
790+ | Error _ -> Error
791+ | Warning _ -> Warning
792+ | Alert _ ->
793+ (* FIXME: tests expect this, but it's unclear if that should change. *)
794+ Error
795+ in
796+ make ~main ~related ~severity )
781797 ;;
782798end
783799
@@ -814,25 +830,17 @@ end
814830module Files_to_promote = struct
815831 type t =
816832 | All
817- | These of Stdune.Path.Source .t list * (Stdune.Path.Source .t -> unit )
818-
819- let on_missing fn =
820- Stdune.User_warning. emit
821- [ Pp. paragraphf
822- " Nothing to promote for %s."
823- (Stdune.Path.Source. to_string_maybe_quoted fn)
824- ]
825- ;;
833+ | These of Stdune.Path.Source .t list
826834
827835 let sexp =
828836 let open Conv in
829837 let to_ = function
830838 | [] -> All
831- | paths -> These (List. map ~f: Stdune.Path.Source. of_string paths, on_missing )
839+ | paths -> These (List. map ~f: Stdune.Path.Source. of_string paths)
832840 in
833841 let from = function
834842 | All -> []
835- | These ( paths , _ ) -> List. map ~f: Stdune.Path.Source. to_string paths
843+ | These paths -> List. map ~f: Stdune.Path.Source. to_string paths
836844 in
837845 iso (list Path. sexp) to_ from
838846 ;;
0 commit comments