summaryrefslogtreecommitdiff
path: root/testsuite/tests/safeHaskell/flags
diff options
context:
space:
mode:
authorDavid Terei <davidterei@gmail.com>2011-11-16 13:24:29 -0800
committerDavid Terei <davidterei@gmail.com>2011-11-16 13:25:20 -0800
commit0031457059187f7417e48a93e3fcd3a2ef538e9a (patch)
tree371dac9eaef6cab015dc40ed0844fe8057514b4d /testsuite/tests/safeHaskell/flags
parentf9073a7e0a3244b2d50647814c8e0518ba5fbf74 (diff)
downloadhaskell-0031457059187f7417e48a93e3fcd3a2ef538e9a.tar.gz
Add Safe Haskell tests for new '-fwarn-safe', '-fwarn-unsafe'
and '-fno-safe-infer' flags.
Diffstat (limited to 'testsuite/tests/safeHaskell/flags')
-rw-r--r--testsuite/tests/safeHaskell/flags/SafeFlags21.hs9
-rw-r--r--testsuite/tests/safeHaskell/flags/SafeFlags22.hs11
-rw-r--r--testsuite/tests/safeHaskell/flags/SafeFlags22.stderr5
-rw-r--r--testsuite/tests/safeHaskell/flags/SafeFlags23.hs11
-rw-r--r--testsuite/tests/safeHaskell/flags/SafeFlags23.stderr8
-rw-r--r--testsuite/tests/safeHaskell/flags/SafeFlags24.hs11
-rw-r--r--testsuite/tests/safeHaskell/flags/SafeFlags25.hs9
-rw-r--r--testsuite/tests/safeHaskell/flags/SafeFlags25.stderr3
-rw-r--r--testsuite/tests/safeHaskell/flags/SafeFlags26.hs9
-rw-r--r--testsuite/tests/safeHaskell/flags/SafeFlags26.stderr6
-rw-r--r--testsuite/tests/safeHaskell/flags/SafeFlags27.hs9
-rw-r--r--testsuite/tests/safeHaskell/flags/all.T18
12 files changed, 107 insertions, 2 deletions
diff --git a/testsuite/tests/safeHaskell/flags/SafeFlags21.hs b/testsuite/tests/safeHaskell/flags/SafeFlags21.hs
new file mode 100644
index 0000000000..c7e8b0d87a
--- /dev/null
+++ b/testsuite/tests/safeHaskell/flags/SafeFlags21.hs
@@ -0,0 +1,9 @@
+{-# OPTIONS_GHC -fwarn-unsafe #-}
+-- | Basic test to see if Safe warning flags compile
+-- Warn if module is infered unsafe
+-- In this test the warning _shouldn't_ fire
+module SafeFlags21 where
+
+f :: Int
+f = 1
+
diff --git a/testsuite/tests/safeHaskell/flags/SafeFlags22.hs b/testsuite/tests/safeHaskell/flags/SafeFlags22.hs
new file mode 100644
index 0000000000..0b94cff91c
--- /dev/null
+++ b/testsuite/tests/safeHaskell/flags/SafeFlags22.hs
@@ -0,0 +1,11 @@
+{-# OPTIONS_GHC -fwarn-unsafe #-}
+-- | Basic test to see if Safe warning flags compile
+-- Warn if module is infered unsafe
+-- In this test the warning _should_ fire
+module SafeFlags22 where
+
+import System.IO.Unsafe
+
+f :: Int
+f = 1
+
diff --git a/testsuite/tests/safeHaskell/flags/SafeFlags22.stderr b/testsuite/tests/safeHaskell/flags/SafeFlags22.stderr
new file mode 100644
index 0000000000..7913f6847d
--- /dev/null
+++ b/testsuite/tests/safeHaskell/flags/SafeFlags22.stderr
@@ -0,0 +1,5 @@
+
+SafeFlags22.hs:1:16:
+ Warning: `SafeFlags22' has been infered as unsafe!
+ Reason:
+ base:System.IO.Unsafe can't be safely imported! The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/flags/SafeFlags23.hs b/testsuite/tests/safeHaskell/flags/SafeFlags23.hs
new file mode 100644
index 0000000000..87f7b2dc5d
--- /dev/null
+++ b/testsuite/tests/safeHaskell/flags/SafeFlags23.hs
@@ -0,0 +1,11 @@
+{-# OPTIONS_GHC -fwarn-unsafe -Werror #-}
+-- | Basic test to see if Safe warning flags compile
+-- Warn if module is infered unsafe
+-- In this test the warning _should_ fire and cause a compile fail
+module SafeFlags22 where
+
+import System.IO.Unsafe
+
+f :: Int
+f = 1
+
diff --git a/testsuite/tests/safeHaskell/flags/SafeFlags23.stderr b/testsuite/tests/safeHaskell/flags/SafeFlags23.stderr
new file mode 100644
index 0000000000..bf8b7d937e
--- /dev/null
+++ b/testsuite/tests/safeHaskell/flags/SafeFlags23.stderr
@@ -0,0 +1,8 @@
+
+SafeFlags23.hs:1:16:
+ Warning: `SafeFlags22' has been infered as unsafe!
+ Reason:
+ base:System.IO.Unsafe can't be safely imported! The module itself isn't safe.
+
+<no location info>:
+Failing due to -Werror.
diff --git a/testsuite/tests/safeHaskell/flags/SafeFlags24.hs b/testsuite/tests/safeHaskell/flags/SafeFlags24.hs
new file mode 100644
index 0000000000..928d322e3c
--- /dev/null
+++ b/testsuite/tests/safeHaskell/flags/SafeFlags24.hs
@@ -0,0 +1,11 @@
+{-# OPTIONS_GHC -fwarn-safe #-}
+-- | Basic test to see if Safe warning flags compile
+-- Warn if module is infered safe
+-- In this test the warning _shouldn't_ fire
+module SafeFlags23 where
+
+import System.IO.Unsafe
+
+f :: Int
+f = 1
+
diff --git a/testsuite/tests/safeHaskell/flags/SafeFlags25.hs b/testsuite/tests/safeHaskell/flags/SafeFlags25.hs
new file mode 100644
index 0000000000..c97fa885d1
--- /dev/null
+++ b/testsuite/tests/safeHaskell/flags/SafeFlags25.hs
@@ -0,0 +1,9 @@
+{-# OPTIONS_GHC -fwarn-safe #-}
+-- | Basic test to see if Safe warning flags compile
+-- Warn if module is infered safe
+-- In this test the warning _should_ fire
+module SafeFlags25 where
+
+f :: Int
+f = 1
+
diff --git a/testsuite/tests/safeHaskell/flags/SafeFlags25.stderr b/testsuite/tests/safeHaskell/flags/SafeFlags25.stderr
new file mode 100644
index 0000000000..2889ca6a36
--- /dev/null
+++ b/testsuite/tests/safeHaskell/flags/SafeFlags25.stderr
@@ -0,0 +1,3 @@
+
+SafeFlags25.hs:1:16:
+ Warning: `SafeFlags25' has been infered as safe!
diff --git a/testsuite/tests/safeHaskell/flags/SafeFlags26.hs b/testsuite/tests/safeHaskell/flags/SafeFlags26.hs
new file mode 100644
index 0000000000..0767448bca
--- /dev/null
+++ b/testsuite/tests/safeHaskell/flags/SafeFlags26.hs
@@ -0,0 +1,9 @@
+{-# OPTIONS_GHC -fwarn-safe -Werror #-}
+-- | Basic test to see if Safe warning flags compile
+-- Warn if module is infered safe
+-- In this test the warning _should_ fire and cause a compile fail
+module SafeFlags26 where
+
+f :: Int
+f = 1
+
diff --git a/testsuite/tests/safeHaskell/flags/SafeFlags26.stderr b/testsuite/tests/safeHaskell/flags/SafeFlags26.stderr
new file mode 100644
index 0000000000..3079a7a20d
--- /dev/null
+++ b/testsuite/tests/safeHaskell/flags/SafeFlags26.stderr
@@ -0,0 +1,6 @@
+
+SafeFlags26.hs:1:16:
+ Warning: `SafeFlags26' has been infered as safe!
+
+<no location info>:
+Failing due to -Werror.
diff --git a/testsuite/tests/safeHaskell/flags/SafeFlags27.hs b/testsuite/tests/safeHaskell/flags/SafeFlags27.hs
new file mode 100644
index 0000000000..e6da435db4
--- /dev/null
+++ b/testsuite/tests/safeHaskell/flags/SafeFlags27.hs
@@ -0,0 +1,9 @@
+{-# OPTIONS_GHC -fno-safe-infer #-}
+-- | Basic test to see if no safe infer flag compiles
+-- This module would usually infer safely, so it shouldn't be safe now.
+-- We don't actually check that here though, see test '' for that.
+module SafeFlags27 where
+
+f :: Int
+f = 1
+
diff --git a/testsuite/tests/safeHaskell/flags/all.T b/testsuite/tests/safeHaskell/flags/all.T
index 9e7ef4b433..f5e9a896d0 100644
--- a/testsuite/tests/safeHaskell/flags/all.T
+++ b/testsuite/tests/safeHaskell/flags/all.T
@@ -41,6 +41,20 @@ test('SafeFlags18', normal, compile, ['-trust base'])
test('SafeFlags19', normal, compile_fail, [''])
test('SafeFlags20', normal, compile, ['-trust base'])
-test('Flags01', normal, compile, [''])
-test('Flags02', normal, compile, [''])
+# test -Wunsafe flag
+test('SafeFlags21', normal, compile, [''])
+test('SafeFlags22', normal, compile, [''])
+test('SafeFlags23', normal, compile_fail, [''])
+
+# test -Wsafe flag
+test('SafeFlags24', normal, compile, [''])
+test('SafeFlags25', normal, compile, [''])
+test('SafeFlags26', normal, compile_fail, [''])
+
+# test -fno-safe-infer
+test('SafeFlags27', normal, compile, [''])
+
+# test certain flags are still allowed under -XSafe
+test('Flags01', normal, compile, ['-XSafe'])
+test('Flags02', normal, compile, ['-XSafe'])