1{-# LANGUAGE KindSignatures #-}
2{-# LANGUAGE DataKinds #-}
3{-# LANGUAGE PolyKinds #-}
4
5class C1 (a :: Bool {- 1 -}) where
6    c :: proxy a -> Int
7
8class C2 (a :: [ * ])
9
10data Baz = Baz
11data Foo = Foo
12
13class C3 (a :: [(Baz, Foo)])
14
15class C4 (a :: ( * ))
16
17
18class C5 (a :: App foo baz)
19
20class C6 (a :: (parens))
21
22data X (a :: [*])
23
24x1 = undefined :: X '[Int]
25x2 = undefined :: X '[Int, Double]
26
27data Y (a :: (*, Bool))
28
29y1 = undefined :: Y '(Double, True)
30y2 = undefined :: Y '(Double, 'False {-comment-})
31
32
33z1 = undefined :: X [ a -> b, X '[] ]
34z2 = undefined :: Y (a -> b, True)
35