summaryrefslogtreecommitdiff
path: root/testsuite/tests/safeHaskell/safeInfered
diff options
context:
space:
mode:
authorDavid Terei <code@davidterei.com>2014-08-02 13:37:26 -0700
committerDavid Terei <code@davidterei.com>2015-05-11 18:19:54 -0700
commiteecef1733d5de342383665943b955bc1c96472f4 (patch)
tree4d142330c9e3880b7d65594954f0dd352b849e54 /testsuite/tests/safeHaskell/safeInfered
parent53409a7b043621c3ab3d165535ae4969f56c23ea (diff)
downloadhaskell-eecef1733d5de342383665943b955bc1c96472f4.tar.gz
Fix safe haskell bug: instances in safe-inferred
Instances in Safe Inferred modules weren't marked being marked as coming from a Safe module.
Diffstat (limited to 'testsuite/tests/safeHaskell/safeInfered')
-rw-r--r--testsuite/tests/safeHaskell/safeInfered/SafeInfered05.stderr19
-rw-r--r--testsuite/tests/safeHaskell/safeInfered/SafeInfered05_A.hs1
-rw-r--r--testsuite/tests/safeHaskell/safeInfered/all.T6
3 files changed, 23 insertions, 3 deletions
diff --git a/testsuite/tests/safeHaskell/safeInfered/SafeInfered05.stderr b/testsuite/tests/safeHaskell/safeInfered/SafeInfered05.stderr
new file mode 100644
index 0000000000..10e70c409c
--- /dev/null
+++ b/testsuite/tests/safeHaskell/safeInfered/SafeInfered05.stderr
@@ -0,0 +1,19 @@
+
+SafeInfered05.hs:2:14: Warning:
+ -XOverlappingInstances is deprecated: instead use per-instance pragmas OVERLAPPING/OVERLAPPABLE/OVERLAPS
+[1 of 2] Compiling SafeInfered05_A ( SafeInfered05_A.hs, SafeInfered05_A.o )
+
+SafeInfered05_A.hs:2:16: Warning:
+ ‘SafeInfered05_A’ has been inferred as safe!
+[2 of 2] Compiling SafeInfered05 ( SafeInfered05.hs, SafeInfered05.o )
+
+SafeInfered05.hs:31:9:
+ Unsafe overlapping instances for C [Int] arising from a use of ‘f’
+ The matching instance is:
+ instance [safe] C [Int] -- Defined at SafeInfered05_A.hs:8:10
+ It is compiled in a Safe module and as such can only
+ overlap instances from the same module, however it
+ overlaps the following instances from different modules:
+ instance [overlap ok] C [a] -- Defined at SafeInfered05.hs:27:10
+ In the expression: f ([1, 2, 3, 4] :: [Int])
+ In an equation for ‘test2’: test2 = f ([1, 2, 3, 4] :: [Int])
diff --git a/testsuite/tests/safeHaskell/safeInfered/SafeInfered05_A.hs b/testsuite/tests/safeHaskell/safeInfered/SafeInfered05_A.hs
index a1e12a6526..c9e5c964cb 100644
--- a/testsuite/tests/safeHaskell/safeInfered/SafeInfered05_A.hs
+++ b/testsuite/tests/safeHaskell/safeInfered/SafeInfered05_A.hs
@@ -1,4 +1,5 @@
{-# LANGUAGE FlexibleInstances #-}
+{-# OPTIONS_GHC -fwarn-safe #-}
module SafeInfered05_A where
class C a where
diff --git a/testsuite/tests/safeHaskell/safeInfered/all.T b/testsuite/tests/safeHaskell/safeInfered/all.T
index 12e80a7fde..9fb4b2c4ea 100644
--- a/testsuite/tests/safeHaskell/safeInfered/all.T
+++ b/testsuite/tests/safeHaskell/safeInfered/all.T
@@ -22,9 +22,9 @@ test('SafeInfered04',
multimod_compile, ['SafeInfered04', ''])
# Test should fail, tests an earlier bug in 7.8
-# test('SafeInfered05',
-# [ extra_clean(['SafeInfered05_A.hi', 'SafeInfered05_A.o']) ],
-# multimod_compile_fail, ['SafeInfered05', ''])
+test('SafeInfered05',
+ [ extra_clean(['SafeInfered05_A.hi', 'SafeInfered05_A.o']) ],
+ multimod_compile_fail, ['SafeInfered05', ''])
# Tests that should fail to compile as they should be infered unsafe
test('UnsafeInfered01',