summaryrefslogtreecommitdiff
path: root/testsuite/tests/typecheck/should_fail/T10698.hs
blob: 512a882da42efbe8918e650a2d042a4bc2460665 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{-# LANGUAGE RoleAnnotations #-}

module T10698 where
import Data.Coerce

data Map k a  = Map k a
type role Map nominal representational

map1 :: (k1->k2) -> Map k1 a -> Map k2 a
map1 f (Map a b) = Map (f a) b
{-# NOINLINE  [1] map1 #-}
{-# RULES
"map1/coerce" map1 coerce = coerce
 #-}


map2 :: (a -> b) -> Map k a -> Map k b
map2 f (Map a b) = Map a (f b)
{-# NOINLINE [1] map2 #-}

{-# RULES
"map2/coerce" map2 coerce = coerce
 #-}