afv-0.0.0: src/Error.hs
module Error
( err
, notSupported
, unexpected
, debug
, debug'
) where
import Language.C
import System.IO.Unsafe
err :: Pos a => a -> String -> b
err a m = error $ format (posOf a) ++ ": " ++ m
where
format (Position name line col) = name ++ ":" ++ show line ++ ":" ++ show col
notSupported :: Pos a => a -> String -> b
notSupported a m = err a $ " not supported: " ++ m
unexpected :: Pos a => a -> String -> b
unexpected a m = err a $ "unexpected: " ++ m
debug :: Show a => String -> a -> a
debug m a = debug' m a a
debug' :: Show a => String -> a -> b -> b
debug' m a b = unsafePerformIO (putStrLn (m ++ ": " ++ show a) >> return b)