Opaque Newtypes on throwIO
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)))
Please register or sign in to comment