From ad16a0666340723b656879f4c0bb94653363608b Mon Sep 17 00:00:00 2001 From: Krzysztof Gogolewski Date: Thu, 20 Apr 2023 14:02:06 +0200 Subject: Add a test for #21278 --- testsuite/tests/linear/should_fail/T21278.hs | 7 +++++++ testsuite/tests/linear/should_fail/T21278.stderr | 13 +++++++++++++ testsuite/tests/linear/should_fail/all.T | 1 + 3 files changed, 21 insertions(+) create mode 100644 testsuite/tests/linear/should_fail/T21278.hs create mode 100644 testsuite/tests/linear/should_fail/T21278.stderr (limited to 'testsuite') 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']) -- cgit v1.2.1