packages feed

th-expand-syns-0.4.2.0: testing/Util.hs

{-# LANGUAGE CPP             #-}
{-# LANGUAGE TemplateHaskell #-}
module Util where
import           Language.Haskell.TH
import           Language.Haskell.TH.ExpandSyns

mkTest ::  Q Type -> Q Type -> Q Exp
mkTest input expected =
    do
      input' <- input
      runIO . putStrLn $ ("info: input = "++show input')
      expected' <- expected
      runIO . putStrLn $ ("info: expected = "++show expected')
      actual <- expandSyns input'
      runIO . putStrLn $ ("info:  actual  = "++show actual)
      if (pprint expected'==pprint actual) then [| putStrLn "Ok" |] else [| error "expected /= actual" |]


forallT' xs = forallT ((PlainTV . mkName) `fmap` xs)
forallT'' xs = forallT' xs (cxt [])
varT' = varT . mkName
conT' = conT . mkName

x --> y = (arrowT `appT` x) `appT` y
infixr 5 -->

#if !MIN_VERSION_template_haskell(2,8,0)
reportWarning = report False
#endif