kazu-yamamoto / logger

A fast logging system for Haskell
159 stars 68 forks source link

Fix the GHC 8.2 build #122

Closed RyanGlScott closed 7 years ago

RyanGlScott commented 7 years ago

Currently, monad-logger fails to build on GHC 8.2, giving this error:

[1 of 2] Compiling Control.Monad.Logger ( Control/Monad/Logger.hs, dist/build/Control/Monad/Logger.o )

Control/Monad/Logger.hs:203:13: error:
    • The default type signature for monadLoggerLog:
        forall (t :: (* -> *) -> * -> *) msg.
        (Trans.MonadTrans t, MonadLogger (t m), ToLogStr msg) =>
        Loc -> LogSource -> LogLevel -> msg -> t m ()
      does not match its corresponding non-default type signature
    • When checking the class method:
        monadLoggerLog :: forall (m :: * -> *).
                          MonadLogger m =>
                          forall msg.
                          ToLogStr msg =>
                          Loc -> LogSource -> LogLevel -> msg -> m ()
      In the class declaration for ‘MonadLogger’
    |
203 |     default monadLoggerLog :: (Trans.MonadTrans t, MonadLogger (t m), ToLogStr msg)
    |             ^^^^^^^^^^^^^^

This is because the validity checking for default type signatures tightened up in GHC 8.2 (see also GHC Trac #12918). In particular, GHC requires that the default type signature of a method must be the same as the non-default type signature, modulo constraints.

This PR fixes the default type signature for monadLoggerLog to meet this criterion.

snoyberg commented 7 years ago

Thanks!