-Winferred-safe-imports exits with an error.
Looks like similar issue to !3295 (closed) is happening in GHC-9.0.2 .. 9.4.4
If I try to build with parsec-3.1.15.1
against old mtl-2.2.1
:
% cabal build -w ghc-9.4.3 --constraint=mtl==2.2.1
Warning: Unknown/unsupported 'ghc' version detected (Cabal 3.6.2.0 supports
'ghc' version < 9.4): /opt/ghc/bin/ghc-9.4.3 is version 9.4.3
Resolving dependencies...
Build profile: -w ghc-9.4.3 -O1
In order, the following will be built (use -v for more details):
- mtl-2.2.1 (lib:mtl) (requires build)
- parsec-3.1.15.1 (lib) (first run)
Starting mtl-2.2.1 (all, legacy fallback)
Building mtl-2.2.1 (all, legacy fallback)
Installing mtl-2.2.1 (all, legacy fallback)
Completed mtl-2.2.1 (all, legacy fallback)
Configuring library for parsec-3.1.15.1..
Preprocessing library for parsec-3.1.15.1..
Building library for parsec-3.1.15.1..
[ 1 of 25] Compiling Text.Parsec.Pos ( src/Text/Parsec/Pos.hs, /code/other-haskell/parsec/dist-newstyle/build/x86_64-linux/ghc-9.4.3/parsec-3.1.15.1/build/Text/Parsec/Pos.o, /code/other-haskell/parsec/dist-newstyle/build/x86_64-linux/ghc-9.4.3/parsec-3.1.15.1/build/Text/Parsec/Pos.dyn_o )
[ 2 of 25] Compiling Text.Parsec.Error ( src/Text/Parsec/Error.hs, /code/other-haskell/parsec/dist-newstyle/build/x86_64-linux/ghc-9.4.3/parsec-3.1.15.1/build/Text/Parsec/Error.o, /code/other-haskell/parsec/dist-newstyle/build/x86_64-linux/ghc-9.4.3/parsec-3.1.15.1/build/Text/Parsec/Error.dyn_o )
[ 3 of 25] Compiling Text.Parsec.Prim ( src/Text/Parsec/Prim.hs, /code/other-haskell/parsec/dist-newstyle/build/x86_64-linux/ghc-9.4.3/parsec-3.1.15.1/build/Text/Parsec/Prim.o, /code/other-haskell/parsec/dist-newstyle/build/x86_64-linux/ghc-9.4.3/parsec-3.1.15.1/build/Text/Parsec/Prim.dyn_o )
src/Text/Parsec/Prim.hs:103:1: warning: [-Winferred-safe-imports]
Importing Safe-Inferred module Control.Monad.Trans from explicitly Safe module
|
103 | import Control.Monad.Trans (MonadTrans (lift), MonadIO (liftIO))
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/Text/Parsec/Prim.hs:104:1: warning: [-Winferred-safe-imports]
Importing Safe-Inferred module Control.Monad.Identity from explicitly Safe module
|
104 | import Control.Monad.Identity (Identity, runIdentity)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/Text/Parsec/Prim.hs:107:1: warning: [-Winferred-safe-imports]
Importing Safe-Inferred module Control.Monad.Reader.Class from explicitly Safe module
|
107 | import Control.Monad.Reader.Class (MonadReader (..))
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/Text/Parsec/Prim.hs:108:1: warning: [-Winferred-safe-imports]
Importing Safe-Inferred module Control.Monad.State.Class from explicitly Safe module
|
108 | import Control.Monad.State.Class (MonadState (..))
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/Text/Parsec/Prim.hs:109:1: warning: [-Winferred-safe-imports]
Importing Safe-Inferred module Control.Monad.Cont.Class from explicitly Safe module
|
109 | import Control.Monad.Cont.Class (MonadCont (..))
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/Text/Parsec/Prim.hs:110:1: warning: [-Winferred-safe-imports]
Importing Safe-Inferred module Control.Monad.Error.Class from explicitly Safe module
|
110 | import Control.Monad.Error.Class (MonadError (..))
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[18 of 25] Compiling Text.ParserCombinators.Parsec.Error ( src/Text/ParserCombinators/Parsec/Error.hs, /code/other-haskell/parsec/dist-newstyle/build/x86_64-linux/ghc-9.4.3/parsec-3.1.15.1/build/Text/ParserCombinators/Parsec/Error.o, /code/other-haskell/parsec/dist-newstyle/build/x86_64-linux/ghc-9.4.3/parsec-3.1.15.1/build/Text/ParserCombinators/Parsec/Error.dyn_o )
[21 of 25] Compiling Text.ParserCombinators.Parsec.Pos ( src/Text/ParserCombinators/Parsec/Pos.hs, /code/other-haskell/parsec/dist-newstyle/build/x86_64-linux/ghc-9.4.3/parsec-3.1.15.1/build/Text/ParserCombinators/Parsec/Pos.o, /code/other-haskell/parsec/dist-newstyle/build/x86_64-linux/ghc-9.4.3/parsec-3.1.15.1/build/Text/ParserCombinators/Parsec/Pos.dyn_o )
and it fails.
If I comment out the -Winferred-safe-imports
in the parsec.cabal
, the build succeeds.