Skip to content

Core Lint error when compiling servant-conduit with GHC 9.2.5

Summary

servant-conduit-0.15.1 fails to compile with -dcore-lint

Steps to reproduce

$ cabal get servant-conduit-0.15.1
$ cat > cabal.project << EOF
packages: .
package servant-conduit
  ghc-options: -dcore-lint
EOF
$ cabal build
Click to expand
[1 of 1] Compiling Servant.Conduit  ( src/Servant/Conduit.hs, /data/builds/clc-stackage/servant-conduit-0.15.1/dist-newstyle/build/x86_64-linux/ghc-9.2.5/servant-conduit-0.15.1/build/Servant/Conduit.o, /data/builds/clc-stackage/servant-conduit-0.15.1/dist-newstyle/build/x86_64-linux/ghc-9.2.5/servant-conduit-0.15.1/build/Servant/Conduit.dyn_o )
*** Core Lint errors : in result of Desugar (before optimization) ***
src/Servant/Conduit.hs:60:5: warning:
    The type variable @o_a2SE is out of scope
    In the type of a binder: $s$cfromSourceIO_d35Z
    In the type ‘SourceIO o_a2SE -> ConduitT i_a2SF o_a2SE IO ()’
    Substitution: [TCvSubst
                     In scope: InScope {}
                     Type env: []
                     Co env: []]
