summaryrefslogtreecommitdiff
path: root/testsuite/tests/th/T10828b.hs
blob: 1db3b0840c39ca5286744189a8871fe330244301 (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
38
39
{-# LANGUAGE TemplateHaskell, GADTs, ExplicitForAll, KindSignatures #-}

module T10828b where

import Language.Haskell.TH
import System.IO

-- attempting to mix GADT and normal constructors
$( return
   [ DataD [] (mkName "T")
           [ PlainTV (mkName "a") ]
           (Just StarT)
           [ NormalC
               (mkName "MkT")
               [ ( Bang NoSourceUnpackedness NoSourceStrictness
                 , VarT (mkName "a")
                 )
               , ( Bang NoSourceUnpackedness NoSourceStrictness
                 , VarT (mkName "a")
                 )
               ]
           , ForallC [PlainTV (mkName "a")]
                     [AppT (AppT EqualityT (VarT $ mkName "a"  ) )
                                           (ConT $ mkName "Int") ] $
             RecGadtC
                 [ (mkName "MkC")]
                 [ ( mkName "foo"
                   , Bang NoSourceUnpackedness NoSourceStrictness
                   , VarT (mkName "a")
                   )
                 , ( mkName "bar"
                   , Bang NoSourceUnpackedness NoSourceStrictness
                   , VarT (mkName "b")
                   )
                 ]
                 (AppT (ConT (mkName "T"))
                       (ConT (mkName "Int")))
           ]
           [] ])