{-# LANGUAGE DeriveGeneric, DeriveAnyClass #-} module Language.Coformat.Formatter.Failure where import qualified Data.Text as T import Control.Monad.Except.CoHas import GHC.Generics data ExpectedFailure = FormatterSegfaulted T.Text -- kek deriving (Eq, Show) data UnexpectedFailure = FormatterFailure { errorCode :: Int , errorOutput :: T.Text } deriving (Eq, Show) data Failure = ExpectedFailure ExpectedFailure | UnexpectedFailure UnexpectedFailure deriving (Eq, Show, Generic, CoHas ExpectedFailure, CoHas UnexpectedFailure) failuresAreUnexpected :: Failure -> UnexpectedFailure failuresAreUnexpected (UnexpectedFailure err) = err failuresAreUnexpected (ExpectedFailure (FormatterSegfaulted out)) = FormatterFailure 0 out