@@ -8,8 +8,7 @@ module Reporting.Exit.Compile
11−import Data.List.NonEmpty (NonEmpty((:|)))
12−import qualified Data.List.NonEmpty as NonEmpty
11+import qualified Data.List as List
13import qualified Data.Text as Text
12import qualified Data.Text as Text
14import qualified Data.Time.Clock as Time
13import qualified Data.Time.Clock as Time
15import qualified Text.PrettyPrint.ANSI.Leijen as P
14import qualified Text.PrettyPrint.ANSI.Leijen as P
@@ -48,9 +47,10 @@ toJson (Exit name path _ source errors) =
49toDoc :: Exit -> [Exit] -> P.Doc
48toDoc :: Exit -> [Exit] -> P.Doc
50toDoc e es =
49toDoc e es =
51− case NonEmpty.sortWith _time (e :| es) of
50+ let
52− exit :| exits ->
51+ (exit, exits) = sortByTime e es
53− P.vcat (toDocHelp exit exits)
53+ P.vcat (toDocHelp exit exits)
56toDocHelp :: Exit -> [Exit] -> [P.Doc]
56toDocHelp :: Exit -> [Exit] -> [P.Doc]
@@ -81,3 +81,25 @@ separator beforeName afterName =
90+sortByTime :: Exit -> [Exit] -> (Exit, [Exit])
91+sortByTime exit exits =
92+ case List.sortBy timeCompare exits of
97+ if _time exit < _time e then
100+ (e, List.insertBy timeCompare exit es)
103+timeCompare :: Exit -> Exit -> Ordering
105+ compare (_time e1) (_time e2)