summaryrefslogtreecommitdiff
path: root/testsuite/tests/overloadedrecflds/should_fail
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/overloadedrecflds/should_fail')
-rw-r--r--testsuite/tests/overloadedrecflds/should_fail/DRF9156.hs4
-rw-r--r--testsuite/tests/overloadedrecflds/should_fail/DRF9156.stderr5
-rw-r--r--testsuite/tests/overloadedrecflds/should_fail/DRFHoleFits.hs8
-rw-r--r--testsuite/tests/overloadedrecflds/should_fail/DRFHoleFits.stderr24
-rw-r--r--testsuite/tests/overloadedrecflds/should_fail/DRFHoleFits_A.hs6
-rw-r--r--testsuite/tests/overloadedrecflds/should_fail/DRFPartialFields.hs4
-rw-r--r--testsuite/tests/overloadedrecflds/should_fail/DRFPartialFields.stderr3
-rw-r--r--testsuite/tests/overloadedrecflds/should_fail/T16745.stderr14
-rw-r--r--testsuite/tests/overloadedrecflds/should_fail/T16745A.hs6
-rw-r--r--testsuite/tests/overloadedrecflds/should_fail/T16745B.hs11
-rw-r--r--testsuite/tests/overloadedrecflds/should_fail/T16745C.hs2
-rw-r--r--testsuite/tests/overloadedrecflds/should_fail/T16745D.hs4
-rw-r--r--testsuite/tests/overloadedrecflds/should_fail/all.T4
13 files changed, 95 insertions, 0 deletions
diff --git a/testsuite/tests/overloadedrecflds/should_fail/DRF9156.hs b/testsuite/tests/overloadedrecflds/should_fail/DRF9156.hs
new file mode 100644
index 0000000000..107b8047ec
--- /dev/null
+++ b/testsuite/tests/overloadedrecflds/should_fail/DRF9156.hs
@@ -0,0 +1,4 @@
+{-# LANGUAGE DuplicateRecordFields #-}
+module DRF9156 where
+data D = D1 { f1 :: Int }
+ | D2 { f1, f1 :: Int }
diff --git a/testsuite/tests/overloadedrecflds/should_fail/DRF9156.stderr b/testsuite/tests/overloadedrecflds/should_fail/DRF9156.stderr
new file mode 100644
index 0000000000..ea1d10dc10
--- /dev/null
+++ b/testsuite/tests/overloadedrecflds/should_fail/DRF9156.stderr
@@ -0,0 +1,5 @@
+
+DRF9156.hs:4:19: error:
+ Multiple declarations of ‘f1’
+ Declared at: DRF9156.hs:3:15
+ DRF9156.hs:4:19
diff --git a/testsuite/tests/overloadedrecflds/should_fail/DRFHoleFits.hs b/testsuite/tests/overloadedrecflds/should_fail/DRFHoleFits.hs
new file mode 100644
index 0000000000..bc7248f642
--- /dev/null
+++ b/testsuite/tests/overloadedrecflds/should_fail/DRFHoleFits.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE DuplicateRecordFields #-}
+module DRFHoleFits where
+import qualified DRFHoleFits_A as A
+
+data T = MkT { foo :: Int }
+
+bar = _ :: T -> Int
+baz = _ :: A.S -> Int
diff --git a/testsuite/tests/overloadedrecflds/should_fail/DRFHoleFits.stderr b/testsuite/tests/overloadedrecflds/should_fail/DRFHoleFits.stderr
new file mode 100644
index 0000000000..a5b406567f
--- /dev/null
+++ b/testsuite/tests/overloadedrecflds/should_fail/DRFHoleFits.stderr
@@ -0,0 +1,24 @@
+[1 of 2] Compiling DRFHoleFits_A ( DRFHoleFits_A.hs, DRFHoleFits_A.o )
+[2 of 2] Compiling DRFHoleFits ( DRFHoleFits.hs, DRFHoleFits.o )
+
+DRFHoleFits.hs:7:7: error:
+ • Found hole: _ :: T -> Int
+ • In the expression: _ :: T -> Int
+ In an equation for ‘bar’: bar = _ :: T -> Int
+ • Relevant bindings include
+ bar :: T -> Int (bound at DRFHoleFits.hs:7:1)
+ Valid hole fits include
+ foo :: T -> Int (defined at DRFHoleFits.hs:5:16)
+ bar :: T -> Int (defined at DRFHoleFits.hs:7:1)
+
+DRFHoleFits.hs:8:7: error:
+ • Found hole: _ :: A.S -> Int
+ • In the expression: _ :: A.S -> Int
+ In an equation for ‘baz’: baz = _ :: A.S -> Int
+ • Relevant bindings include
+ baz :: A.S -> Int (bound at DRFHoleFits.hs:8:1)
+ Valid hole fits include
+ baz :: A.S -> Int (defined at DRFHoleFits.hs:8:1)
+ DRFHoleFits_A.foo :: A.S -> Int
+ (imported qualified from ‘DRFHoleFits_A’ at DRFHoleFits.hs:3:1-35
+ (and originally defined at DRFHoleFits_A.hs:5:16-18))
diff --git a/testsuite/tests/overloadedrecflds/should_fail/DRFHoleFits_A.hs b/testsuite/tests/overloadedrecflds/should_fail/DRFHoleFits_A.hs
new file mode 100644
index 0000000000..02d9bddb99
--- /dev/null
+++ b/testsuite/tests/overloadedrecflds/should_fail/DRFHoleFits_A.hs
@@ -0,0 +1,6 @@
+{-# LANGUAGE DuplicateRecordFields #-}
+
+module DRFHoleFits_A where
+
+data S = MkS { foo :: Int }
+data U = MkU { foo :: Int }
diff --git a/testsuite/tests/overloadedrecflds/should_fail/DRFPartialFields.hs b/testsuite/tests/overloadedrecflds/should_fail/DRFPartialFields.hs
new file mode 100644
index 0000000000..5c5ec744bb
--- /dev/null
+++ b/testsuite/tests/overloadedrecflds/should_fail/DRFPartialFields.hs
@@ -0,0 +1,4 @@
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# OPTIONS_GHC -Werror=partial-fields #-}
+module DRFPartialFields where
+data T = MkT1 { foo :: Int } | MkT2
diff --git a/testsuite/tests/overloadedrecflds/should_fail/DRFPartialFields.stderr b/testsuite/tests/overloadedrecflds/should_fail/DRFPartialFields.stderr
new file mode 100644
index 0000000000..1f9034e7b2
--- /dev/null
+++ b/testsuite/tests/overloadedrecflds/should_fail/DRFPartialFields.stderr
@@ -0,0 +1,3 @@
+
+DRFPartialFields.hs:4:17: error: [-Wpartial-fields, -Werror=partial-fields]
+ Use of partial record field selector: ‘foo’
diff --git a/testsuite/tests/overloadedrecflds/should_fail/T16745.stderr b/testsuite/tests/overloadedrecflds/should_fail/T16745.stderr
new file mode 100644
index 0000000000..6e1cac2fbe
--- /dev/null
+++ b/testsuite/tests/overloadedrecflds/should_fail/T16745.stderr
@@ -0,0 +1,14 @@
+[1 of 4] Compiling T16745C ( T16745C.hs, T16745C.o )
+[2 of 4] Compiling T16745B ( T16745B.hs, T16745B.o )
+[3 of 4] Compiling T16745D ( T16745D.hs, T16745D.o )
+[4 of 4] Compiling T16745A ( T16745A.hs, T16745A.o )
+
+T16745A.hs:3:24: error:
+ Ambiguous name ‘field’ in import item. It could refer to:
+ T16745C.field
+ T16745B.R(field)
+
+T16745A.hs:4:24: error:
+ Ambiguous name ‘foo’ in import item. It could refer to:
+ T16745D.T(foo)
+ T16745D.S(foo)
diff --git a/testsuite/tests/overloadedrecflds/should_fail/T16745A.hs b/testsuite/tests/overloadedrecflds/should_fail/T16745A.hs
new file mode 100644
index 0000000000..49dbeb3fac
--- /dev/null
+++ b/testsuite/tests/overloadedrecflds/should_fail/T16745A.hs
@@ -0,0 +1,6 @@
+module T16745A where
+
+import T16745B hiding (field)
+import T16745D hiding (foo)
+
+wrong = foo -- should not be in scope
diff --git a/testsuite/tests/overloadedrecflds/should_fail/T16745B.hs b/testsuite/tests/overloadedrecflds/should_fail/T16745B.hs
new file mode 100644
index 0000000000..1e549ba05d
--- /dev/null
+++ b/testsuite/tests/overloadedrecflds/should_fail/T16745B.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE DuplicateRecordFields #-}
+-- This module tries to export a record field 'field' (defined below) and a
+-- function 'field' (defined in another module), which shouldn't be allowed.
+module T16745B
+ ( R(field)
+ , module T16745C
+ ) where
+
+import T16745C
+
+data R = R { field :: Int}
diff --git a/testsuite/tests/overloadedrecflds/should_fail/T16745C.hs b/testsuite/tests/overloadedrecflds/should_fail/T16745C.hs
new file mode 100644
index 0000000000..ddafe2db95
--- /dev/null
+++ b/testsuite/tests/overloadedrecflds/should_fail/T16745C.hs
@@ -0,0 +1,2 @@
+module T16745C where
+field = ()
diff --git a/testsuite/tests/overloadedrecflds/should_fail/T16745D.hs b/testsuite/tests/overloadedrecflds/should_fail/T16745D.hs
new file mode 100644
index 0000000000..ee98217d4c
--- /dev/null
+++ b/testsuite/tests/overloadedrecflds/should_fail/T16745D.hs
@@ -0,0 +1,4 @@
+{-# LANGUAGE DuplicateRecordFields #-}
+module T16745D where
+data S = MkS { foo :: Char }
+data T = MkT { foo :: Int }
diff --git a/testsuite/tests/overloadedrecflds/should_fail/all.T b/testsuite/tests/overloadedrecflds/should_fail/all.T
index bc3c0650d2..09bee3ba06 100644
--- a/testsuite/tests/overloadedrecflds/should_fail/all.T
+++ b/testsuite/tests/overloadedrecflds/should_fail/all.T
@@ -33,3 +33,7 @@ test('T14953', [extra_files(['T14953_A.hs', 'T14953_B.hs'])],
multimod_compile_fail, ['T14953', ''])
test('DuplicateExports', normal, compile_fail, [''])
test('T17965', normal, compile_fail, [''])
+test('DRFHoleFits', extra_files(['DRFHoleFits_A.hs']), multimod_compile_fail, ['DRFHoleFits', ''])
+test('DRFPartialFields', normal, compile_fail, [''])
+test('T16745', extra_files(['T16745C.hs', 'T16745B.hs']), multimod_compile_fail, ['T16745A', ''])
+test('DRF9156', normal, compile_fail, [''])