wireform-arrow-0.1.0.0: test-derive/Test/Arrow/Derive/Instances.hs
{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Test.Arrow.Derive.Instances (
outcomeIsRejected,
) where
import Arrow.Derive
import Language.Haskell.TH (recover)
import Test.Arrow.Derive.Types
deriveArrow ''Tag
deriveArrow ''Profile
deriveArrow ''WithTag
deriveArrow ''Event
deriveArrow ''Result
{- | Witness that 'deriveArrow' rejects sum types at splice time.
The splice is wrapped in 'recover': if @deriveArrow ''Outcome@
aborts (the expected outcome for a sum type), the recovery
branch returns 'True'; otherwise 'False'. The runtime test in
"Test.Arrow.Derive" then asserts the value is 'True'.
-}
outcomeIsRejected :: Bool
outcomeIsRejected =
$( recover
[|True|]
( do
_ <- deriveArrow ''Outcome
[|False|]
)
)