diff options
Diffstat (limited to 'compiler/main/ErrUtils.hs')
| -rw-r--r-- | compiler/main/ErrUtils.hs | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/compiler/main/ErrUtils.hs b/compiler/main/ErrUtils.hs index d73628a87e..8e71847e1d 100644 --- a/compiler/main/ErrUtils.hs +++ b/compiler/main/ErrUtils.hs @@ -378,11 +378,15 @@ pprLocErrMsg (ErrMsg { errMsgSpan = s mkLocMessage sev s (formatErrDoc dflags doc) sortMsgBag :: Maybe DynFlags -> Bag ErrMsg -> [ErrMsg] -sortMsgBag dflags = sortBy (maybeFlip $ comparing errMsgSpan) . bagToList +sortMsgBag dflags = maybeLimit . sortBy (maybeFlip cmp) . bagToList where maybeFlip :: (a -> a -> b) -> (a -> a -> b) maybeFlip | fromMaybe False (fmap reverseErrors dflags) = flip | otherwise = id + cmp = comparing errMsgSpan + maybeLimit = case join (fmap maxErrors dflags) of + Nothing -> id + Just err_limit -> take err_limit ghcExit :: DynFlags -> Int -> IO () ghcExit dflags val |
