diff options
Diffstat (limited to 'testsuite/tests/patsyn')
-rw-r--r-- | testsuite/tests/patsyn/should_fail/T11039.hs | 4 | ||||
-rw-r--r-- | testsuite/tests/patsyn/should_fail/T11039.stderr | 11 | ||||
-rw-r--r-- | testsuite/tests/patsyn/should_fail/T11039a.hs | 8 | ||||
-rw-r--r-- | testsuite/tests/patsyn/should_fail/all.T | 3 |
4 files changed, 24 insertions, 2 deletions
diff --git a/testsuite/tests/patsyn/should_fail/T11039.hs b/testsuite/tests/patsyn/should_fail/T11039.hs index 69e8d2bffd..fab58240e5 100644 --- a/testsuite/tests/patsyn/should_fail/T11039.hs +++ b/testsuite/tests/patsyn/should_fail/T11039.hs @@ -1,7 +1,9 @@ {-# LANGUAGE PatternSynonyms #-} -module Foo () where +module T11039 where data A a = A a +-- This should fail pattern Q :: () => (A ~ f) => a -> f a pattern Q a = A a + diff --git a/testsuite/tests/patsyn/should_fail/T11039.stderr b/testsuite/tests/patsyn/should_fail/T11039.stderr new file mode 100644 index 0000000000..2c7c66327c --- /dev/null +++ b/testsuite/tests/patsyn/should_fail/T11039.stderr @@ -0,0 +1,11 @@ + +T11039.hs:8:15: error: + • Couldn't match type ‘f’ with ‘A’ + ‘f’ is a rigid type variable bound by + the type signature for pattern synonym ‘Q’: + forall (f :: * -> *) a. a -> f a + at T11039.hs:7:14 + Expected type: f a + Actual type: A a + • In the pattern: A a + In the declaration for pattern synonym ‘Q’ diff --git a/testsuite/tests/patsyn/should_fail/T11039a.hs b/testsuite/tests/patsyn/should_fail/T11039a.hs new file mode 100644 index 0000000000..527a90f20b --- /dev/null +++ b/testsuite/tests/patsyn/should_fail/T11039a.hs @@ -0,0 +1,8 @@ +{-# LANGUAGE PatternSynonyms #-} +module T11039a where + +data A a = A a + +-- This should succeed +pattern Q2 :: (A ~ f) => a -> f a +pattern Q2 a = A a diff --git a/testsuite/tests/patsyn/should_fail/all.T b/testsuite/tests/patsyn/should_fail/all.T index eeb405b316..fbe5d5897b 100644 --- a/testsuite/tests/patsyn/should_fail/all.T +++ b/testsuite/tests/patsyn/should_fail/all.T @@ -16,7 +16,8 @@ test('records-mixing-fields', normal, compile_fail, ['']) test('records-exquant', normal, compile_fail, ['']) test('records-poly-update', normal, compile_fail, ['']) test('mixed-pat-syn-record-sels', normal, compile_fail, ['']) -test('T11039', [expect_broken(11039)], compile_fail, ['']) +test('T11039', normal, compile_fail, ['']) +test('T11039a', normal, compile, ['']) test('export-type', normal, compile_fail, ['']) test('export-syntax', normal, compile_fail, ['']) test('import-syntax', normal, compile_fail, ['']) |