*** Offending Program ***
Rec {
$d~_a2UP :: () ~ ()
[LclId]
$d~_a2UP = Eq# @(*) @() @() @~(<()>_N :: () ~# ())

$dMonadIO_a2UO :: MonadIO IO
[LclId]
$dMonadIO_a2UO = $fMonadIOIO

$tcConduitToSourceIO :: TyCon
[LclIdX]
$tcConduitToSourceIO
  = TyCon
      11659254941162193902##
      5178537924432902239##
      $trModule
      (TrNameS "ConduitToSourceIO"#)
      0#
      $krep_a2VF

$krep_a2VF [InlPrag=[~]] :: KindRep
[LclId]
$krep_a2VF = KindRepFun krep$*Arr* $krep_a2VG

$krep_a2VG [InlPrag=[~]] :: KindRep
[LclId]
$krep_a2VG = KindRepTyConApp $tcConstraint ([] @KindRep)

$trModule :: Module
[LclIdX]
$trModule
  = Module
      (TrNameS "servant-conduit-0.15.1-inplace"#)
      (TrNameS "Servant.Conduit"#)

$fToSourceIOoConduitT [InlPrag=INLINE (sat-args=0)]
  :: forall (m :: * -> *) r o i.
     (ConduitToSourceIO m, r ~ ()) =>
     ToSourceIO o (ConduitT i o m r)
[LclIdX[DFunId(nt)],
 Unf=Unf{Src=InlineStable, TopLvl=True, Value=True, ConLike=True,
         WorkFree=True, Expandable=True,
         Guidance=ALWAYS_IF(arity=2,unsat_ok=False,boring_ok=True)
         Tmpl= \ (@(m_a2K8 :: * -> *))
                 (@r_a2K9)
                 (@o_a2Ka)
                 (@i_a2Kb)
                 ($dConduitToSourceIO_a2Kc [Occ=Once1] :: ConduitToSourceIO m_a2K8)
                 ($d~_a2Kd [Occ=Once1] :: r_a2K9 ~ ()) ->
                 ($ctoSourceIO_a2Kf
                    @m_a2K8 @r_a2K9 @o_a2Ka @i_a2Kb $dConduitToSourceIO_a2Kc $d~_a2Kd)
                 `cast` (Sym (N:ToSourceIO[0]
                                  <o_a2Ka>_N <ConduitT i_a2Kb o_a2Ka m_a2K8 r_a2K9>_N)
                         :: (ConduitT i_a2Kb o_a2Ka m_a2K8 r_a2K9 -> SourceIO o_a2Ka)
                            ~R# ToSourceIO o_a2Ka (ConduitT i_a2Kb o_a2Ka m_a2K8 r_a2K9))}]
$fToSourceIOoConduitT
  = \ (@(m_a2K8 :: * -> *))
      (@r_a2K9)
      (@o_a2Ka)
      (@i_a2Kb)
      ($dConduitToSourceIO_a2Kc :: ConduitToSourceIO m_a2K8)
      ($d~_a2Kd :: r_a2K9 ~ ()) ->
      C:ToSourceIO
        @o_a2Ka
        @(ConduitT i_a2Kb o_a2Ka m_a2K8 r_a2K9)
        ($ctoSourceIO_a2Kf
           @m_a2K8 @r_a2K9 @o_a2Ka @i_a2Kb $dConduitToSourceIO_a2Kc $d~_a2Kd)

$ctoSourceIO_a2Kf
  :: forall (m :: * -> *) r o i.
     (ConduitToSourceIO m, r ~ ()) =>
     ConduitT i o m r -> SourceIO o
[LclId]
$ctoSourceIO_a2Kf
  = \ (@(m_a2K8 :: * -> *))
      (@r_a2K9)
      (@o_a2Ka)
      (@i_a2Kb)
      ($dConduitToSourceIO_a2Kc :: ConduitToSourceIO m_a2K8)
      ($d~_a2Kd :: r_a2K9 ~ ()) ->
      let {
        $dConduitToSourceIO_a2Kj :: ConduitToSourceIO m_a2K8
        [LclId]
        $dConduitToSourceIO_a2Kj = $dConduitToSourceIO_a2Kc } in
      case eq_sel @(*) @r_a2K9 @() $d~_a2Kd of co_a2UT { __DEFAULT ->
      (conduitToSourceIO
         @m_a2K8 $dConduitToSourceIO_a2Kj @i_a2Kb @o_a2Ka)
      `cast` ((ConduitT
                 <i_a2Kb>_N <o_a2Ka>_N <m_a2K8>_N (Sub (Sym co_a2UT)))_R
              %<'Many>_N ->_R <SourceT IO o_a2Ka>_R
              :: (ConduitT i_a2Kb o_a2Ka m_a2K8 () -> SourceT IO o_a2Ka)
                 ~R# (ConduitT i_a2Kb o_a2Ka m_a2K8 r_a2K9[ssk:1]
                      -> SourceT IO o_a2Ka))
      }

$fConduitToSourceIOResourceT [InlPrag=INLINE (sat-args=0)]
  :: forall (m :: * -> *).
     (m ~ IO) =>
     ConduitToSourceIO (ResourceT m)
[LclIdX[DFunId(nt)],
 Unf=Unf{Src=InlineStable, TopLvl=True, Value=True, ConLike=True,
         WorkFree=True, Expandable=True,
         Guidance=ALWAYS_IF(arity=1,unsat_ok=False,boring_ok=True)
         Tmpl= \ (@(m_a2Kp :: * -> *))
                 ($d~_a2Kq [Occ=Once1] :: m_a2Kp ~ IO) ->
                 ($cconduitToSourceIO_a2Ks @m_a2Kp $d~_a2Kq)
                 `cast` (Sym (N:ConduitToSourceIO[0] <ResourceT m_a2Kp>_N)
                         :: (forall i o. ConduitT i o (ResourceT m_a2Kp) () -> SourceIO o)
                            ~R# ConduitToSourceIO (ResourceT m_a2Kp))}]
$fConduitToSourceIOResourceT
  = \ (@(m_a2Kp :: * -> *)) ($d~_a2Kq :: m_a2Kp ~ IO) ->
      C:ConduitToSourceIO
        @(ResourceT m_a2Kp) ($cconduitToSourceIO_a2Ks @m_a2Kp $d~_a2Kq)

$cconduitToSourceIO_a2Ks
  :: forall (m :: * -> *) i o.
     (m ~ IO) =>
     ConduitT i o (ResourceT m) () -> SourceIO o
[LclId]
$cconduitToSourceIO_a2Ks
  = \ (@(m_a2Kp :: * -> *)) ($d~_a2Kq :: m_a2Kp ~ IO) ->
      case eq_sel @(* -> *) @m_a2Kp @IO $d~_a2Kq of co_a2UW
      { __DEFAULT ->
      \ (@i_a2Kv)
        (@o_a2Kw)
        (ds_d2Wd :: ConduitT i_a2Kv o_a2Kw (ResourceT m_a2Kp) ()) ->
        let {
          con_a2Ac
            :: forall b.
               (() -> Pipe i_a2Kv i_a2Kv o_a2Kw () (ResourceT m_a2Kp) b)
               -> Pipe i_a2Kv i_a2Kv o_a2Kw () (ResourceT m_a2Kp) b
          [LclId]
          con_a2Ac
            = ds_d2Wd
              `cast` (N:ConduitT[0]
                          <i_a2Kv>_N <o_a2Kw>_N <ResourceT m_a2Kp>_N <()>_R
                      :: ConduitT i_a2Kv o_a2Kw (ResourceT m_a2Kp) ()
                         ~R# (forall b.
                              (() -> Pipe i_a2Kv i_a2Kv o_a2Kw () (ResourceT m_a2Kp) b)
                              -> Pipe i_a2Kv i_a2Kv o_a2Kw () (ResourceT m_a2Kp) b)) } in
        letrec {
          go_a2Ad
            :: forall i o.
               (forall x. ResourceT m_a2Kp x -> m_a2Kp x)
               -> Pipe i i o () (ResourceT m_a2Kp) () -> StepT IO o
          [LclId]
          go_a2Ad
            = \ (@i_a2MC) (@o_a2MD) ->
                let {
                  $dFunctor_a2V3 :: Functor IO
                  [LclId]
                  $dFunctor_a2V3 = $fFunctorIO } in
                let {
                  $dFunctor_a2V2 :: Functor (ResourceT IO)
                  [LclId]
                  $dFunctor_a2V2 = $fFunctorResourceT @IO $dFunctor_a2V3 } in
                let {
                  $dFunctor_a2Nc :: Functor (ResourceT m_a2Kp)
                  [LclId]
                  $dFunctor_a2Nc
                    = $dFunctor_a2V2
                      `cast` ((Functor (ResourceT (Sym co_a2UW))_N)_R
                              :: Functor (ResourceT IO)
                                 ~R# Functor (ResourceT m_a2Kp[ssk:1])) } in
                \ (ds_d2Wx :: forall x. ResourceT m_a2Kp x -> m_a2Kp x)
                  (ds_d2Wy :: Pipe i_a2MC i_a2MC o_a2MD () (ResourceT m_a2Kp) ()) ->
                  let {
                    runRes_a2Ah :: forall x. ResourceT m_a2Kp x -> m_a2Kp x
                    [LclId]
                    runRes_a2Ah = ds_d2Wx } in
                  let {
                    runRes_a2Ak :: forall x. ResourceT m_a2Kp x -> m_a2Kp x
                    [LclId]
                    runRes_a2Ak = ds_d2Wx } in
                  let {
                    runRes_a2An :: forall x. ResourceT m_a2Kp x -> m_a2Kp x
                    [LclId]
                    runRes_a2An = ds_d2Wx } in
                  let {
                    runRes_a2Ap :: forall x. ResourceT m_a2Kp x -> m_a2Kp x
                    [LclId]
                    runRes_a2Ap = ds_d2Wx } in
                  case ds_d2Wy of wild_00 {
                    HaveOutput p_a2Ai o_a2Aj ->
                      (\ (@(m_a2KK :: * -> *))
                         (@a_a2KL)
                         (ds_d34Y :: a_a2KL)
                         (ds_d34Z :: StepT m_a2KK a_a2KL) ->
                         Yield @m_a2KK @a_a2KL ds_d34Y ds_d34Z)
                        @IO
                        @o_a2MD
                        o_a2Aj
                        (go_a2Ad
                           @i_a2MC @o_a2MD (\ (@x_a2MM) -> runRes_a2Ah @x_a2MM) p_a2Ai);
                    NeedInput _ip_a2Al up_a2Am ->
                      (\ (@(m_a2KK :: * -> *))
                         (@a_a2KL)
                         (ds_d350 :: StepT m_a2KK a_a2KL) ->
                         Skip @m_a2KK @a_a2KL ds_d350)
                        @IO
                        @o_a2MD
                        (go_a2Ad
                           @i_a2MC @o_a2MD (\ (@x_a2MT) -> runRes_a2Ak @x_a2MT) (up_a2Am ()));
                    Done ds_d353 ->
                      case ds_d353 of wild_00 { () ->
                      (\ (@(m_a2KK :: * -> *)) (@a_a2KL) -> Stop @m_a2KK @a_a2KL)
                        @IO @o_a2MD
                      };
                    PipeM m_a2Ao ->
                      $ @LiftedRep
                        @(IO (StepT IO o_a2MD))
                        @(StepT IO o_a2MD)
                        ((\ (@(m_a2KK :: * -> *))
                            (@a_a2KL)
                            (ds_d351 :: m_a2KK (StepT m_a2KK a_a2KL)) ->
                            Effect @m_a2KK @a_a2KL ds_d351)
                           @IO @o_a2MD)
                        (($ @LiftedRep
                            @(ResourceT m_a2Kp (StepT IO o_a2MD))
                            @(m_a2Kp (StepT IO o_a2MD))
                            (runRes_a2An @(StepT IO o_a2MD))
                            (fmap
                               @(ResourceT m_a2Kp)
                               $dFunctor_a2Nc
                               @(Pipe i_a2MC i_a2MC o_a2MD () (ResourceT m_a2Kp) ())
                               @(StepT IO o_a2MD)
                               (go_a2Ad @i_a2MC @o_a2MD (\ (@x_a2Nh) -> runRes_a2An @x_a2Nh))
                               m_a2Ao))
                         `cast` (Sub (co_a2UW <StepT IO o_a2MD>_N)
                                 :: m_a2Kp[ssk:1] (StepT IO o_a2MD) ~R# IO (StepT IO o_a2MD)));
                    Leftover p_a2Aq _l_a2Ar ->
                      (\ (@(m_a2KK :: * -> *))
                         (@a_a2KL)
                         (ds_d352 :: StepT m_a2KK a_a2KL) ->
                         Skip @m_a2KK @a_a2KL ds_d352)
                        @IO
                        @o_a2MD
                        (go_a2Ad
                           @i_a2MC @o_a2MD (\ (@x_a2No) -> runRes_a2Ap @x_a2No) p_a2Aq)
                  }; } in
        $ @LiftedRep
          @(forall b. (StepT IO o_a2Kw -> IO b) -> IO b)
          @(SourceT IO o_a2Kw)
          ((\ (@(m_a2IM :: * -> *))
              (@a_a2IN)
              (ds_d2Wj
                 :: forall b. (StepT m_a2IM a_a2IN -> m_a2IM b) -> m_a2IM b) ->
              SourceT @m_a2IM @a_a2IN ds_d2Wj)
             @IO @o_a2Kw)
          (\ (@b_a2Nz) ->
             let {
               $dMonadUnliftIO_a2NK :: MonadUnliftIO IO
               [LclId]
               $dMonadUnliftIO_a2NK = $fMonadUnliftIOIO } in
             let {
               $dMonadUnliftIO_a2NR :: MonadUnliftIO (ResourceT IO)
               [LclId]
               $dMonadUnliftIO_a2NR
                 = $fMonadUnliftIOResourceT @IO $dMonadUnliftIO_a2NK } in
             \ (k_a2As :: StepT IO o_a2Kw -> IO b_a2Nz) ->
               $ @LiftedRep
                 @(ResourceT IO b_a2Nz)
                 @(IO b_a2Nz)
                 (runResourceT @IO @b_a2Nz $dMonadUnliftIO_a2NK)
                 ($ @LiftedRep
                    @((forall a. ResourceT IO a -> IO a) -> IO b_a2Nz)
                    @(ResourceT IO b_a2Nz)
                    (withRunInIO @(ResourceT IO) $dMonadUnliftIO_a2NR @b_a2Nz)
                    (\ (runRes_a2At :: forall a. ResourceT IO a -> IO a) ->
                       k_a2As
                         (go_a2Ad
                            @i_a2Kv
                            @o_a2Kw
                            (\ (@x_a2NW) ->
                               (runRes_a2At @x_a2NW)
                               `cast` ((ResourceT (Sub (Sym co_a2UW)) <x_a2NW>_N)_R
                                       %<'Many>_N ->_R Sub (Sym co_a2UW <x_a2NW>_N)
                                       :: (ResourceT IO x_a2NW -> IO x_a2NW)
                                          ~R# (ResourceT m_a2Kp[ssk:1] x_a2NW
                                               -> m_a2Kp[ssk:1] x_a2NW)))
                            (con_a2Ac
                               @()
                               ((\ (@l_a2I1)
                                   (@i_a2I2)
                                   (@o_a2I3)
                                   (@u_a2I4)
                                   (@(m_a2I5 :: * -> *))
                                   (@r_a2I6)
                                   (ds_d2Ww :: r_a2I6) ->
                                   Done @l_a2I1 @i_a2I2 @o_a2I3 @u_a2I4 @m_a2I5 @r_a2I6 ds_d2Ww)
                                  @i_a2Kv @i_a2Kv @o_a2Kw @() @(ResourceT m_a2Kp) @()))))))
      }

$fConduitToSourceIOIO [InlPrag=INLINE (sat-args=0)]
  :: ConduitToSourceIO IO
[LclIdX[DFunId(nt)],
 Unf=Unf{Src=InlineStable, TopLvl=True, Value=False, ConLike=False,
         WorkFree=True, Expandable=True,
         Guidance=ALWAYS_IF(arity=0,unsat_ok=False,boring_ok=True)
         Tmpl= $cconduitToSourceIO_a2Oe
               `cast` (Sym (N:ConduitToSourceIO[0] <IO>_N)
                       :: (forall i o. ConduitT i o IO () -> SourceIO o)
                          ~R# ConduitToSourceIO IO)}]
$fConduitToSourceIOIO
  = C:ConduitToSourceIO @IO $cconduitToSourceIO_a2Oe

$cconduitToSourceIO_a2Oe
  :: forall i o. ConduitT i o IO () -> SourceIO o
[LclId]
$cconduitToSourceIO_a2Oe
  = \ (@i_a2Oh)
      (@o_a2Oi)
      (ds_d354 :: ConduitT i_a2Oh o_a2Oi IO ()) ->
      let {
        con_a2Au
          :: forall b.
             (() -> Pipe i_a2Oh i_a2Oh o_a2Oi () IO b)
             -> Pipe i_a2Oh i_a2Oh o_a2Oi () IO b
        [LclId]
        con_a2Au
          = ds_d354
            `cast` (N:ConduitT[0] <i_a2Oh>_N <o_a2Oi>_N <IO>_N <()>_R
                    :: ConduitT i_a2Oh o_a2Oi IO ()
                       ~R# (forall b.
                            (() -> Pipe i_a2Oh i_a2Oh o_a2Oi () IO b)
                            -> Pipe i_a2Oh i_a2Oh o_a2Oi () IO b)) } in
      letrec {
        go_a2Av
          :: forall {m :: * -> *} {l} {i} {a}.
             Functor m =>
             Pipe l i a () m () -> StepT m a
        [LclId]
        go_a2Av
          = \ (@(m_a2Oz :: * -> *))
              (@l_a2Ot)
              (@i_a2Ou)
              (@a_a2OA)
              ($dFunctor_a2RS :: Functor m_a2Oz) ->
              let {
                $dFunctor_a2OU :: Functor m_a2Oz
                [LclId]
                $dFunctor_a2OU = $dFunctor_a2RS } in
              letrec {
                go_a2Ol
                  :: Pipe l_a2Ot i_a2Ou a_a2OA () m_a2Oz () -> StepT m_a2Oz a_a2OA
                [LclId]
                go_a2Ol
                  = \ (p0_a2Aw :: Pipe l_a2Ot i_a2Ou a_a2OA () m_a2Oz ()) ->
                      let {
                        ds_d359 :: Pipe l_a2Ot i_a2Ou a_a2OA () m_a2Oz ()
                        [LclId]
                        ds_d359 = p0_a2Aw } in
                      case ds_d359 of wild_00 {
                        HaveOutput p_a2Ax o_a2Ay ->
                          (\ (@(m_a2KK :: * -> *))
                             (@a_a2KL)
                             (ds_d35i :: a_a2KL)
                             (ds_d35j :: StepT m_a2KK a_a2KL) ->
                             Yield @m_a2KK @a_a2KL ds_d35i ds_d35j)
                            @m_a2Oz @a_a2OA o_a2Ay (go_a2Ol p_a2Ax);
                        NeedInput _ip_a2Az up_a2AA ->
                          (\ (@(m_a2KK :: * -> *))
                             (@a_a2KL)
                             (ds_d35k :: StepT m_a2KK a_a2KL) ->
                             Skip @m_a2KK @a_a2KL ds_d35k)
                            @m_a2Oz @a_a2OA (go_a2Ol (up_a2AA ()));
                        Done ds_d35n ->
                          case ds_d35n of wild_00 { () ->
                          (\ (@(m_a2KK :: * -> *)) (@a_a2KL) -> Stop @m_a2KK @a_a2KL)
                            @m_a2Oz @a_a2OA
                          };
                        PipeM m_a2AB ->
                          $ @LiftedRep
                            @(m_a2Oz (StepT m_a2Oz a_a2OA))
                            @(StepT m_a2Oz a_a2OA)
                            ((\ (@(m_a2KK :: * -> *))
                                (@a_a2KL)
                                (ds_d35l :: m_a2KK (StepT m_a2KK a_a2KL)) ->
                                Effect @m_a2KK @a_a2KL ds_d35l)
                               @m_a2Oz @a_a2OA)
                            (fmap
                               @m_a2Oz
                               $dFunctor_a2OU
                               @(Pipe l_a2Ot i_a2Ou a_a2OA () m_a2Oz ())
                               @(StepT m_a2Oz a_a2OA)
                               go_a2Ol
                               m_a2AB);
                        Leftover p_a2AC _l_a2AD ->
                          (\ (@(m_a2KK :: * -> *))
                             (@a_a2KL)
                             (ds_d35m :: StepT m_a2KK a_a2KL) ->
                             Skip @m_a2KK @a_a2KL ds_d35m)
                            @m_a2Oz @a_a2OA (go_a2Ol p_a2AC)
                      }; } in
              go_a2Ol; } in
      (\ (@(m_a2IM :: * -> *))
         (@a_a2IN)
         (ds_d355
            :: forall b. (StepT m_a2IM a_a2IN -> m_a2IM b) -> m_a2IM b) ->
         SourceT @m_a2IM @a_a2IN ds_d355)
        @IO
        @o_a2Oi
        (\ (@b_a2S9) ->
           let {
             $dFunctor_a2Sp :: Functor IO
             [LclId]
             $dFunctor_a2Sp = $fFunctorIO } in
           rightSection
             @LiftedRep
             @LiftedRep
             @LiftedRep
             @'Many
             @'Many
             @(StepT IO o_a2Oi -> IO b_a2S9)
             @(StepT IO o_a2Oi)
             @(IO b_a2S9)
             ($ @LiftedRep @(StepT IO o_a2Oi) @(IO b_a2S9))
             (go_a2Av
                @IO
                @i_a2Oh
                @i_a2Oh
                @o_a2Oi
                $dFunctor_a2Sp
                (con_a2Au
                   @()
                   ((\ (@l_a2I1)
                       (@i_a2I2)
                       (@o_a2I3)
                       (@u_a2I4)
                       (@(m_a2I5 :: * -> *))
                       (@r_a2I6)
                       (ds_d356 :: r_a2I6) ->
                       Done @l_a2I1 @i_a2I2 @o_a2I3 @u_a2I4 @m_a2I5 @r_a2I6 ds_d356)
                      @i_a2Oh @i_a2Oh @o_a2Oi @() @IO @()))))

$fFromSourceIOoConduitT [InlPrag=INLINE (sat-args=0)]
  :: forall (m :: * -> *) r o i.
     (MonadIO m, r ~ ()) =>
     FromSourceIO o (ConduitT i o m r)
[LclIdX[DFunId(nt)],
 Unf=Unf{Src=InlineStable, TopLvl=True, Value=True, ConLike=True,
         WorkFree=True, Expandable=True,
         Guidance=ALWAYS_IF(arity=2,unsat_ok=False,boring_ok=True)
         Tmpl= \ (@(m_a2SC :: * -> *))
                 (@r_a2SD)
                 (@o_a2SE)
                 (@i_a2SF)
                 ($dMonadIO_a2SG [Occ=Once1] :: MonadIO m_a2SC)
                 ($d~_a2SH [Occ=Once1] :: r_a2SD ~ ()) ->
                 ($cfromSourceIO_a2SJ
                    @m_a2SC @r_a2SD @o_a2SE @i_a2SF $dMonadIO_a2SG $d~_a2SH)
                 `cast` (Sym (N:FromSourceIO[0] <o_a2SE>_N) <ConduitT
                                                               i_a2SF o_a2SE m_a2SC r_a2SD>_N
                         :: (SourceIO o_a2SE -> ConduitT i_a2SF o_a2SE m_a2SC r_a2SD)
                            ~R# FromSourceIO o_a2SE (ConduitT i_a2SF o_a2SE m_a2SC r_a2SD))}]
$fFromSourceIOoConduitT
  = \ (@(m_a2SC :: * -> *))
      (@r_a2SD)
      (@o_a2SE)
      (@i_a2SF)
      ($dMonadIO_a2SG :: MonadIO m_a2SC)
      ($d~_a2SH :: r_a2SD ~ ()) ->
      C:FromSourceIO
        @o_a2SE
        @(ConduitT i_a2SF o_a2SE m_a2SC r_a2SD)
        ($cfromSourceIO_a2SJ
           @m_a2SC @r_a2SD @o_a2SE @i_a2SF $dMonadIO_a2SG $d~_a2SH)

$cfromSourceIO_a2SJ
  :: forall (m :: * -> *) r o i.
     (MonadIO m, r ~ ()) =>
     SourceIO o -> ConduitT i o m r
[LclId,
 RULES: "SPEC $cfromSourceIO"
            forall (@i_a2SF)
                   (@o_a2SE)
                   ($d~_a2UP :: () ~ ())
                   ($dMonadIO_a2UO :: MonadIO IO).
              $cfromSourceIO_a2SJ @IO @() @o_a2SE @i_a2SF $dMonadIO_a2UO $d~_a2UP
              = $s$cfromSourceIO_d35Z]
$cfromSourceIO_a2SJ
  = \ (@(m_a2SC :: * -> *))
      (@r_a2SD)
      (@o_a2SE)
      (@i_a2SF)
      ($dMonadIO_a2SG :: MonadIO m_a2SC)
      ($d~_a2SH :: r_a2SD ~ ()) ->
      case eq_sel @(*) @r_a2SD @() $d~_a2SH of co_a2Vc { __DEFAULT ->
      \ (src_a2zD :: SourceIO o_a2SE) ->
        letrec {
          loop_a2zE
            :: forall b.
               MonadIO m_a2SC =>
               (() -> Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b)
               -> StepT IO o_a2SE -> IO (Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b)
          [LclId]
          loop_a2zE
            = \ (@b_a2T9) ($dMonadIO_a2Ta :: MonadIO m_a2SC) ->
                let {
                  $dMonadIO_a2TW :: MonadIO m_a2SC
                  [LclId]
                  $dMonadIO_a2TW = $dMonadIO_a2SG } in
                let {
                  $dMonadIO_a2TT :: MonadIO m_a2SC
                  [LclId]
                  $dMonadIO_a2TT = $dMonadIO_a2SG } in
                let {
                  $dMonadIO_a2Tv :: MonadIO m_a2SC
                  [LclId]
                  $dMonadIO_a2Tv = $dMonadIO_a2SG } in
                let {
                  $dMonadIO_a2Tn :: MonadIO m_a2SC
                  [LclId]
                  $dMonadIO_a2Tn = $dMonadIO_a2SG } in
                let {
                  $dMonadFail_a2Tk :: MonadFail IO
                  [LclId]
                  $dMonadFail_a2Tk = $fMonadFailIO } in
                let {
                  $dMonad_a2Td :: Monad IO
                  [LclId]
                  $dMonad_a2Td = $fMonadIO } in
                let {
                  $dMonad_a2Tr :: Monad IO
                  [LclId]
                  $dMonad_a2Tr = $dMonad_a2Td } in
                let {
                  $dMonad_a2Tx :: Monad IO
                  [LclId]
                  $dMonad_a2Tx = $dMonad_a2Td } in
                \ (con_a2zG :: () -> Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2T9)
                  (ds_d35K :: StepT IO o_a2SE) ->
                  let {
                    _con_a2zH :: () -> Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2T9
                    [LclId]
                    _con_a2zH = con_a2zG } in
                  let {
                    con_a2zY :: () -> Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2T9
                    [LclId]
                    con_a2zY = con_a2zG } in
                  let {
                    con_a2A0 :: () -> Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2T9
                    [LclId]
                    con_a2A0 = con_a2zG } in
                  let {
                    con_a2A2 :: () -> Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2T9
                    [LclId]
                    con_a2A2 = con_a2zG } in
                  case ds_d35K of wild_00 {
                    Stop ->
                      return
                        @IO
                        $dMonad_a2Td
                        @(Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2T9)
                        (con_a2zG ());
                    Error err_a2zI ->
                      fail
                        @IO
                        $dMonadFail_a2Tk
                        @(Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2T9)
                        err_a2zI;
                    Skip s_a2zZ -> loop_a2zE @b_a2T9 $dMonadIO_a2Tn con_a2zY s_a2zZ;
                    Yield x_a2A3 s_a2A4 ->
                      return
                        @IO
                        $dMonad_a2Tx
                        @(Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2T9)
                        ((\ (@l_a2I1)
                            (@i_a2I2)
                            (@o_a2I3)
                            (@u_a2I4)
                            (@(m_a2I5 :: * -> *))
                            (@r_a2I6)
                            (ds_d35W :: Pipe l_a2I1 i_a2I2 o_a2I3 u_a2I4 m_a2I5 r_a2I6)
                            (ds_d35X :: o_a2I3) ->
                            HaveOutput
                              @l_a2I1 @i_a2I2 @o_a2I3 @u_a2I4 @m_a2I5 @r_a2I6 ds_d35W ds_d35X)
                           @i_a2SF
                           @i_a2SF
                           @o_a2SE
                           @()
                           @m_a2SC
                           @b_a2T9
                           ((\ (@l_a2I1)
                               (@i_a2I2)
                               (@o_a2I3)
                               (@u_a2I4)
                               (@(m_a2I5 :: * -> *))
                               (@r_a2I6)
                               (ds_d35Y
                                  :: m_a2I5 (Pipe l_a2I1 i_a2I2 o_a2I3 u_a2I4 m_a2I5 r_a2I6)) ->
                               PipeM @l_a2I1 @i_a2I2 @o_a2I3 @u_a2I4 @m_a2I5 @r_a2I6 ds_d35Y)
                              @i_a2SF
                              @i_a2SF
                              @o_a2SE
                              @()
                              @m_a2SC
                              @b_a2T9
                              ($ @LiftedRep
                                 @(IO (Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2T9))
                                 @(m_a2SC (Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2T9))
                                 (liftIO
                                    @m_a2SC
                                    $dMonadIO_a2TT
                                    @(Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2T9))
                                 (loop_a2zE @b_a2T9 $dMonadIO_a2TW con_a2A2 s_a2A4)))
                           x_a2A3);
                    Effect ms_a2A1 ->
                      >>=
                        @IO
                        $dMonad_a2Tr
                        @(StepT IO o_a2SE)
                        @(Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2T9)
                        ms_a2A1
                        (loop_a2zE @b_a2T9 $dMonadIO_a2Tv con_a2A0)
                  }; } in
        $ @LiftedRep
          @(forall b.
            (r_a2SD -> Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b)
            -> Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b)
          @(ConduitT i_a2SF o_a2SE m_a2SC r_a2SD)
          ((\ (@i_a2Hb)
              (@o_a2Hc)
              (@(m_a2Hd :: * -> *))
              (@r_a2He)
              (ds_d35E
                 :: forall b.
                    (r_a2He -> Pipe i_a2Hb i_a2Hb o_a2Hc () m_a2Hd b)
                    -> Pipe i_a2Hb i_a2Hb o_a2Hc () m_a2Hd b) ->
              ConduitT @i_a2Hb @o_a2Hc @m_a2Hd @r_a2He ds_d35E)
             @i_a2SF @o_a2SE @m_a2SC @r_a2SD)
          (\ (@b_a2U7) ->
             let {
               $dMonadIO_a2Uy :: MonadIO m_a2SC
               [LclId]
               $dMonadIO_a2Uy = $dMonadIO_a2SG } in
             let {
               $dMonadIO_a2Um :: MonadIO m_a2SC
               [LclId]
               $dMonadIO_a2Um = $dMonadIO_a2SG } in
             \ (con_a2A5
                  :: r_a2SD -> Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2U7) ->
               $ @LiftedRep
                 @(m_a2SC (Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2U7))
                 @(Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2U7)
                 ((\ (@l_a2I1)
                     (@i_a2I2)
                     (@o_a2I3)
                     (@u_a2I4)
                     (@(m_a2I5 :: * -> *))
                     (@r_a2I6)
                     (ds_d35F
                        :: m_a2I5 (Pipe l_a2I1 i_a2I2 o_a2I3 u_a2I4 m_a2I5 r_a2I6)) ->
                     PipeM @l_a2I1 @i_a2I2 @o_a2I3 @u_a2I4 @m_a2I5 @r_a2I6 ds_d35F)
                    @i_a2SF @i_a2SF @o_a2SE @() @m_a2SC @b_a2U7)
                 ($ @LiftedRep
                    @(IO (Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2U7))
                    @(m_a2SC (Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2U7))
                    (liftIO
                       @m_a2SC
                       $dMonadIO_a2Um
                       @(Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2U7))
                    ($ @LiftedRep
                       @(StepT IO o_a2SE
                         -> IO (Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2U7))
                       @(IO (Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2U7))
                       (unSourceT
                          @IO @o_a2SE src_a2zD @(Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2U7))
                       (\ (step_a2A6 :: StepT IO o_a2SE) ->
                          loop_a2zE
                            @b_a2U7
                            $dMonadIO_a2Uy
                            (con_a2A5
                             `cast` (Sub co_a2Vc
                                     %<'Many>_N ->_R <Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2U7>_R
                                     :: (r_a2SD[ssk:1]
                                         -> Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2U7)
                                        ~R# (() -> Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2U7)))
                            step_a2A6))))
      }

$s$cfromSourceIO_d35Z [InlPrag=INLINE (sat-args=1)]
  :: SourceIO o_a2SE -> ConduitT i_a2SF o_a2SE IO ()
[LclId]
$s$cfromSourceIO_d35Z
  = (\ (@(m_a2SC :: * -> *))
       (@r_a2SD)
       (@o_a2SE)
       (@i_a2SF)
       ($dMonadIO_a2SG :: MonadIO m_a2SC)
       ($d~_a2SH :: r_a2SD ~ ()) ->
       case eq_sel @(*) @r_a2SD @() $d~_a2SH of co_a2Vc { __DEFAULT ->
       \ (src_a2zD :: SourceIO o_a2SE) ->
         letrec {
           loop_a2zE
             :: forall b.
                MonadIO m_a2SC =>
                (() -> Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b)
                -> StepT IO o_a2SE -> IO (Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b)
           [LclId]
           loop_a2zE
             = \ (@b_a2T9) ($dMonadIO_a2Ta :: MonadIO m_a2SC) ->
                 let {
                   $dMonadIO_a2TW :: MonadIO m_a2SC
                   [LclId]
                   $dMonadIO_a2TW = $dMonadIO_a2SG } in
                 let {
                   $dMonadIO_a2TT :: MonadIO m_a2SC
                   [LclId]
                   $dMonadIO_a2TT = $dMonadIO_a2SG } in
                 let {
                   $dMonadIO_a2Tv :: MonadIO m_a2SC
                   [LclId]
                   $dMonadIO_a2Tv = $dMonadIO_a2SG } in
                 let {
                   $dMonadIO_a2Tn :: MonadIO m_a2SC
                   [LclId]
                   $dMonadIO_a2Tn = $dMonadIO_a2SG } in
                 let {
                   $dMonadFail_a2Tk :: MonadFail IO
                   [LclId]
                   $dMonadFail_a2Tk = $fMonadFailIO } in
                 let {
                   $dMonad_a2Td :: Monad IO
                   [LclId]
                   $dMonad_a2Td = $fMonadIO } in
                 let {
                   $dMonad_a2Tr :: Monad IO
                   [LclId]
                   $dMonad_a2Tr = $dMonad_a2Td } in
                 let {
                   $dMonad_a2Tx :: Monad IO
                   [LclId]
                   $dMonad_a2Tx = $dMonad_a2Td } in
                 \ (con_a2zG :: () -> Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2T9)
                   (ds_d35K :: StepT IO o_a2SE) ->
                   let {
                     _con_a2zH :: () -> Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2T9
                     [LclId]
                     _con_a2zH = con_a2zG } in
                   let {
                     con_a2zY :: () -> Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2T9
                     [LclId]
                     con_a2zY = con_a2zG } in
                   let {
                     con_a2A0 :: () -> Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2T9
                     [LclId]
                     con_a2A0 = con_a2zG } in
                   let {
                     con_a2A2 :: () -> Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2T9
                     [LclId]
                     con_a2A2 = con_a2zG } in
                   case ds_d35K of wild_00 {
                     Stop ->
                       return
                         @IO
                         $dMonad_a2Td
                         @(Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2T9)
                         (con_a2zG ());
                     Error err_a2zI ->
                       fail
                         @IO
                         $dMonadFail_a2Tk
                         @(Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2T9)
                         err_a2zI;
                     Skip s_a2zZ -> loop_a2zE @b_a2T9 $dMonadIO_a2Tn con_a2zY s_a2zZ;
                     Yield x_a2A3 s_a2A4 ->
                       return
                         @IO
                         $dMonad_a2Tx
                         @(Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2T9)
                         ((\ (@l_a2I1)
                             (@i_a2I2)
                             (@o_a2I3)
                             (@u_a2I4)
                             (@(m_a2I5 :: * -> *))
                             (@r_a2I6)
                             (ds_d35W :: Pipe l_a2I1 i_a2I2 o_a2I3 u_a2I4 m_a2I5 r_a2I6)
                             (ds_d35X :: o_a2I3) ->
                             HaveOutput
                               @l_a2I1 @i_a2I2 @o_a2I3 @u_a2I4 @m_a2I5 @r_a2I6 ds_d35W ds_d35X)
                            @i_a2SF
                            @i_a2SF
                            @o_a2SE
                            @()
                            @m_a2SC
                            @b_a2T9
                            ((\ (@l_a2I1)
                                (@i_a2I2)
                                (@o_a2I3)
                                (@u_a2I4)
                                (@(m_a2I5 :: * -> *))
                                (@r_a2I6)
                                (ds_d35Y
                                   :: m_a2I5 (Pipe l_a2I1 i_a2I2 o_a2I3 u_a2I4 m_a2I5 r_a2I6)) ->
                                PipeM @l_a2I1 @i_a2I2 @o_a2I3 @u_a2I4 @m_a2I5 @r_a2I6 ds_d35Y)
                               @i_a2SF
                               @i_a2SF
                               @o_a2SE
                               @()
                               @m_a2SC
                               @b_a2T9
                               ($ @LiftedRep
                                  @(IO (Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2T9))
                                  @(m_a2SC (Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2T9))
                                  (liftIO
                                     @m_a2SC
                                     $dMonadIO_a2TT
                                     @(Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2T9))
                                  (loop_a2zE @b_a2T9 $dMonadIO_a2TW con_a2A2 s_a2A4)))
                            x_a2A3);
                     Effect ms_a2A1 ->
                       >>=
                         @IO
                         $dMonad_a2Tr
                         @(StepT IO o_a2SE)
                         @(Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2T9)
                         ms_a2A1
                         (loop_a2zE @b_a2T9 $dMonadIO_a2Tv con_a2A0)
                   }; } in
         $ @LiftedRep
           @(forall b.
             (r_a2SD -> Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b)
             -> Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b)
           @(ConduitT i_a2SF o_a2SE m_a2SC r_a2SD)
           ((\ (@i_a2Hb)
               (@o_a2Hc)
               (@(m_a2Hd :: * -> *))
               (@r_a2He)
               (ds_d35E
                  :: forall b.
                     (r_a2He -> Pipe i_a2Hb i_a2Hb o_a2Hc () m_a2Hd b)
                     -> Pipe i_a2Hb i_a2Hb o_a2Hc () m_a2Hd b) ->
               ConduitT @i_a2Hb @o_a2Hc @m_a2Hd @r_a2He ds_d35E)
              @i_a2SF @o_a2SE @m_a2SC @r_a2SD)
           (\ (@b_a2U7) ->
              let {
                $dMonadIO_a2Uy :: MonadIO m_a2SC
                [LclId]
                $dMonadIO_a2Uy = $dMonadIO_a2SG } in
              let {
                $dMonadIO_a2Um :: MonadIO m_a2SC
                [LclId]
                $dMonadIO_a2Um = $dMonadIO_a2SG } in
              \ (con_a2A5
                   :: r_a2SD -> Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2U7) ->
                $ @LiftedRep
                  @(m_a2SC (Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2U7))
                  @(Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2U7)
                  ((\ (@l_a2I1)
                      (@i_a2I2)
                      (@o_a2I3)
                      (@u_a2I4)
                      (@(m_a2I5 :: * -> *))
                      (@r_a2I6)
                      (ds_d35F
                         :: m_a2I5 (Pipe l_a2I1 i_a2I2 o_a2I3 u_a2I4 m_a2I5 r_a2I6)) ->
                      PipeM @l_a2I1 @i_a2I2 @o_a2I3 @u_a2I4 @m_a2I5 @r_a2I6 ds_d35F)
                     @i_a2SF @i_a2SF @o_a2SE @() @m_a2SC @b_a2U7)
                  ($ @LiftedRep
                     @(IO (Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2U7))
                     @(m_a2SC (Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2U7))
                     (liftIO
                        @m_a2SC
                        $dMonadIO_a2Um
                        @(Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2U7))
                     ($ @LiftedRep
                        @(StepT IO o_a2SE
                          -> IO (Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2U7))
                        @(IO (Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2U7))
                        (unSourceT
                           @IO @o_a2SE src_a2zD @(Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2U7))
                        (\ (step_a2A6 :: StepT IO o_a2SE) ->
                           loop_a2zE
                             @b_a2U7
                             $dMonadIO_a2Uy
                             (con_a2A5
                              `cast` (Sub co_a2Vc
                                      %<'Many>_N ->_R <Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2U7>_R
                                      :: (r_a2SD[ssk:1]
                                          -> Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2U7)
                                         ~R# (() -> Pipe i_a2SF i_a2SF o_a2SE () m_a2SC b_a2U7)))
                             step_a2A6))))
       })
      @IO @() @o_a2SE @i_a2SF $dMonadIO_a2UO $d~_a2UP
end Rec }

*** End of Offense ***


<no location info>: error: 
Compilation had errors

## Expected behavior

Environment

  • GHC version used: 9.2.5
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information