summaryrefslogtreecommitdiff
path: root/testsuite/tests/th/T17380.hs
blob: c0908532a1166b80b639683dd4f9998e4881f26f (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
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TemplateHaskell #-}
module T17380 where

import Data.Proxy
import Language.Haskell.TH

foo :: $(tupleT 1 `appT` (conT ''Maybe `appT` conT ''String))
foo = Just "wat"

bar :: Maybe String
bar = $(tupE [[| Just "wat" |]])

baz :: $(tupleT 1 `appT` (conT ''Maybe `appT` conT ''String)) -> Maybe String
baz (Just "wat") = Just "frerf"

quux :: Maybe String -> Maybe String
quux $(tupP [[p| Just "wat" |]]) = Just "frerf"

quuz :: Proxy $(promotedTupleT 1 `appT` (conT ''Maybe `appT` conT ''String))
quuz = Proxy :: Proxy (Maybe String)

fred :: Proxy (Maybe String)
fred = Proxy :: Proxy $(promotedTupleT 1 `appT` (conT ''Maybe `appT` conT ''String))