Skip to content
Snippets Groups Projects

Opaque Newtypes on throwIO

  • Clone with SSH
  • Clone with HTTPS
  • Embed
  • Share
    The snippet can be accessed without any authentication.
    Authored by Rodrigo Mesquita
    Edited
    baseline 2.87 KiB
    throwIO :: forall e a. (HasCallStack, Exception e) => e -> IO a
    [GblId,
     Arity=3,
     Str=<ML><LP(A,A,LC(S,L),A,A,SC(S,L))><L>,
     Unf=Unf{Src=<vanilla>, TopLvl=True,
             Value=True, ConLike=True, WorkFree=True, Expandable=True,
             Guidance=IF_ARGS [30 0 0] 153 0}]
    throwIO
      = \ (@e_a1kt)
          (@a_a1ku)
          ($dIP_a1kv :: HasCallStack)
          ($dException_a1kw :: Exception e_a1kt)
          (eta_B0 :: e_a1kt) ->
          withFrozenCallStack
            @(IO a_a1ku)
            (case $dIP_a1kv
                  `cast` (GHC.Internal.Classes.N:IP <"callStack">_N <CallStack>_N
                          :: (?callStack::CallStack) ~R# CallStack)
             of wild1_a1zc {
               __DEFAULT ->
                 (GHC.Internal.Stack.Types.PushCallStack
                    GHC.Internal.IO.bracket12 GHC.Internal.IO.bracket11 wild1_a1zc)
                 `cast` (Sym (GHC.Internal.Classes.N:IP
                                  <"callStack">_N <CallStack>_N)
                         :: CallStack ~R# (?callStack::CallStack));
               GHC.Internal.Stack.Types.FreezeCallStack ds1_a1zd ->
                 wild1_a1zc
                 `cast` (Sym (GHC.Internal.Classes.N:IP
                                  <"callStack">_N <CallStack>_N)
                         :: CallStack ~R# (?callStack::CallStack))
             })
            ((\ ($dIP1_a1kJ :: HasCallStack) (s_a1zu :: State# RealWorld) ->
                case GHC.Internal.Exception.toExceptionWithBacktrace1
                       @e_a1kt
                       (case $dIP1_a1kJ
                             `cast` (GHC.Internal.Classes.N:IP <"callStack">_N <CallStack>_N
                                     :: (?callStack::CallStack) ~R# CallStack)
                        of wild1_a1zc {
                          __DEFAULT ->
                            (GHC.Internal.Stack.Types.PushCallStack
                               GHC.Internal.IO.throwIO2 GHC.Internal.IO.throwIO1 wild1_a1zc)
                            `cast` (Sym (GHC.Internal.Classes.N:IP
                                             <"callStack">_N <CallStack>_N)
                                    :: CallStack ~R# (?callStack::CallStack));
                          GHC.Internal.Stack.Types.FreezeCallStack ds1_a1zd ->
                            wild1_a1zc
                            `cast` (Sym (GHC.Internal.Classes.N:IP
                                             <"callStack">_N <CallStack>_N)
                                    :: CallStack ~R# (?callStack::CallStack))
                        })
                       $dException_a1kw
                       eta_B0
                       s_a1zu
                of
                { (# ipv_a1zw, ipv1_a1zx #) ->
                raiseIO#
                  @Lifted @LiftedRep @SomeException @a_a1ku ipv1_a1zx ipv_a1zw
                })
             `cast` (<HasCallStack>_R
                     %<Many>_N ->_R Sym (GHC.Internal.Types.N:IO <a_a1ku>_R)
                     :: (HasCallStack =>
                         State# RealWorld -> (# State# RealWorld, a_a1ku #))
                        ~R# (HasCallStack => IO a_a1ku)))
    interestingly, throwIO now specializes to NoBacktrace exception context 2.61 KiB
    GHC.Internal.IO.bracket_$sthrowIO
      :: forall a.
         HasCallStack =>
         NoBacktrace (ExceptionWithContext SomeException) -> IO a
    [GblId,
     Arity=2,
     Str=<MP(1L)><L>,
     Unf=Unf{Src=<vanilla>, TopLvl=True,
             Value=True, ConLike=True, WorkFree=True, Expandable=True,
             Guidance=IF_ARGS [0 0] 153 0}]
    GHC.Internal.IO.bracket_$sthrowIO
      = \ (@a_a1kr)
          ($dIP_a1ks :: HasCallStack)
          (eta_B0 :: NoBacktrace (ExceptionWithContext SomeException)) ->
          withFrozenCallStack
            @(IO a_a1kr)
            (GHC.Internal.Classes.C:IP
               @"callStack"
               @CallStack
               (case ip @"callStack" @CallStack $dIP_a1ks of wild1_a1z9 {
                  __DEFAULT ->
                    GHC.Internal.Stack.Types.PushCallStack
                      GHC.Internal.IO.bracket16 GHC.Internal.IO.bracket15 wild1_a1z9;
                  GHC.Internal.Stack.Types.FreezeCallStack ds1_a1za -> wild1_a1z9
                }))
            ((\ ($dIP1_a1kG :: HasCallStack) (s_a1zr :: State# RealWorld) ->
                case GHC.Internal.Exception.toExceptionWithBacktrace1
                       @(NoBacktrace (ExceptionWithContext SomeException))
                       (GHC.Internal.Classes.C:IP
                          @"callStack"
                          @CallStack
                          (case ip @"callStack" @CallStack $dIP1_a1kG of wild1_a1z9 {
                             __DEFAULT ->
                               GHC.Internal.Stack.Types.PushCallStack
                                 GHC.Internal.IO.bracket13 GHC.Internal.IO.bracket12 wild1_a1z9;
                             GHC.Internal.Stack.Types.FreezeCallStack ds1_a1za -> wild1_a1z9
                           }))
                       GHC.Internal.IO.bracket10
                       eta_B0
                       s_a1zr
                of
                { (# ipv_a1zt, ipv1_a1zu #) ->
                raiseIO#
                  @Lifted @LiftedRep @SomeException @a_a1kr ipv1_a1zu ipv_a1zt
                })
             `cast` (<HasCallStack>_R
                     %<Many>_N ->_R Sym (GHC.Internal.Types.N:IO <a_a1kr>_R)
                     :: (HasCallStack =>
                         State# RealWorld -> (# State# RealWorld, a_a1kr #))
                        ~R# (HasCallStack => IO a_a1kr)))
    
    
    ------ Local rules for imported ids --------
    "SPEC throwIO @(NoBacktrace (ExceptionWithContext SomeException)) @_"
        forall (@a_a1kr)
               ($dIP_a1ks :: HasCallStack)
               ($dException_s1BC
                  :: Exception (NoBacktrace (ExceptionWithContext SomeException))).
          throwIO @(NoBacktrace (ExceptionWithContext SomeException))
                  @a_a1kr
                  $dIP_a1ks
                  $dException_s1BC
          = GHC.Internal.IO.bracket_$sthrowIO @a_a1kr $dIP_a1ks
    
    with opaque newtypes 2.03 KiB
    throwIO :: forall e a. (HasCallStack, Exception e) => e -> IO a
    [GblId,
     Arity=3,
     Str=<MP(1L)><LP(A,A,LC(S,L),A,A,SC(S,L))><L>,
     Unf=Unf{Src=<vanilla>, TopLvl=True,
             Value=True, ConLike=True, WorkFree=True, Expandable=True,
             Guidance=IF_ARGS [0 0 0] 153 0}]
    throwIO
      = \ (@e_a1kq)
          (@a_a1kr)
          ($dIP_a1ks :: HasCallStack)
          ($dException_a1kt :: Exception e_a1kq)
          (eta_B0 :: e_a1kq) ->
          withFrozenCallStack
            @(IO a_a1kr)
            (GHC.Internal.Classes.C:IP
               @"callStack"
               @CallStack
               (case ip @"callStack" @CallStack $dIP_a1ks of wild1_a1z9 {
                  __DEFAULT ->
                    GHC.Internal.Stack.Types.PushCallStack
                      GHC.Internal.IO.bracket16 GHC.Internal.IO.bracket15 wild1_a1z9;
                  GHC.Internal.Stack.Types.FreezeCallStack ds1_a1za -> wild1_a1z9
                }))
            ((\ ($dIP1_a1kG :: HasCallStack) (s_a1zr :: State# RealWorld) ->
                case GHC.Internal.Exception.toExceptionWithBacktrace1
                       @e_a1kq
                       (GHC.Internal.Classes.C:IP
                          @"callStack"
                          @CallStack
                          (case ip @"callStack" @CallStack $dIP1_a1kG of wild1_a1z9 {
                             __DEFAULT ->
                               GHC.Internal.Stack.Types.PushCallStack
                                 GHC.Internal.IO.bracket13 GHC.Internal.IO.bracket12 wild1_a1z9;
                             GHC.Internal.Stack.Types.FreezeCallStack ds1_a1za -> wild1_a1z9
                           }))
                       $dException_a1kt
                       eta_B0
                       s_a1zr
                of
                { (# ipv_a1zt, ipv1_a1zu #) ->
                raiseIO#
                  @Lifted @LiftedRep @SomeException @a_a1kr ipv1_a1zu ipv_a1zt
                })
             `cast` (<HasCallStack>_R
                     %<Many>_N ->_R Sym (GHC.Internal.Types.N:IO <a_a1kr>_R)
                     :: (HasCallStack =>
                         State# RealWorld -> (# State# RealWorld, a_a1kr #))
                        ~R# (HasCallStack => IO a_a1kr)))
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Please register or to comment