Admin message

Due to a large amount of spam we do not allow new users to create repositories, they are "external" users. If you are a new user and want to create a repository, for example for forking GHC, open a new issue on ghc/ghc using the "get-verified" issue template

GHC 9.6 incorrect redundant constraint warning with generalized newtype deriving
## Summary GHC 9.6 introduces a new `-Wredundant-constraints` warning in derived code. This is not present in 9.4. It is also not present in a manually written instance. I believe that the constraint is actually necessary. ## Steps to reproduce Compile the following code with GHC 9.6, mtl-2.3.1 and transformers-0.6.1.0: ```haskell {-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE QuantifiedConstraints #-} {-# LANGUAGE InstanceSigs #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE ScopedTypeVariables #-} module Bug where import Control.Monad.Reader import Control.Applicative import Data.Coerce newtype NullDbT m a = NullDbT {unNullDbT :: ReaderT Int m a} deriving newtype ( Functor , Applicative , Alternative , Monad , MonadTrans -- GHC complains the monad constraint is redundant ) class (forall m. Monad m => Monad (t m)) => C t where myLift :: Monad m => m a -> t m a instance C NullDbT where -- Monad constraint is required (GHC errors if it is not present, with either implementation) myLift :: forall m a . Monad m => m a -> NullDbT m a --myLift x = NullDbT (lift @(ReaderT Int) x) myLift = coerce @(m a -> ReaderT Int m a) @(m a -> NullDbT m a) (lift @(ReaderT Int)) ``` ## Expected behavior I expect consistent warnings/errors between the derived code and a manually written copy. In particular here, I believe that the constraint is necessary, since it is needed for the `lift @(ReaderT Int)` call. ## Environment * GHC version used: 9.6 Optional: * Operating System: NixOS * System Architecture: x86_64
issue