summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrzysztof Gogolewski <krzysztof.gogolewski@tweag.io>2023-04-20 14:02:06 +0200
committerMarge Bot <ben+marge-bot@smart-cactus.org>2023-05-11 11:55:59 -0400
commitad16a0666340723b656879f4c0bb94653363608b (patch)
tree9b88da2418eee720d05fd84de53bc06aed532090
parent87eebf98cb485f7c9175330051736e147ade9848 (diff)
downloadhaskell-ad16a0666340723b656879f4c0bb94653363608b.tar.gz
Add a test for #21278
-rw-r--r--testsuite/tests/linear/should_fail/T21278.hs7
-rw-r--r--testsuite/tests/linear/should_fail/T21278.stderr13
-rw-r--r--testsuite/tests/linear/should_fail/all.T1
3 files changed, 21 insertions, 0 deletions
diff --git a/testsuite/tests/linear/should_fail/T21278.hs b/testsuite/tests/linear/should_fail/T21278.hs
new file mode 100644
index 0000000000..d256637b32
--- /dev/null
+++ b/testsuite/tests/linear/should_fail/T21278.hs
@@ -0,0 +1,7 @@
+{-# LANGUAGE LinearTypes #-}
+module T21278 where
+
+data C a = forall p. C (a %p -> a)
+
+f :: C a -> C a
+f b = C (\x -> case b of C g -> g x)
diff --git a/testsuite/tests/linear/should_fail/T21278.stderr b/testsuite/tests/linear/should_fail/T21278.stderr
new file mode 100644
index 0000000000..951fa50a05
--- /dev/null
+++ b/testsuite/tests/linear/should_fail/T21278.stderr
@@ -0,0 +1,13 @@
+
+T21278.hs:7:11: error: [GHC-25897]
+ • Couldn't match type ‘p’ with ‘Many’
+ arising from multiplicity of ‘x’
+ ‘p’ is a rigid type variable bound by
+ a pattern with constructor:
+ C :: forall a (p :: GHC.Types.Multiplicity). (a %p -> a) %1 -> C a,
+ in a case alternative
+ at T21278.hs:7:26-28
+ • In the first argument of ‘C’, namely
+ ‘(\ x -> case b of C g -> g x)’
+ In the expression: C (\ x -> case b of C g -> g x)
+ In an equation for ‘f’: f b = C (\ x -> case b of C g -> g x)
diff --git a/testsuite/tests/linear/should_fail/all.T b/testsuite/tests/linear/should_fail/all.T
index 4d8eec398e..2d7c6ed509 100644
--- a/testsuite/tests/linear/should_fail/all.T
+++ b/testsuite/tests/linear/should_fail/all.T
@@ -40,3 +40,4 @@ test('T18888_datakinds', normal, compile_fail, [''])
test('T19120', normal, compile_fail, [''])
test('T20083', normal, compile_fail, ['-XLinearTypes'])
test('T19361', normal, compile_fail, [''])
+test('T21278', normal, compile_fail, ['-XLinearTypes'])