summaryrefslogtreecommitdiff
path: root/testsuite/tests/th/T17296.hs
blob: a493923db110853485c6215bda1e00eecac7bf6b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
module T17296 where

import Data.Foldable
import Data.Kind
import Language.Haskell.TH hiding (Type)
import System.IO

data family   Foo1 :: Type -> Type
data instance Foo1 Bool = Foo1Bool
data instance Foo1 (Maybe a)

data family   Foo2 :: k -> Type
data instance Foo2 Bool = Foo2Bool
data instance Foo2 (Maybe a)
data instance Foo2 :: Char -> Type
data instance Foo2 :: (Char -> Char) -> Type where

data family   Foo3 :: k
data instance Foo3
data instance Foo3 Bool = Foo3Bool
data instance Foo3 (Maybe a)
data instance Foo3 :: Char -> Type
data instance Foo3 :: (Char -> Char) -> Type where

$(do let test :: Name -> Q ()
         test n = do i <- reify n
                     runIO $ do hPutStrLn stderr $ pprint i
                                hPutStrLn stderr ""
                                hFlush stderr

     traverse_ test [''Foo1, ''Foo2, ''Foo3]
     pure [])