Make HasDynFlags more transformers friendly
authorHerbert Valerio Riedel <hvr@gnu.org>
Tue, 8 Dec 2015 10:11:11 +0000 (11:11 +0100)
committerHerbert Valerio Riedel <hvr@gnu.org>
Tue, 8 Dec 2015 10:15:49 +0000 (11:15 +0100)
commitfd3b845c01aa26b6e5cd12c00af59e5468e21b1b
treea6048cc545e9db073a1213aaa03ad02c8ef66531
parent9f4ca5afaccc8a397d8ee91b5423a9c2fcd151ce
Make HasDynFlags more transformers friendly

Ideally, we'd have the more general

    instance (MonadTrans t, Monad m, HasDynFlags m) => HasDynFlags (t m) where
        getDynFlags = lift getDynFlags

definition. However, that one would overlap with the `HasDynFlags (GhcT m)`
instance. Instead we define instances for a couple of common Monad
transformers explicitly in order to avoid nasty overlapping instances.

This is a preparatory refactoring for #10874

Reviewed By: austin

Differential Revision: https://phabricator.haskell.org/D1581
compiler/llvmGen/LlvmCodeGen/CodeGen.hs
compiler/main/DynFlags.hs
compiler/main/GhcMonad.hs
ghc/InteractiveUI.hs