module Lava.Error
( Error(..)
, wrong
)
where
data Error
= DelayEval
| VarEval
| CombinationalLoop
| BadCombinationalLoop
| UndefinedWire
| IncompatibleStructures
| NoEquality
| NoArithmetic
| EnumOnSymbols
| Internal_OptionNotFound
deriving (Error -> Error -> Bool
(Error -> Error -> Bool) -> (Error -> Error -> Bool) -> Eq Error
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Error -> Error -> Bool
$c/= :: Error -> Error -> Bool
== :: Error -> Error -> Bool
$c== :: Error -> Error -> Bool
Eq, Int -> Error -> ShowS
[Error] -> ShowS
Error -> String
(Int -> Error -> ShowS)
-> (Error -> String) -> ([Error] -> ShowS) -> Show Error
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Error] -> ShowS
$cshowList :: [Error] -> ShowS
show :: Error -> String
$cshow :: Error -> String
showsPrec :: Int -> Error -> ShowS
$cshowsPrec :: Int -> Error -> ShowS
Show)
wrong :: Error -> a
wrong :: Error -> a
wrong err :: Error
err =
String -> a
forall a. HasCallStack => String -> a
error (String -> a) -> String -> a
forall a b. (a -> b) -> a -> b
$
case Error
err of
DelayEval -> "evaluating a delay component"
VarEval -> "evaluating a symbolic value"
CombinationalLoop -> "combinational loop"
BadCombinationalLoop -> "short circuit"
UndefinedWire -> "undriven output"
IncompatibleStructures -> "combining incompatible structures"
NoEquality -> "no equality defined for this type"
NoArithmetic -> "arithmetic operations are not supported"
EnumOnSymbols -> "enumerating symbolic values"
Internal_OptionNotFound -> ShowS
internal "option not found"
_ -> ShowS
internal "unknown error"
internal :: String -> String
internal :: ShowS
internal msg :: String
msg = "INTERNAL ERROR: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
msg
String -> ShowS
forall a. [a] -> [a] -> [a]
++ ".\nPlease report this as a bug to `koen@cs.chalmers.se'."