summaryrefslogtreecommitdiff
path: root/testsuite/tests/typecheck/should_compile/T18005.hs
blob: 8cd818bc0f52e9298277f89ab6942184c68dfbad (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
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ViewPatterns #-}
module T18005 where

type S1 = Int -> (forall a. a -> a) -> Int

data T1a = MkT1a {unT1a :: S1}
         | Dummy1

newtype T1b = MkT1b S1

unT1b' :: T1b -> S1
unT1b' (MkT1b x) = x

pattern MkT1b' :: S1 -> T1b
pattern MkT1b' {unT1b} <- (unT1b' -> unT1b)

type S2 = Int -> forall a. a -> a

data T2a = MkT2a {unT2a :: S2}
         | Dummy2

newtype T2b = MkT2b S2

unT2b' :: T2b -> S2
unT2b' (MkT2b x) = x

pattern MkT2b' :: S2 -> T2b
pattern MkT2b' {unT2b} <- (unT2b' -> unT2b)