Commit 5512c723 authored by Simon Peyton Jones's avatar Simon Peyton Jones

Test for existential record update (cf Trac #2595)

parent fe5776b4
......@@ -258,6 +258,7 @@ test('tc240', normal, compile, [''])
test('tc241', normal, compile, [''])
test('tc242', normal, compile, [''])
test('tc243', normal, compile, [''])
test('tc244', normal, compile, [''])
test('FD1', normal, compile_fail, [''])
test('FD2', normal, compile_fail, [''])
......
{-# LANGUAGE TypeFamilies, GADTs #-}
-- Tests record update in the presence of
-- existentials, GADTs, type families
module Rec where
----------------- Existential
data S a where
S1 { fs1 :: a, fs2 :: b } :: S a
S2 { fs1 :: a } :: S a
updS s x = s { fs1=x }
------------------ GADT
data T a b where
T1 { ft1 :: a, ft2 :: c, ft3 :: d } :: T a Int
T2 { ft1 :: a, ft3 :: c } :: T a Int
T3 :: T Int b
f :: T a1 b -> a2 -> T a2 b
f x v = x { ft1 = v }
------------------ Type family
data family R a
data instance R (a,b) where
R1 { fr1 :: a, fr2 :: b, fr3 :: c } :: R (a,b)
R2 { fr1 :: a, fr3 :: c } :: R (a,b)
updR r x = r { fr1=x }
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment