-- | This file should not be imported directly. Import "Test.OITestGenerator" -- instead. module Test.OITestGenerator.GenHelper ( num_args_name, num_args, typeof ) where import Prelude import Language.Haskell.TH import Control.Applicative import Control.Monad num_args_name :: Name -> Q Int num_args_name name = liftM num_args $ typeof name num_args :: Type -> Int num_args (ForallT _ _ tp) = num_args tp num_args (AppT (AppT ArrowT _) tp) = 1 + num_args tp num_args _ = 0 typeof_info :: Info -> Type typeof_info (VarI _ tp _ _) = tp typeof_info (ClassOpI _ tp _ _) = tp typeof_info (DataConI _ tp _ _) = tp typeof_info (TyVarI _ tp) = tp typeof_info t = error $ "Failed pattern match in typeof_info.\n" ++ "Please file a bug report and attach the following output.\n" ++ show t typeof :: Name -> TypeQ typeof name = liftM typeof_info $ reify name