Marge Bot pushed to branch wip/marge_bot_batch_merge_job at Glasgow Haskell Compiler / GHC

Commits:

25 changed files:

Changes:

  • compiler/GHC/Builtin/Names.hs
    ... ... @@ -1489,7 +1489,9 @@ composeAName = varQual gHC_INTERNAL_DESUGAR (fsLit ">>>") composeAIdKey
    1489 1489
     firstAName         = varQual gHC_INTERNAL_ARROW (fsLit "first")     firstAIdKey
    
    1490 1490
     appAName           = varQual gHC_INTERNAL_ARROW (fsLit "app")       appAIdKey
    
    1491 1491
     choiceAName        = varQual gHC_INTERNAL_ARROW (fsLit "|||")       choiceAIdKey
    
    1492
    -loopAName          = varQual gHC_INTERNAL_ARROW (fsLit "loop")      loopAIdKey
    
    1492
    +-- This is defined in Monad.Fix to flatten the module hierarchy of `ghc-internal`
    
    1493
    +-- It is the only thing from Control.Arrow that requires MonadFix
    
    1494
    +loopAName          = varQual gHC_INTERNAL_MONAD_FIX (fsLit "loop")      loopAIdKey
    
    1493 1495
     
    
    1494 1496
     -- Monad comprehensions
    
    1495 1497
     guardMName, mzipName :: Name
    

  • docs/users_guide/10.0.1-notes.rst
    1
    +.. _release-10-0-1:
    
    2
    +
    
    3
    +Version 10.0.1
    
    4
    +==============
    
    5
    +
    
    6
    +Language
    
    7
    +~~~~~~~~
    
    8
    +
    
    9
    +Compiler
    
    10
    +~~~~~~~~
    
    11
    +
    
    12
    +GHCi
    
    13
    +~~~~
    
    14
    +
    
    15
    +- Added the :ghci-cmd:`:version` command. This displays the current GHC version.
    
    16
    +
    
    17
    +Runtime system
    
    18
    +~~~~~~~~~~~~~~
    
    19
    +
    
    20
    +``base`` library
    
    21
    +~~~~~~~~~~~~~~~~
    
    22
    +
    
    23
    +``ghc-prim`` library
    
    24
    +~~~~~~~~~~~~~~~~~~~~
    
    25
    +
    
    26
    +``ghc`` library
    
    27
    +~~~~~~~~~~~~~~~
    
    28
    +
    
    29
    +``ghc-heap`` library
    
    30
    +~~~~~~~~~~~~~~~~~~~~
    
    31
    +
    
    32
    +``template-haskell`` library
    
    33
    +~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    34
    +
    
    35
    +Included libraries
    
    36
    +~~~~~~~~~~~~~~~~~~

  • docs/users_guide/ghci.rst
    ... ... @@ -3140,6 +3140,10 @@ commonly used commands.
    3140 3140
     
    
    3141 3141
         The :ghci-cmd:`:uses` command requires :ghci-cmd:`:set +c` to be set.
    
    3142 3142
     
    
    3143
    +.. ghci-cmd:: :version
    
    3144
    +
    
    3145
    +    Display the current GHC version.
    
    3146
    +
    
    3143 3147
     .. ghci-cmd:: :where
    
    3144 3148
     
    
    3145 3149
        Show the current evaluation stack while stopped at a breakpoint.
    

  • ghc/GHCi/UI.hs
    ... ... @@ -193,9 +193,11 @@ defaultGhciSettings =
    193 193
             fullHelpText      = defFullHelpText
    
    194 194
         }
    
    195 195
     
    
    196
    +versionString :: String
    
    197
    +versionString = "GHCi, version " ++ cProjectVersion
    
    198
    +
    
    196 199
     ghciWelcomeMsg :: String
    
    197
    -ghciWelcomeMsg = "GHCi, version " ++ cProjectVersion ++
    
    198
    -                 ": https://www.haskell.org/ghc/  :? for help"
    
    200
    +ghciWelcomeMsg = versionString ++ ": https://www.haskell.org/ghc/  :? for help"
    
    199 201
     
    
    200 202
     ghciCommands :: [Command]
    
    201 203
     ghciCommands = map mkCmd [
    
    ... ... @@ -253,6 +255,7 @@ ghciCommands = map mkCmd [
    253 255
       ("unadd",     keepGoingPaths unAddModule,     completeFilename),
    
    254 256
       ("undef",     keepGoing undefineMacro,        completeMacro),
    
    255 257
       ("unset",     keepGoing unsetOptions,         completeSetOptions),
    
    258
    +  ("version",   keepGoing showVersion',         noCompletion),
    
    256 259
       ("where",     keepGoing whereCmd,             noCompletion),
    
    257 260
       ("instances", keepGoing' instancesCmd,        completeExpression)
    
    258 261
       ] ++ map mkCmdHidden [ -- hidden commands
    
    ... ... @@ -366,6 +369,7 @@ defFullHelpText =
    366 369
       "   :type +d <expr>             show the type of <expr>, defaulting type variables\n" ++
    
    367 370
       "   :unadd <module> ...         remove module(s) from the current target set\n" ++
    
    368 371
       "   :undef <cmd>                undefine user-defined command :<cmd>\n" ++
    
    372
    +  "   :version                    display the current GHC version\n" ++
    
    369 373
       "   ::<cmd>                     run the builtin command\n" ++
    
    370 374
       "   :!<command>                 run the shell command <command>\n" ++
    
    371 375
       "   :shell <command>            run shell via sh -c <command>\n" ++
    
    ... ... @@ -3626,6 +3630,9 @@ unsetOptions str
    3626 3630
                  no_flags <- mapM no_flag minus_opts
    
    3627 3631
                  when (not (null no_flags)) $ newDynFlags False no_flags
    
    3628 3632
     
    
    3633
    +showVersion' :: GhciMonad m => String -> m ()
    
    3634
    +showVersion' _ = liftIO (putStrLn versionString)
    
    3635
    +
    
    3629 3636
     isMinus :: String -> Bool
    
    3630 3637
     isMinus ('-':_) = True
    
    3631 3638
     isMinus _ = False
    

  • hadrian/build-cabal
    ... ... @@ -23,9 +23,52 @@ fi
    23 23
     CABVERSTR=$("$CABAL" --numeric-version)
    
    24 24
     CABVER=( ${CABVERSTR//./ } )
    
    25 25
     
    
    26
    +THREADS="-j1"
    
    27
    +GC_THREADS=""
    
    28
    +SEMAPHORE=""
    
    29
    +
    
    30
    +echo "$@"
    
    31
    +
    
    32
    +# Try building hadrian in parallel. We check for -j<n>.
    
    33
    +# If threads > 1 we pass --semaphore to allow ghc to build more than one module in parallel
    
    34
    +# If threads > 4 we pass -qn as higher parallel gc thread counts can lead to slow downs
    
    35
    +# We only do any of thise for cabal >= 3.14, because I don't trust older versions to handle --semaphore right
    
    36
    +if [ "${CABVER[0]}" -gt 3 ] || [ "${CABVER[0]}" -eq 3 -a "${CABVER[1]}" -ge 14 ];
    
    37
    +then
    
    38
    +
    
    39
    +    for arg in "$@"; do
    
    40
    +        case "$arg" in
    
    41
    +            -j)
    
    42
    +                GC_THREADS="-qn4"
    
    43
    +                SEMAPHORE="--semaphore"
    
    44
    +                THREADS="-j"
    
    45
    +                ;;
    
    46
    +            -j[0-9]*)
    
    47
    +                threads="${arg#-j}"
    
    48
    +                if [[ "$threads" =~ ^[0-9]+$ ]] && [ "$threads" -ne 0 ]; then
    
    49
    +                    THREADS="-j${threads}"
    
    50
    +                    if [ $threads -ge 4 ]; then
    
    51
    +                      GC_THREADS="-qn4"
    
    52
    +                    fi
    
    53
    +                    if [ $threads -gt 1 ]; then
    
    54
    +                        SEMAPHORE="--semaphore"
    
    55
    +                    fi
    
    56
    +                fi
    
    57
    +                ;;
    
    58
    +        esac
    
    59
    +
    
    60
    +    done
    
    61
    +
    
    62
    +fi
    
    63
    +
    
    64
    +if [ "$(uname -s)" = "FreeBSD" ]; then
    
    65
    +    # Can't rely on posix semaphore support in free bsd.
    
    66
    +    SEMAPHORE=""
    
    67
    +fi
    
    68
    +
    
    26 69
     if [ "${CABVER[0]}" -gt 2 -o "${CABVER[0]}" -eq 2 -a "${CABVER[1]}" -ge 2 ];
    
    27 70
     then
    
    28
    -    "$CABAL" --project-file="$PROJ" new-build "${CABFLAGS[@]}" -j exe:hadrian
    
    71
    +    "$CABAL" --project-file="$PROJ" new-build "${CABFLAGS[@]}" ${THREADS} ${SEMAPHORE} --ghc-options="+RTS ${GC_THREADS} -RTS" exe:hadrian
    
    29 72
         # use new-exec instead of new-run to make sure that the build-tools (alex & happy) are in PATH
    
    30 73
         "$CABAL" --project-file="$PROJ" new-exec  "${CABFLAGS[@]}"    hadrian -- \
    
    31 74
             --directory "$PWD" \
    

  • libraries/base/src/Control/Arrow.hs
    ... ... @@ -50,3 +50,4 @@ module Control.Arrow
    50 50
          ) where
    
    51 51
     
    
    52 52
     import GHC.Internal.Control.Arrow
    
    53
    +import GHC.Internal.Control.Monad.Fix (ArrowLoop(..))

  • libraries/base/src/System/IO.hs
    ... ... @@ -185,6 +185,7 @@ module System.IO
    185 185
          ) where
    
    186 186
     
    
    187 187
     import GHC.Internal.System.IO
    
    188
    +import GHC.Internal.Control.Monad.Fix (fixIO)
    
    188 189
     
    
    189 190
     -- $locking
    
    190 191
     -- Implementations should enforce as far as possible, at least locally to the
    

  • libraries/ghc-internal/src/GHC/Internal/Control/Arrow.hs
    ... ... @@ -45,13 +45,10 @@ module GHC.Internal.Control.Arrow (
    45 45
         ArrowChoice(..),
    
    46 46
         -- * Arrow application
    
    47 47
         ArrowApply(..), ArrowMonad(..), leftApp,
    
    48
    -    -- * Feedback
    
    49
    -    ArrowLoop(..)
    
    50 48
         ) where
    
    51 49
     
    
    52
    -import GHC.Internal.Data.Tuple ( fst, snd, uncurry )
    
    50
    +import GHC.Internal.Data.Tuple ( uncurry )
    
    53 51
     import GHC.Internal.Data.Either
    
    54
    -import GHC.Internal.Control.Monad.Fix
    
    55 52
     import GHC.Internal.Control.Category
    
    56 53
     import GHC.Internal.Base hiding ( (.), id )
    
    57 54
     import GHC.Internal.Generics (Generic, Generic1)
    
    ... ... @@ -419,55 +416,3 @@ leftApp :: ArrowApply a => a b c -> a (Either b d) (Either c d)
    419 416
     leftApp f = arr ((\b -> (arr (\() -> b) >>> f >>> arr Left, ())) |||
    
    420 417
                  (\d -> (arr (\() -> d) >>> arr Right, ()))) >>> app
    
    421 418
     
    422
    --- | The 'loop' operator expresses computations in which an output value
    
    423
    --- is fed back as input, although the computation occurs only once.
    
    424
    --- It underlies the @rec@ value recursion construct in arrow notation.
    
    425
    --- 'loop' should satisfy the following laws:
    
    426
    ---
    
    427
    --- [/extension/]
    
    428
    ---      @'loop' ('arr' f) = 'arr' (\\ b -> 'fst' ('fix' (\\ (c,d) -> f (b,d))))@
    
    429
    ---
    
    430
    --- [/left tightening/]
    
    431
    ---      @'loop' ('first' h >>> f) = h >>> 'loop' f@
    
    432
    ---
    
    433
    --- [/right tightening/]
    
    434
    ---      @'loop' (f >>> 'first' h) = 'loop' f >>> h@
    
    435
    ---
    
    436
    --- [/sliding/]
    
    437
    ---      @'loop' (f >>> 'arr' ('id' *** k)) = 'loop' ('arr' ('id' *** k) >>> f)@
    
    438
    ---
    
    439
    --- [/vanishing/]
    
    440
    ---      @'loop' ('loop' f) = 'loop' ('arr' unassoc >>> f >>> 'arr' assoc)@
    
    441
    ---
    
    442
    --- [/superposing/]
    
    443
    ---      @'second' ('loop' f) = 'loop' ('arr' assoc >>> 'second' f >>> 'arr' unassoc)@
    
    444
    ---
    
    445
    --- where
    
    446
    ---
    
    447
    --- > assoc ((a,b),c) = (a,(b,c))
    
    448
    --- > unassoc (a,(b,c)) = ((a,b),c)
    
    449
    ---
    
    450
    -class Arrow a => ArrowLoop a where
    
    451
    -    -- |
    
    452
    -    --
    
    453
    -    -- >     ╭──────────────╮
    
    454
    -    -- >   b │     ╭───╮    │ c
    
    455
    -    -- > >───┼─────┤   ├────┼───>
    
    456
    -    -- >     │   ┌─┤   ├─┐  │
    
    457
    -    -- >     │ d │ ╰───╯ │  │
    
    458
    -    -- >     │   └───<───┘  │
    
    459
    -    -- >     ╰──────────────╯
    
    460
    -    loop :: a (b,d) (c,d) -> a b c
    
    461
    -
    
    462
    --- | @since base-2.01
    
    463
    -instance ArrowLoop (->) where
    
    464
    -    loop f b = let (c,d) = f (b,d) in c
    
    465
    -
    
    466
    --- | Beware that for many monads (those for which the '>>=' operation
    
    467
    --- is strict) this instance will /not/ satisfy the right-tightening law
    
    468
    --- required by the 'ArrowLoop' class.
    
    469
    ---
    
    470
    --- @since base-2.01
    
    471
    -instance MonadFix m => ArrowLoop (Kleisli m) where
    
    472
    -    loop (Kleisli f) = Kleisli (liftM fst . mfix . f')
    
    473
    -      where f' x y = f (x, snd y)

  • libraries/ghc-internal/src/GHC/Internal/Control/Monad/Fix.hs
    ... ... @@ -24,7 +24,10 @@
    24 24
     
    
    25 25
     module GHC.Internal.Control.Monad.Fix (
    
    26 26
             MonadFix(mfix),
    
    27
    -        fix
    
    27
    +        fix,
    
    28
    +        fixIO,
    
    29
    +        -- * Feedback for Arrow
    
    30
    +        ArrowLoop(..)
    
    28 31
       ) where
    
    29 32
     
    
    30 33
     import GHC.Internal.Data.Either
    
    ... ... @@ -34,12 +37,19 @@ import GHC.Internal.Data.Monoid ( Monoid, Dual(..), Sum(..), Product(..)
    34 37
                        , First(..), Last(..), Alt(..), Ap(..) )
    
    35 38
     import GHC.Internal.Data.NonEmpty ( NonEmpty(..) )
    
    36 39
     import GHC.Internal.Data.Ord ( Down(..) )
    
    37
    -import GHC.Internal.Data.Tuple ( Solo(..), snd )
    
    38
    -import GHC.Internal.Base ( Monad, errorWithoutStackTrace, (.) )
    
    40
    +import GHC.Internal.Data.Tuple ( Solo(..), fst, snd )
    
    41
    +import GHC.Internal.Base ( IO, Monad, errorWithoutStackTrace, (.), return, liftM )
    
    39 42
     import GHC.Internal.Generics
    
    40 43
     import GHC.Internal.List ( head, drop )
    
    41 44
     import GHC.Internal.Control.Monad.ST.Imp
    
    42
    -import GHC.Internal.System.IO
    
    45
    +import qualified GHC.Internal.Control.Monad.ST.Lazy.Imp as Lazy
    
    46
    +import GHC.Internal.Data.Functor.Identity (Identity(..))
    
    47
    +import GHC.Internal.MVar
    
    48
    +import GHC.Internal.IO.Unsafe
    
    49
    +import GHC.Internal.IO.Exception
    
    50
    +import GHC.Internal.TH.Monad
    
    51
    +import GHC.Internal.Control.Exception
    
    52
    +import GHC.Internal.Control.Arrow
    
    43 53
     
    
    44 54
     -- | Monads having fixed points with a \'knot-tying\' semantics.
    
    45 55
     -- Instances of 'MonadFix' should satisfy the following laws:
    
    ... ... @@ -102,6 +112,86 @@ instance MonadFix NonEmpty where
    102 112
     instance MonadFix IO where
    
    103 113
         mfix = fixIO
    
    104 114
     
    
    115
    +-- ---------------------------------------------------------------------------
    
    116
    +-- fixIO
    
    117
    +
    
    118
    +-- | The implementation of 'Control.Monad.Fix.mfix' for 'IO'.
    
    119
    +--
    
    120
    +-- This operation may fail with:
    
    121
    +--
    
    122
    +-- * 'FixIOException' if the function passed to 'fixIO' inspects its argument.
    
    123
    +--
    
    124
    +-- ==== __Examples__
    
    125
    +--
    
    126
    +-- the IO-action is only executed once. The recursion is only on the values.
    
    127
    +--
    
    128
    +-- >>> take 3 <$> fixIO (\x -> putStr ":D" >> (:x) <$> readLn @Int)
    
    129
    +-- :D
    
    130
    +-- 2
    
    131
    +-- [2,2,2]
    
    132
    +--
    
    133
    +-- If we are strict in the value, just as with 'Data.Function.fix', we do not get termination:
    
    134
    +--
    
    135
    +-- >>> fixIO (\x -> putStr x >> pure ('x' : x))
    
    136
    +-- * hangs forever *
    
    137
    +--
    
    138
    +-- We can tie the knot of a structure within 'IO' using 'fixIO':
    
    139
    +--
    
    140
    +-- @
    
    141
    +-- data Node = MkNode Int (IORef Node)
    
    142
    +--
    
    143
    +-- foo :: IO ()
    
    144
    +-- foo = do
    
    145
    +--   p \<- fixIO (\p -> newIORef (MkNode 0 p))
    
    146
    +--   q <- output p
    
    147
    +--   r <- output q
    
    148
    +--   _ <- output r
    
    149
    +--   pure ()
    
    150
    +--
    
    151
    +-- output :: IORef Node -> IO (IORef Node)
    
    152
    +-- output ref = do
    
    153
    +--   MkNode x p <- readIORef ref
    
    154
    +--   print x
    
    155
    +--   pure p
    
    156
    +-- @
    
    157
    +--
    
    158
    +-- >>> foo
    
    159
    +-- 0
    
    160
    +-- 0
    
    161
    +-- 0
    
    162
    +fixIO :: (a -> IO a) -> IO a
    
    163
    +fixIO k = do
    
    164
    +    m <- newEmptyMVar
    
    165
    +    ans <- unsafeDupableInterleaveIO
    
    166
    +             (readMVar m `catch` \BlockedIndefinitelyOnMVar ->
    
    167
    +                                    throwIO FixIOException)
    
    168
    +    result <- k ans
    
    169
    +    putMVar m result
    
    170
    +    return result
    
    171
    +
    
    172
    +-- Note [Blackholing in fixIO]
    
    173
    +-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    174
    +-- We do our own explicit black holing here, because GHC's lazy
    
    175
    +-- blackholing isn't enough.  In an infinite loop, GHC may run the IO
    
    176
    +-- computation a few times before it notices the loop, which is wrong.
    
    177
    +--
    
    178
    +-- NOTE2: the explicit black-holing with an IORef ran into trouble
    
    179
    +-- with multiple threads (see #5421), so now we use an MVar. We used
    
    180
    +-- to use takeMVar with unsafeInterleaveIO. This, however, uses noDuplicate#,
    
    181
    +-- which is not particularly cheap. Better to use readMVar, which can be
    
    182
    +-- performed in multiple threads safely, and to use unsafeDupableInterleaveIO
    
    183
    +-- to avoid the noDuplicate cost.
    
    184
    +--
    
    185
    +-- What we'd ideally want is probably an IVar, but we don't quite have those.
    
    186
    +-- STM TVars look like an option at first, but I don't think they are:
    
    187
    +-- we'd need to be able to write to the variable in an IO context, which can
    
    188
    +-- only be done using 'atomically', and 'atomically' is not allowed within
    
    189
    +-- unsafePerformIO. We can't know if someone will try to use the result
    
    190
    +-- of fixIO with unsafePerformIO!
    
    191
    +--
    
    192
    +-- See also System.IO.Unsafe.unsafeFixIO.
    
    193
    +--
    
    194
    +
    
    105 195
     -- | @since base-2.01
    
    106 196
     instance MonadFix ((->) r) where
    
    107 197
         mfix f = \ r -> let a = f a r in a
    
    ... ... @@ -116,6 +206,10 @@ instance MonadFix (Either e) where
    116 206
     instance MonadFix (ST s) where
    
    117 207
             mfix = fixST
    
    118 208
     
    
    209
    +-- | @since base-2.01
    
    210
    +instance MonadFix (Lazy.ST s) where
    
    211
    +        mfix = Lazy.fixST
    
    212
    +
    
    119 213
     -- Instances of Data.Monoid wrappers
    
    120 214
     
    
    121 215
     -- | @since base-4.8.0.0
    
    ... ... @@ -171,3 +265,77 @@ instance (MonadFix f, MonadFix g) => MonadFix (f :*: g) where
    171 265
     -- | @since base-4.12.0.0
    
    172 266
     instance MonadFix Down where
    
    173 267
         mfix f = Down (fix (getDown . f))
    
    268
    +
    
    269
    +
    
    270
    +-- | @since base-4.8.0.0
    
    271
    +instance MonadFix Identity where
    
    272
    +    mfix f   = Identity (fix (runIdentity . f))
    
    273
    +
    
    274
    +-- | If the function passed to 'mfix' inspects its argument,
    
    275
    +-- the resulting action will throw a 'FixIOException'.
    
    276
    +--
    
    277
    +-- @since 2.17.0.0
    
    278
    +instance MonadFix Q where
    
    279
    +  -- We use the same blackholing approach as in fixIO.
    
    280
    +  -- See Note [Blackholing in fixIO].
    
    281
    +  mfix k = do
    
    282
    +    m <- runIO newEmptyMVar
    
    283
    +    ans <- runIO (unsafeDupableInterleaveIO
    
    284
    +             (readMVar m `catch` \BlockedIndefinitelyOnMVar ->
    
    285
    +                                    throwIO FixIOException))
    
    286
    +    result <- k ans
    
    287
    +    runIO (putMVar m result)
    
    288
    +    return result
    
    289
    +
    
    290
    +-- | The 'loop' operator expresses computations in which an output value
    
    291
    +-- is fed back as input, although the computation occurs only once.
    
    292
    +-- It underlies the @rec@ value recursion construct in arrow notation.
    
    293
    +-- 'loop' should satisfy the following laws:
    
    294
    +--
    
    295
    +-- [/extension/]
    
    296
    +--      @'loop' ('arr' f) = 'arr' (\\ b -> 'fst' ('fix' (\\ (c,d) -> f (b,d))))@
    
    297
    +--
    
    298
    +-- [/left tightening/]
    
    299
    +--      @'loop' ('first' h >>> f) = h >>> 'loop' f@
    
    300
    +--
    
    301
    +-- [/right tightening/]
    
    302
    +--      @'loop' (f >>> 'first' h) = 'loop' f >>> h@
    
    303
    +--
    
    304
    +-- [/sliding/]
    
    305
    +--      @'loop' (f >>> 'arr' ('id' *** k)) = 'loop' ('arr' ('id' *** k) >>> f)@
    
    306
    +--
    
    307
    +-- [/vanishing/]
    
    308
    +--      @'loop' ('loop' f) = 'loop' ('arr' unassoc >>> f >>> 'arr' assoc)@
    
    309
    +--
    
    310
    +-- [/superposing/]
    
    311
    +--      @'second' ('loop' f) = 'loop' ('arr' assoc >>> 'second' f >>> 'arr' unassoc)@
    
    312
    +--
    
    313
    +-- where
    
    314
    +--
    
    315
    +-- > assoc ((a,b),c) = (a,(b,c))
    
    316
    +-- > unassoc (a,(b,c)) = ((a,b),c)
    
    317
    +--
    
    318
    +class Arrow a => ArrowLoop a where
    
    319
    +    -- |
    
    320
    +    --
    
    321
    +    -- >     ╭──────────────╮
    
    322
    +    -- >   b │     ╭───╮    │ c
    
    323
    +    -- > >───┼─────┤   ├────┼───>
    
    324
    +    -- >     │   ┌─┤   ├─┐  │
    
    325
    +    -- >     │ d │ ╰───╯ │  │
    
    326
    +    -- >     │   └───<───┘  │
    
    327
    +    -- >     ╰──────────────╯
    
    328
    +    loop :: a (b,d) (c,d) -> a b c
    
    329
    +
    
    330
    +-- | @since base-2.01
    
    331
    +instance ArrowLoop (->) where
    
    332
    +    loop f b = let (c,d) = f (b,d) in c
    
    333
    +
    
    334
    +-- | Beware that for many monads (those for which the '>>=' operation
    
    335
    +-- is strict) this instance will /not/ satisfy the right-tightening law
    
    336
    +-- required by the 'ArrowLoop' class.
    
    337
    +--
    
    338
    +-- @since base-2.01
    
    339
    +instance MonadFix m => ArrowLoop (Kleisli m) where
    
    340
    +    loop (Kleisli f) = Kleisli (liftM fst . mfix . f')
    
    341
    +      where f' x y = f (x, snd y)

  • libraries/ghc-internal/src/GHC/Internal/Control/Monad/ST/Lazy/Imp.hs
    ... ... @@ -37,7 +37,6 @@ module GHC.Internal.Control.Monad.ST.Lazy.Imp (
    37 37
             unsafeIOToST
    
    38 38
         ) where
    
    39 39
     
    
    40
    -import GHC.Internal.Control.Monad.Fix
    
    41 40
     import GHC.Internal.Data.Tuple
    
    42 41
     
    
    43 42
     import qualified GHC.Internal.Control.Monad.ST.Imp as ST
    
    ... ... @@ -210,10 +209,6 @@ fixST m = ST (\ s ->
    210 209
     -- itself is demanded directly in the `let` body. See also
    
    211 210
     -- Note [Lazy ST: not producing lazy pairs].
    
    212 211
     
    
    213
    --- | @since base-2.01
    
    214
    -instance MonadFix (ST s) where
    
    215
    -        mfix = fixST
    
    216
    -
    
    217 212
     -- | @since base-4.23.0.0
    
    218 213
     instance Semigroup a => Semigroup (ST s a) where
    
    219 214
         (<>) = liftA2 (<>)
    

  • libraries/ghc-internal/src/GHC/Internal/Data/Functor/Identity.hs
    ... ... @@ -33,7 +33,6 @@ module GHC.Internal.Data.Functor.Identity (
    33 33
         Identity(..),
    
    34 34
       ) where
    
    35 35
     
    
    36
    -import GHC.Internal.Control.Monad.Fix
    
    37 36
     import GHC.Internal.Data.Bits (Bits, FiniteBits)
    
    38 37
     import GHC.Internal.Data.Coerce
    
    39 38
     import GHC.Internal.Data.Foldable
    
    ... ... @@ -143,7 +142,3 @@ instance Applicative Identity where
    143 142
     -- | @since base-4.8.0.0
    
    144 143
     instance Monad Identity where
    
    145 144
         m >>= k  = k (runIdentity m)
    146
    -
    
    147
    --- | @since base-4.8.0.0
    
    148
    -instance MonadFix Identity where
    
    149
    -    mfix f   = Identity (fix (runIdentity . f))

  • libraries/ghc-internal/src/GHC/Internal/Event/Windows/ManagedThreadPool.hs
    ... ... @@ -35,7 +35,7 @@ import GHC.Internal.Real (fromIntegral)
    35 35
     import qualified GHC.Internal.Event.Array as A
    
    36 36
     import GHC.Internal.IO.Handle.Internals (debugIO)
    
    37 37
     import GHC.Internal.Conc.Sync (ThreadId(..))
    
    38
    -import GHC.Internal.RTS.Flags
    
    38
    +import GHC.Internal.RTS.Flags.Test
    
    39 39
     
    
    40 40
     ------------------------------------------------------------------------
    
    41 41
     -- Thread spool manager
    
    ... ... @@ -60,7 +60,7 @@ startThreadPool job = do
    60 60
       let thrMinThreads = 2
    
    61 61
       let thrCurThreads = 0
    
    62 62
       let thrCallBack   = job
    
    63
    -  thrMaxThreads     <- (fromIntegral . numIoWorkerThreads) `fmap` getMiscFlags
    
    63
    +  thrMaxThreads     <- getNumIoWorkerThreads
    
    64 64
       thrActiveThreads  <- newMVar 0
    
    65 65
       thrMonitor        <- newEmptyMVar
    
    66 66
       thrThreadIds      <- undefined -- A.new thrMaxThreads
    

  • libraries/ghc-internal/src/GHC/Internal/RTS/Flags/Test.hsc
    ... ... @@ -4,24 +4,23 @@
    4 4
     -- that allows to quickly test if some flag is set.
    
    5 5
     module GHC.Internal.RTS.Flags.Test
    
    6 6
       ( getUserEventTracingEnabled
    
    7
    +  , getNumIoWorkerThreads
    
    7 8
       )
    
    8 9
     where
    
    9 10
     
    
    10 11
     import GHC.Internal.Base
    
    11
    -
    
    12
    -#if !defined(javascript_HOST_ARCH)
    
    13
    -
    
    14 12
     import GHC.Internal.Ptr
    
    15 13
     import GHC.Internal.Foreign.C.Types
    
    16 14
     import GHC.Internal.Foreign.Marshal.Utils
    
    17 15
     import GHC.Internal.Foreign.Storable
    
    18 16
     import GHC.Internal.Data.Functor ((<$>))
    
    17
    +import GHC.Internal.Word (Word32)
    
    18
    +import GHC.Internal.Real (fromIntegral)
    
    19 19
     
    
    20 20
     #include "Rts.h"
    
    21 21
     #include "rts/Flags.h"
    
    22 22
     
    
    23 23
     foreign import ccall "&RtsFlags" rtsFlagsPtr :: Ptr ()
    
    24
    -#endif
    
    25 24
     
    
    26 25
     -- | Specialized version of 'getTraceFlags' for just checking if user
    
    27 26
     -- event tracing is enabled.
    
    ... ... @@ -34,3 +33,9 @@ getUserEventTracingEnabled = do
    34 33
       let ptr = (#ptr RTS_FLAGS, TraceFlags) rtsFlagsPtr
    
    35 34
       toBool <$> (#{peek TRACE_FLAGS, user} ptr :: IO CBool)
    
    36 35
     #endif
    
    36
    +
    
    37
    +-- | Specialized version of 'getMiscFlags' for just checking the number of IO worker threads
    
    38
    +getNumIoWorkerThreads :: IO Int
    
    39
    +getNumIoWorkerThreads = do
    
    40
    +  let ptr = (#ptr RTS_FLAGS, MiscFlags) rtsFlagsPtr
    
    41
    +  fromIntegral <$> (#{peek MISC_FLAGS, numIoWorkerThreads} ptr :: IO Word32)

  • libraries/ghc-internal/src/GHC/Internal/System/IO.hs
    ... ... @@ -20,7 +20,6 @@ module GHC.Internal.System.IO (
    20 20
         -- * The IO monad
    
    21 21
     
    
    22 22
         IO,
    
    23
    -    fixIO,
    
    24 23
     
    
    25 24
         -- * Files and handles
    
    26 25
     
    
    ... ... @@ -258,7 +257,6 @@ import GHC.Internal.IO.Encoding
    258 257
     import GHC.Internal.Text.Read
    
    259 258
     import GHC.Internal.IO.StdHandles
    
    260 259
     import GHC.Internal.Show
    
    261
    -import GHC.Internal.MVar
    
    262 260
     -----------------------------------------------------------------------------
    
    263 261
     -- Standard IO
    
    264 262
     
    
    ... ... @@ -602,87 +600,6 @@ hReady h = hWaitForInput h 0
    602 600
     hPrint          :: Show a => Handle -> a -> IO ()
    
    603 601
     hPrint hdl      =  hPutStrLn hdl . show
    
    604 602
     
    
    605
    -
    
    606
    --- ---------------------------------------------------------------------------
    
    607
    --- fixIO
    
    608
    -
    
    609
    --- | The implementation of 'Control.Monad.Fix.mfix' for 'IO'.
    
    610
    ---
    
    611
    --- This operation may fail with:
    
    612
    ---
    
    613
    --- * 'FixIOException' if the function passed to 'fixIO' inspects its argument.
    
    614
    ---
    
    615
    --- ==== __Examples__
    
    616
    ---
    
    617
    --- the IO-action is only executed once. The recursion is only on the values.
    
    618
    ---
    
    619
    --- >>> take 3 <$> fixIO (\x -> putStr ":D" >> (:x) <$> readLn @Int)
    
    620
    --- :D
    
    621
    --- 2
    
    622
    --- [2,2,2]
    
    623
    ---
    
    624
    --- If we are strict in the value, just as with 'Data.Function.fix', we do not get termination:
    
    625
    ---
    
    626
    --- >>> fixIO (\x -> putStr x >> pure ('x' : x))
    
    627
    --- * hangs forever *
    
    628
    ---
    
    629
    --- We can tie the knot of a structure within 'IO' using 'fixIO':
    
    630
    ---
    
    631
    --- @
    
    632
    --- data Node = MkNode Int (IORef Node)
    
    633
    ---
    
    634
    --- foo :: IO ()
    
    635
    --- foo = do
    
    636
    ---   p \<- fixIO (\p -> newIORef (MkNode 0 p))
    
    637
    ---   q <- output p
    
    638
    ---   r <- output q
    
    639
    ---   _ <- output r
    
    640
    ---   pure ()
    
    641
    ---
    
    642
    --- output :: IORef Node -> IO (IORef Node)
    
    643
    --- output ref = do
    
    644
    ---   MkNode x p <- readIORef ref
    
    645
    ---   print x
    
    646
    ---   pure p
    
    647
    --- @
    
    648
    ---
    
    649
    --- >>> foo
    
    650
    --- 0
    
    651
    --- 0
    
    652
    --- 0
    
    653
    -fixIO :: (a -> IO a) -> IO a
    
    654
    -fixIO k = do
    
    655
    -    m <- newEmptyMVar
    
    656
    -    ans <- unsafeDupableInterleaveIO
    
    657
    -             (readMVar m `catch` \BlockedIndefinitelyOnMVar ->
    
    658
    -                                    throwIO FixIOException)
    
    659
    -    result <- k ans
    
    660
    -    putMVar m result
    
    661
    -    return result
    
    662
    -
    
    663
    --- Note [Blackholing in fixIO]
    
    664
    --- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    665
    --- We do our own explicit black holing here, because GHC's lazy
    
    666
    --- blackholing isn't enough.  In an infinite loop, GHC may run the IO
    
    667
    --- computation a few times before it notices the loop, which is wrong.
    
    668
    ---
    
    669
    --- NOTE2: the explicit black-holing with an IORef ran into trouble
    
    670
    --- with multiple threads (see #5421), so now we use an MVar. We used
    
    671
    --- to use takeMVar with unsafeInterleaveIO. This, however, uses noDuplicate#,
    
    672
    --- which is not particularly cheap. Better to use readMVar, which can be
    
    673
    --- performed in multiple threads safely, and to use unsafeDupableInterleaveIO
    
    674
    --- to avoid the noDuplicate cost.
    
    675
    ---
    
    676
    --- What we'd ideally want is probably an IVar, but we don't quite have those.
    
    677
    --- STM TVars look like an option at first, but I don't think they are:
    
    678
    --- we'd need to be able to write to the variable in an IO context, which can
    
    679
    --- only be done using 'atomically', and 'atomically' is not allowed within
    
    680
    --- unsafePerformIO. We can't know if someone will try to use the result
    
    681
    --- of fixIO with unsafePerformIO!
    
    682
    ---
    
    683
    --- See also System.IO.Unsafe.unsafeFixIO.
    
    684
    ---
    
    685
    -
    
    686 603
     -- | The function creates a temporary file in ReadWrite mode.
    
    687 604
     -- The created file isn\'t deleted automatically, so you need to delete it manually.
    
    688 605
     --
    

  • libraries/ghc-internal/src/GHC/Internal/System/IO/OS.hs
    ... ... @@ -23,7 +23,9 @@ module GHC.Internal.System.IO.OS
    23 23
     )
    
    24 24
     where
    
    25 25
     
    
    26
    -import GHC.Internal.Base
    
    26
    +#if defined(mingw32_HOST_OS)
    
    27
    +import GHC.Internal.Base (otherwise)
    
    28
    +#endif
    
    27 29
     import GHC.Internal.Control.Monad (return)
    
    28 30
     import GHC.Internal.Control.Concurrent.MVar (MVar)
    
    29 31
     import GHC.Internal.Control.Exception (mask)
    

  • libraries/ghc-internal/src/GHC/Internal/TH/Monad.hs
    ... ... @@ -28,13 +28,8 @@ import Data.Data hiding (Fixity(..))
    28 28
     import Data.IORef
    
    29 29
     import System.IO.Unsafe ( unsafePerformIO )
    
    30 30
     import Control.Monad.IO.Class (MonadIO (..))
    
    31
    -import Control.Monad.Fix (MonadFix (..))
    
    32
    -import Control.Exception (BlockedIndefinitelyOnMVar (..), catch, throwIO)
    
    33
    -import Control.Exception.Base (FixIOException (..))
    
    34
    -import Control.Concurrent.MVar (newEmptyMVar, readMVar, putMVar)
    
    35 31
     import System.IO        ( hPutStrLn, stderr )
    
    36 32
     import qualified Data.Kind as Kind (Type)
    
    37
    -import GHC.IO.Unsafe    ( unsafeDupableInterleaveIO )
    
    38 33
     import GHC.Types        (TYPE, RuntimeRep(..))
    
    39 34
     #else
    
    40 35
     import GHC.Internal.Base hiding (NonEmpty(..),Type, Module, sequence)
    
    ... ... @@ -46,12 +41,8 @@ import GHC.Internal.Data.Foldable
    46 41
     import GHC.Internal.Data.Typeable
    
    47 42
     import GHC.Internal.Control.Monad.IO.Class
    
    48 43
     import GHC.Internal.Control.Monad.Fail
    
    49
    -import GHC.Internal.Control.Monad.Fix
    
    50
    -import GHC.Internal.Control.Exception
    
    51 44
     import GHC.Internal.Num
    
    52 45
     import GHC.Internal.IO.Unsafe
    
    53
    -import GHC.Internal.MVar
    
    54
    -import GHC.Internal.IO.Exception
    
    55 46
     import qualified GHC.Internal.Types as Kind (Type)
    
    56 47
     #endif
    
    57 48
     import GHC.Internal.ForeignSrcLang
    
    ... ... @@ -258,22 +249,6 @@ instance Semigroup a => Semigroup (Q a) where
    258 249
     instance Monoid a => Monoid (Q a) where
    
    259 250
       mempty = pure mempty
    
    260 251
     
    
    261
    --- | If the function passed to 'mfix' inspects its argument,
    
    262
    --- the resulting action will throw a 'FixIOException'.
    
    263
    ---
    
    264
    --- @since 2.17.0.0
    
    265
    -instance MonadFix Q where
    
    266
    -  -- We use the same blackholing approach as in fixIO.
    
    267
    -  -- See Note [Blackholing in fixIO] in System.IO in base.
    
    268
    -  mfix k = do
    
    269
    -    m <- runIO newEmptyMVar
    
    270
    -    ans <- runIO (unsafeDupableInterleaveIO
    
    271
    -             (readMVar m `catch` \BlockedIndefinitelyOnMVar ->
    
    272
    -                                    throwIO FixIOException))
    
    273
    -    result <- k ans
    
    274
    -    runIO (putMVar m result)
    
    275
    -    return result
    
    276
    -
    
    277 252
     
    
    278 253
     -----------------------------------------------------
    
    279 254
     --
    

  • testsuite/tests/ghci/scripts/ListTuplePunsPpr.stdout
    ... ... @@ -41,10 +41,10 @@ data Tuple2 a b = (,) a b
    41 41
       	-- Defined in ‘GHC.Internal.Tuple’
    
    42 42
     instance Traversable (Tuple2 a)
    
    43 43
       -- Defined in ‘GHC.Internal.Data.Traversable’
    
    44
    -instance Foldable (Tuple2 a)
    
    45
    -  -- Defined in ‘GHC.Internal.Data.Foldable’
    
    46 44
     instance Monoid a => Applicative (Tuple2 a)
    
    47 45
       -- Defined in ‘GHC.Internal.Base’
    
    46
    +instance Foldable (Tuple2 a)
    
    47
    +  -- Defined in ‘GHC.Internal.Data.Foldable’
    
    48 48
     instance Functor (Tuple2 a) -- Defined in ‘GHC.Internal.Base’
    
    49 49
     instance Monoid a => Monad (Tuple2 a)
    
    50 50
       -- Defined in ‘GHC.Internal.Base’
    

  • testsuite/tests/ghci/scripts/T10963.stderr
    1
    -
    
    2 1
     <interactive>:1:1: error: [GHC-39999]
    
    3 2
         • Ambiguous type variable ‘a0’ arising from a use of ‘foo’
    
    4 3
           prevents the constraint ‘(Num a0)’ from being solved.
    
    ... ... @@ -10,3 +9,4 @@
    10 9
             ...plus one instance involving out-of-scope types
    
    11 10
             (use -fprint-potential-instances to see them all)
    
    12 11
         • In the expression: foo
    
    12
    +

  • testsuite/tests/ghci/scripts/T4175.stdout
    ... ... @@ -44,8 +44,8 @@ instance Traversable Maybe
    44 44
       -- Defined in ‘GHC.Internal.Data.Traversable’
    
    45 45
     instance MonadFail Maybe
    
    46 46
       -- Defined in ‘GHC.Internal.Control.Monad.Fail’
    
    47
    -instance Foldable Maybe -- Defined in ‘GHC.Internal.Data.Foldable’
    
    48 47
     instance Applicative Maybe -- Defined in ‘GHC.Internal.Base’
    
    48
    +instance Foldable Maybe -- Defined in ‘GHC.Internal.Data.Foldable’
    
    49 49
     instance Functor Maybe -- Defined in ‘GHC.Internal.Base’
    
    50 50
     instance Monad Maybe -- Defined in ‘GHC.Internal.Base’
    
    51 51
     instance Semigroup a => Monoid (Maybe a)
    

  • testsuite/tests/interface-stability/base-exports.stdout
    ... ... @@ -11527,8 +11527,6 @@ instance GHC.Internal.Control.Arrow.ArrowApply (->) -- Defined in ‘GHC.Interna
    11527 11527
     instance forall (m :: * -> *). GHC.Internal.Base.Monad m => GHC.Internal.Control.Arrow.ArrowApply (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11528 11528
     instance GHC.Internal.Control.Arrow.ArrowChoice (->) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11529 11529
     instance forall (m :: * -> *). GHC.Internal.Base.Monad m => GHC.Internal.Control.Arrow.ArrowChoice (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11530
    -instance GHC.Internal.Control.Arrow.ArrowLoop (->) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11531
    -instance forall (m :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix m => GHC.Internal.Control.Arrow.ArrowLoop (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11532 11530
     instance forall (m :: * -> *). GHC.Internal.Base.MonadPlus m => GHC.Internal.Control.Arrow.ArrowPlus (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11533 11531
     instance forall (m :: * -> *). GHC.Internal.Base.MonadPlus m => GHC.Internal.Control.Arrow.ArrowZero (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11534 11532
     instance forall (m :: * -> *). GHC.Internal.Base.Monad m => GHC.Internal.Control.Category.Category (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    ... ... @@ -11544,6 +11542,8 @@ instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fail.MonadFail f => GH
    11544 11542
     instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.Text.ParserCombinators.ReadP.P -- Defined in ‘GHC.Internal.Text.ParserCombinators.ReadP’
    
    11545 11543
     instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.Text.ParserCombinators.ReadP.ReadP -- Defined in ‘GHC.Internal.Text.ParserCombinators.ReadP’
    
    11546 11544
     instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.Text.ParserCombinators.ReadPrec.ReadPrec -- Defined in ‘GHC.Internal.Text.ParserCombinators.ReadPrec’
    
    11545
    +instance GHC.Internal.Control.Monad.Fix.ArrowLoop (->) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11546
    +instance forall (m :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix m => GHC.Internal.Control.Monad.Fix.ArrowLoop (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11547 11547
     instance forall (f :: * -> *) (g :: * -> *). (GHC.Internal.Control.Monad.Fix.MonadFix f, GHC.Internal.Control.Monad.Fix.MonadFix g) => GHC.Internal.Control.Monad.Fix.MonadFix (f GHC.Internal.Generics.:*: g) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11548 11548
     instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Data.Semigroup.Internal.Alt f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11549 11549
     instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Data.Monoid.Ap f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    ... ... @@ -11553,6 +11553,7 @@ instance forall e. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Data.Ei
    11553 11553
     instance forall r. GHC.Internal.Control.Monad.Fix.MonadFix ((->) r) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11554 11554
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Monoid.First -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11555 11555
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Types.IO -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11556
    +instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Functor.Identity.Identity -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11556 11557
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Monoid.Last -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11557 11558
     instance GHC.Internal.Control.Monad.Fix.MonadFix [] -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11558 11559
     instance forall (f :: * -> *) i (c :: GHC.Internal.Generics.Meta). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Generics.M1 i c f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    ... ... @@ -11560,14 +11561,14 @@ instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Maybe.Maybe -- Def
    11560 11561
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Base.NonEmpty -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11561 11562
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Generics.Par1 -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11562 11563
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Semigroup.Internal.Product -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11564
    +instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.TH.Monad.Q -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11563 11565
     instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Generics.Rec1 f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11566
    +instance forall s. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Control.Monad.ST.Lazy.Imp.ST s) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11564 11567
     instance forall s. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.ST.ST s) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11565 11568
     instance GHC.Internal.Control.Monad.Fix.MonadFix Solo -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11566 11569
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Semigroup.Internal.Sum -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11567 11570
     instance forall a. GHC.Internal.Base.Monoid a => GHC.Internal.Control.Monad.Fix.MonadFix ((,) a) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11568
    -instance forall s. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Control.Monad.ST.Lazy.Imp.ST s) -- Defined in ‘GHC.Internal.Control.Monad.ST.Lazy.Imp’
    
    11569 11571
     instance GHC.Internal.Control.Monad.Fix.MonadFix Data.Complex.Complex -- Defined in ‘Data.Complex’
    
    11570
    -instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Functor.Identity.Identity -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    11571 11572
     instance [safe] forall (f :: * -> *) (g :: * -> *). (GHC.Internal.Control.Monad.Fix.MonadFix f, GHC.Internal.Control.Monad.Fix.MonadFix g) => GHC.Internal.Control.Monad.Fix.MonadFix (Data.Functor.Product.Product f g) -- Defined in ‘Data.Functor.Product’
    
    11572 11573
     instance GHC.Internal.Control.Monad.Fix.MonadFix Data.Semigroup.First -- Defined in ‘Data.Semigroup’
    
    11573 11574
     instance GHC.Internal.Control.Monad.Fix.MonadFix Data.Semigroup.Last -- Defined in ‘Data.Semigroup’
    

  • testsuite/tests/interface-stability/base-exports.stdout-javascript-unknown-ghcjs
    ... ... @@ -11554,8 +11554,6 @@ instance GHC.Internal.Control.Arrow.ArrowApply (->) -- Defined in ‘GHC.Interna
    11554 11554
     instance forall (m :: * -> *). GHC.Internal.Base.Monad m => GHC.Internal.Control.Arrow.ArrowApply (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11555 11555
     instance GHC.Internal.Control.Arrow.ArrowChoice (->) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11556 11556
     instance forall (m :: * -> *). GHC.Internal.Base.Monad m => GHC.Internal.Control.Arrow.ArrowChoice (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11557
    -instance GHC.Internal.Control.Arrow.ArrowLoop (->) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11558
    -instance forall (m :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix m => GHC.Internal.Control.Arrow.ArrowLoop (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11559 11557
     instance forall (m :: * -> *). GHC.Internal.Base.MonadPlus m => GHC.Internal.Control.Arrow.ArrowPlus (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11560 11558
     instance forall (m :: * -> *). GHC.Internal.Base.MonadPlus m => GHC.Internal.Control.Arrow.ArrowZero (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11561 11559
     instance forall (m :: * -> *). GHC.Internal.Base.Monad m => GHC.Internal.Control.Category.Category (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    ... ... @@ -11571,6 +11569,8 @@ instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fail.MonadFail f => GH
    11571 11569
     instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.Text.ParserCombinators.ReadP.P -- Defined in ‘GHC.Internal.Text.ParserCombinators.ReadP’
    
    11572 11570
     instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.Text.ParserCombinators.ReadP.ReadP -- Defined in ‘GHC.Internal.Text.ParserCombinators.ReadP’
    
    11573 11571
     instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.Text.ParserCombinators.ReadPrec.ReadPrec -- Defined in ‘GHC.Internal.Text.ParserCombinators.ReadPrec’
    
    11572
    +instance GHC.Internal.Control.Monad.Fix.ArrowLoop (->) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11573
    +instance forall (m :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix m => GHC.Internal.Control.Monad.Fix.ArrowLoop (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11574 11574
     instance forall (f :: * -> *) (g :: * -> *). (GHC.Internal.Control.Monad.Fix.MonadFix f, GHC.Internal.Control.Monad.Fix.MonadFix g) => GHC.Internal.Control.Monad.Fix.MonadFix (f GHC.Internal.Generics.:*: g) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11575 11575
     instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Data.Semigroup.Internal.Alt f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11576 11576
     instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Data.Monoid.Ap f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    ... ... @@ -11580,6 +11580,7 @@ instance forall e. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Data.Ei
    11580 11580
     instance forall r. GHC.Internal.Control.Monad.Fix.MonadFix ((->) r) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11581 11581
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Monoid.First -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11582 11582
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Types.IO -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11583
    +instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Functor.Identity.Identity -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11583 11584
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Monoid.Last -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11584 11585
     instance GHC.Internal.Control.Monad.Fix.MonadFix [] -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11585 11586
     instance forall (f :: * -> *) i (c :: GHC.Internal.Generics.Meta). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Generics.M1 i c f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    ... ... @@ -11587,14 +11588,14 @@ instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Maybe.Maybe -- Def
    11587 11588
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Base.NonEmpty -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11588 11589
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Generics.Par1 -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11589 11590
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Semigroup.Internal.Product -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11591
    +instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.TH.Monad.Q -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11590 11592
     instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Generics.Rec1 f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11593
    +instance forall s. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Control.Monad.ST.Lazy.Imp.ST s) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11591 11594
     instance forall s. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.ST.ST s) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11592 11595
     instance GHC.Internal.Control.Monad.Fix.MonadFix Solo -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11593 11596
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Semigroup.Internal.Sum -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11594 11597
     instance forall a. GHC.Internal.Base.Monoid a => GHC.Internal.Control.Monad.Fix.MonadFix ((,) a) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11595
    -instance forall s. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Control.Monad.ST.Lazy.Imp.ST s) -- Defined in ‘GHC.Internal.Control.Monad.ST.Lazy.Imp’
    
    11596 11598
     instance GHC.Internal.Control.Monad.Fix.MonadFix Data.Complex.Complex -- Defined in ‘Data.Complex’
    
    11597
    -instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Functor.Identity.Identity -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    11598 11599
     instance [safe] forall (f :: * -> *) (g :: * -> *). (GHC.Internal.Control.Monad.Fix.MonadFix f, GHC.Internal.Control.Monad.Fix.MonadFix g) => GHC.Internal.Control.Monad.Fix.MonadFix (Data.Functor.Product.Product f g) -- Defined in ‘Data.Functor.Product’
    
    11599 11600
     instance GHC.Internal.Control.Monad.Fix.MonadFix Data.Semigroup.First -- Defined in ‘Data.Semigroup’
    
    11600 11601
     instance GHC.Internal.Control.Monad.Fix.MonadFix Data.Semigroup.Last -- Defined in ‘Data.Semigroup’
    

  • testsuite/tests/interface-stability/base-exports.stdout-mingw32
    ... ... @@ -11785,8 +11785,6 @@ instance GHC.Internal.Control.Arrow.ArrowApply (->) -- Defined in ‘GHC.Interna
    11785 11785
     instance forall (m :: * -> *). GHC.Internal.Base.Monad m => GHC.Internal.Control.Arrow.ArrowApply (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11786 11786
     instance GHC.Internal.Control.Arrow.ArrowChoice (->) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11787 11787
     instance forall (m :: * -> *). GHC.Internal.Base.Monad m => GHC.Internal.Control.Arrow.ArrowChoice (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11788
    -instance GHC.Internal.Control.Arrow.ArrowLoop (->) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11789
    -instance forall (m :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix m => GHC.Internal.Control.Arrow.ArrowLoop (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11790 11788
     instance forall (m :: * -> *). GHC.Internal.Base.MonadPlus m => GHC.Internal.Control.Arrow.ArrowPlus (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11791 11789
     instance forall (m :: * -> *). GHC.Internal.Base.MonadPlus m => GHC.Internal.Control.Arrow.ArrowZero (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11792 11790
     instance forall (m :: * -> *). GHC.Internal.Base.Monad m => GHC.Internal.Control.Category.Category (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    ... ... @@ -11802,6 +11800,8 @@ instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fail.MonadFail f => GH
    11802 11800
     instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.Text.ParserCombinators.ReadP.P -- Defined in ‘GHC.Internal.Text.ParserCombinators.ReadP’
    
    11803 11801
     instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.Text.ParserCombinators.ReadP.ReadP -- Defined in ‘GHC.Internal.Text.ParserCombinators.ReadP’
    
    11804 11802
     instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.Text.ParserCombinators.ReadPrec.ReadPrec -- Defined in ‘GHC.Internal.Text.ParserCombinators.ReadPrec’
    
    11803
    +instance GHC.Internal.Control.Monad.Fix.ArrowLoop (->) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11804
    +instance forall (m :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix m => GHC.Internal.Control.Monad.Fix.ArrowLoop (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11805 11805
     instance forall (f :: * -> *) (g :: * -> *). (GHC.Internal.Control.Monad.Fix.MonadFix f, GHC.Internal.Control.Monad.Fix.MonadFix g) => GHC.Internal.Control.Monad.Fix.MonadFix (f GHC.Internal.Generics.:*: g) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11806 11806
     instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Data.Semigroup.Internal.Alt f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11807 11807
     instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Data.Monoid.Ap f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    ... ... @@ -11811,6 +11811,7 @@ instance forall e. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Data.Ei
    11811 11811
     instance forall r. GHC.Internal.Control.Monad.Fix.MonadFix ((->) r) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11812 11812
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Monoid.First -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11813 11813
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Types.IO -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11814
    +instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Functor.Identity.Identity -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11814 11815
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Monoid.Last -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11815 11816
     instance GHC.Internal.Control.Monad.Fix.MonadFix [] -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11816 11817
     instance forall (f :: * -> *) i (c :: GHC.Internal.Generics.Meta). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Generics.M1 i c f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    ... ... @@ -11818,14 +11819,14 @@ instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Maybe.Maybe -- Def
    11818 11819
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Base.NonEmpty -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11819 11820
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Generics.Par1 -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11820 11821
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Semigroup.Internal.Product -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11822
    +instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.TH.Monad.Q -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11821 11823
     instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Generics.Rec1 f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11824
    +instance forall s. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Control.Monad.ST.Lazy.Imp.ST s) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11822 11825
     instance forall s. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.ST.ST s) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11823 11826
     instance GHC.Internal.Control.Monad.Fix.MonadFix Solo -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11824 11827
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Semigroup.Internal.Sum -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11825 11828
     instance forall a. GHC.Internal.Base.Monoid a => GHC.Internal.Control.Monad.Fix.MonadFix ((,) a) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11826
    -instance forall s. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Control.Monad.ST.Lazy.Imp.ST s) -- Defined in ‘GHC.Internal.Control.Monad.ST.Lazy.Imp’
    
    11827 11829
     instance GHC.Internal.Control.Monad.Fix.MonadFix Data.Complex.Complex -- Defined in ‘Data.Complex’
    
    11828
    -instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Functor.Identity.Identity -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    11829 11830
     instance [safe] forall (f :: * -> *) (g :: * -> *). (GHC.Internal.Control.Monad.Fix.MonadFix f, GHC.Internal.Control.Monad.Fix.MonadFix g) => GHC.Internal.Control.Monad.Fix.MonadFix (Data.Functor.Product.Product f g) -- Defined in ‘Data.Functor.Product’
    
    11830 11831
     instance GHC.Internal.Control.Monad.Fix.MonadFix Data.Semigroup.First -- Defined in ‘Data.Semigroup’
    
    11831 11832
     instance GHC.Internal.Control.Monad.Fix.MonadFix Data.Semigroup.Last -- Defined in ‘Data.Semigroup’
    

  • testsuite/tests/interface-stability/base-exports.stdout-ws-32
    ... ... @@ -11527,8 +11527,6 @@ instance GHC.Internal.Control.Arrow.ArrowApply (->) -- Defined in ‘GHC.Interna
    11527 11527
     instance forall (m :: * -> *). GHC.Internal.Base.Monad m => GHC.Internal.Control.Arrow.ArrowApply (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11528 11528
     instance GHC.Internal.Control.Arrow.ArrowChoice (->) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11529 11529
     instance forall (m :: * -> *). GHC.Internal.Base.Monad m => GHC.Internal.Control.Arrow.ArrowChoice (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11530
    -instance GHC.Internal.Control.Arrow.ArrowLoop (->) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11531
    -instance forall (m :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix m => GHC.Internal.Control.Arrow.ArrowLoop (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11532 11530
     instance forall (m :: * -> *). GHC.Internal.Base.MonadPlus m => GHC.Internal.Control.Arrow.ArrowPlus (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11533 11531
     instance forall (m :: * -> *). GHC.Internal.Base.MonadPlus m => GHC.Internal.Control.Arrow.ArrowZero (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    11534 11532
     instance forall (m :: * -> *). GHC.Internal.Base.Monad m => GHC.Internal.Control.Category.Category (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Arrow’
    
    ... ... @@ -11544,6 +11542,8 @@ instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fail.MonadFail f => GH
    11544 11542
     instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.Text.ParserCombinators.ReadP.P -- Defined in ‘GHC.Internal.Text.ParserCombinators.ReadP’
    
    11545 11543
     instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.Text.ParserCombinators.ReadP.ReadP -- Defined in ‘GHC.Internal.Text.ParserCombinators.ReadP’
    
    11546 11544
     instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.Text.ParserCombinators.ReadPrec.ReadPrec -- Defined in ‘GHC.Internal.Text.ParserCombinators.ReadPrec’
    
    11545
    +instance GHC.Internal.Control.Monad.Fix.ArrowLoop (->) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11546
    +instance forall (m :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix m => GHC.Internal.Control.Monad.Fix.ArrowLoop (GHC.Internal.Control.Arrow.Kleisli m) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11547 11547
     instance forall (f :: * -> *) (g :: * -> *). (GHC.Internal.Control.Monad.Fix.MonadFix f, GHC.Internal.Control.Monad.Fix.MonadFix g) => GHC.Internal.Control.Monad.Fix.MonadFix (f GHC.Internal.Generics.:*: g) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11548 11548
     instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Data.Semigroup.Internal.Alt f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11549 11549
     instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Data.Monoid.Ap f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    ... ... @@ -11553,6 +11553,7 @@ instance forall e. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Data.Ei
    11553 11553
     instance forall r. GHC.Internal.Control.Monad.Fix.MonadFix ((->) r) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11554 11554
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Monoid.First -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11555 11555
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Types.IO -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11556
    +instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Functor.Identity.Identity -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11556 11557
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Monoid.Last -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11557 11558
     instance GHC.Internal.Control.Monad.Fix.MonadFix [] -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11558 11559
     instance forall (f :: * -> *) i (c :: GHC.Internal.Generics.Meta). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Generics.M1 i c f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    ... ... @@ -11560,14 +11561,14 @@ instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Maybe.Maybe -- Def
    11560 11561
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Base.NonEmpty -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11561 11562
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Generics.Par1 -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11562 11563
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Semigroup.Internal.Product -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11564
    +instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.TH.Monad.Q -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11563 11565
     instance forall (f :: * -> *). GHC.Internal.Control.Monad.Fix.MonadFix f => GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Generics.Rec1 f) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11566
    +instance forall s. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Control.Monad.ST.Lazy.Imp.ST s) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11564 11567
     instance forall s. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.ST.ST s) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11565 11568
     instance GHC.Internal.Control.Monad.Fix.MonadFix Solo -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11566 11569
     instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Semigroup.Internal.Sum -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11567 11570
     instance forall a. GHC.Internal.Base.Monoid a => GHC.Internal.Control.Monad.Fix.MonadFix ((,) a) -- Defined in ‘GHC.Internal.Control.Monad.Fix’
    
    11568
    -instance forall s. GHC.Internal.Control.Monad.Fix.MonadFix (GHC.Internal.Control.Monad.ST.Lazy.Imp.ST s) -- Defined in ‘GHC.Internal.Control.Monad.ST.Lazy.Imp’
    
    11569 11571
     instance GHC.Internal.Control.Monad.Fix.MonadFix Data.Complex.Complex -- Defined in ‘Data.Complex’
    
    11570
    -instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.Data.Functor.Identity.Identity -- Defined in ‘GHC.Internal.Data.Functor.Identity’
    
    11571 11572
     instance [safe] forall (f :: * -> *) (g :: * -> *). (GHC.Internal.Control.Monad.Fix.MonadFix f, GHC.Internal.Control.Monad.Fix.MonadFix g) => GHC.Internal.Control.Monad.Fix.MonadFix (Data.Functor.Product.Product f g) -- Defined in ‘Data.Functor.Product’
    
    11572 11573
     instance GHC.Internal.Control.Monad.Fix.MonadFix Data.Semigroup.First -- Defined in ‘Data.Semigroup’
    
    11573 11574
     instance GHC.Internal.Control.Monad.Fix.MonadFix Data.Semigroup.Last -- Defined in ‘Data.Semigroup’
    

  • testsuite/tests/interface-stability/template-haskell-exports.stdout
    ... ... @@ -2052,7 +2052,6 @@ instance GHC.Internal.Classes.Ord GHC.Internal.TH.Syntax.Type -- Defined in ‘G
    2052 2052
     instance GHC.Internal.Classes.Ord GHC.Internal.TH.Syntax.TypeFamilyHead -- Defined in ‘GHC.Internal.TH.Syntax’
    
    2053 2053
     instance GHC.Internal.Classes.Ord GHC.Internal.LanguageExtensions.Extension -- Defined in ‘GHC.Internal.LanguageExtensions’
    
    2054 2054
     instance GHC.Internal.Control.Monad.Fail.MonadFail GHC.Internal.TH.Monad.Q -- Defined in ‘GHC.Internal.TH.Monad’
    
    2055
    -instance GHC.Internal.Control.Monad.Fix.MonadFix GHC.Internal.TH.Monad.Q -- Defined in ‘GHC.Internal.TH.Monad’
    
    2056 2055
     instance GHC.Internal.Control.Monad.IO.Class.MonadIO GHC.Internal.TH.Monad.Q -- Defined in ‘GHC.Internal.TH.Monad’
    
    2057 2056
     instance GHC.Internal.Data.Foldable.Foldable GHC.Internal.TH.Syntax.TyVarBndr -- Defined in ‘GHC.Internal.TH.Syntax’
    
    2058 2057
     instance GHC.Internal.Data.Traversable.Traversable GHC.Internal.TH.Syntax.TyVarBndr -- Defined in ‘GHC.Internal.TH.Syntax’
    

  • testsuite/tests/mdo/should_fail/mdofail006.stderr
    ... ... @@ -5,5 +5,5 @@ cyclic evaluation in fixIO
    5 5
     While handling thread blocked indefinitely in an MVar operation
    
    6 6
     
    
    7 7
     HasCallStack backtrace:
    
    8
    -  throwIO, called at libraries/ghc-internal/src/GHC/Internal/System/IO.hs:641:37 in ghc-internal:GHC.Internal.System.IO
    
    8
    +  throwIO, called at libraries/ghc-internal/src/GHC/Internal/Control/Monad/Fix.hs:167:37 in ghc-internal:GHC.Internal.Control.Monad.Fix
    
    9 9