summaryrefslogtreecommitdiff
path: root/testsuite/tests/safeHaskell/check
diff options
context:
space:
mode:
authorDavid Terei <code@davidterei.com>2014-11-07 14:11:19 -0800
committerDavid Terei <code@davidterei.com>2014-11-12 16:09:33 -0800
commit1f8b4ee074b4d9e3d847b3139dc89fff1bb5d2e6 (patch)
treed77b9d8316d780ffc6604cddcbbee08884afc132 /testsuite/tests/safeHaskell/check
parent064c28960730ed2f592fb675c9a11310e2371b66 (diff)
downloadhaskell-1f8b4ee074b4d9e3d847b3139dc89fff1bb5d2e6.tar.gz
Add in `-fwarn-trustworthy-safe` flag.
This warns when a module marked as `-XTrustworthy` could have been inferred as safe instead.
Diffstat (limited to 'testsuite/tests/safeHaskell/check')
-rw-r--r--testsuite/tests/safeHaskell/check/pkg01/ImpSafe01.hs2
-rw-r--r--testsuite/tests/safeHaskell/check/pkg01/ImpSafe02.hs2
-rw-r--r--testsuite/tests/safeHaskell/check/pkg01/ImpSafe03.hs8
-rw-r--r--testsuite/tests/safeHaskell/check/pkg01/ImpSafe03.stderr4
-rw-r--r--testsuite/tests/safeHaskell/check/pkg01/ImpSafe03_A.hs8
-rw-r--r--testsuite/tests/safeHaskell/check/pkg01/ImpSafe04.hs13
-rw-r--r--testsuite/tests/safeHaskell/check/pkg01/ImpSafe04.stderr4
-rw-r--r--testsuite/tests/safeHaskell/check/pkg01/all.T11
8 files changed, 49 insertions, 3 deletions
diff --git a/testsuite/tests/safeHaskell/check/pkg01/ImpSafe01.hs b/testsuite/tests/safeHaskell/check/pkg01/ImpSafe01.hs
index deb0d57f8d..107881b2d8 100644
--- a/testsuite/tests/safeHaskell/check/pkg01/ImpSafe01.hs
+++ b/testsuite/tests/safeHaskell/check/pkg01/ImpSafe01.hs
@@ -1,6 +1,6 @@
{-# LANGUAGE Safe #-}
{-# LANGUAGE NoImplicitPrelude #-}
-module ImpSafe ( MyWord ) where
+module ImpSafe01 ( MyWord ) where
-- While Data.Word is safe it imports trustworthy
-- modules in base, hence base needs to be trusted.
diff --git a/testsuite/tests/safeHaskell/check/pkg01/ImpSafe02.hs b/testsuite/tests/safeHaskell/check/pkg01/ImpSafe02.hs
index deb0d57f8d..c6ba0968d0 100644
--- a/testsuite/tests/safeHaskell/check/pkg01/ImpSafe02.hs
+++ b/testsuite/tests/safeHaskell/check/pkg01/ImpSafe02.hs
@@ -1,6 +1,6 @@
{-# LANGUAGE Safe #-}
{-# LANGUAGE NoImplicitPrelude #-}
-module ImpSafe ( MyWord ) where
+module ImpSafe02 ( MyWord ) where
-- While Data.Word is safe it imports trustworthy
-- modules in base, hence base needs to be trusted.
diff --git a/testsuite/tests/safeHaskell/check/pkg01/ImpSafe03.hs b/testsuite/tests/safeHaskell/check/pkg01/ImpSafe03.hs
new file mode 100644
index 0000000000..485e9e238c
--- /dev/null
+++ b/testsuite/tests/safeHaskell/check/pkg01/ImpSafe03.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE Trustworthy #-}
+module Main where
+
+import safe Prelude
+import safe ImpSafe03_A
+
+main = putStrLn "test"
+
diff --git a/testsuite/tests/safeHaskell/check/pkg01/ImpSafe03.stderr b/testsuite/tests/safeHaskell/check/pkg01/ImpSafe03.stderr
new file mode 100644
index 0000000000..2fdf45ce13
--- /dev/null
+++ b/testsuite/tests/safeHaskell/check/pkg01/ImpSafe03.stderr
@@ -0,0 +1,4 @@
+[2 of 2] Compiling Main ( ImpSafe03.hs, ImpSafe03.o )
+
+<no location info>:
+ The package (bytestring-0.10.4.0) is required to be trusted but it isn't!
diff --git a/testsuite/tests/safeHaskell/check/pkg01/ImpSafe03_A.hs b/testsuite/tests/safeHaskell/check/pkg01/ImpSafe03_A.hs
new file mode 100644
index 0000000000..06f5d39754
--- /dev/null
+++ b/testsuite/tests/safeHaskell/check/pkg01/ImpSafe03_A.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE Trustworthy #-}
+module ImpSafe03_A where
+
+import safe Prelude
+import safe qualified Data.ByteString.Char8 as BS
+
+s = BS.pack "Hello World"
+
diff --git a/testsuite/tests/safeHaskell/check/pkg01/ImpSafe04.hs b/testsuite/tests/safeHaskell/check/pkg01/ImpSafe04.hs
new file mode 100644
index 0000000000..3a8882905f
--- /dev/null
+++ b/testsuite/tests/safeHaskell/check/pkg01/ImpSafe04.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE Trustworthy #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+module ImpSafe04 ( MyWord ) where
+
+-- While Data.Word is safe it imports trustworthy
+-- modules in base, hence base needs to be trusted.
+-- Note: Worthwhile giving out better error messages for cases
+-- like this if I can.
+import safe Data.Word
+import System.IO.Unsafe
+
+type MyWord = Word
+
diff --git a/testsuite/tests/safeHaskell/check/pkg01/ImpSafe04.stderr b/testsuite/tests/safeHaskell/check/pkg01/ImpSafe04.stderr
new file mode 100644
index 0000000000..50a12e027b
--- /dev/null
+++ b/testsuite/tests/safeHaskell/check/pkg01/ImpSafe04.stderr
@@ -0,0 +1,4 @@
+
+ImpSafe04.hs:9:1:
+ Data.Word: Can't be safely imported!
+ The package (base-4.8.0.0) the module resides in isn't trusted.
diff --git a/testsuite/tests/safeHaskell/check/pkg01/all.T b/testsuite/tests/safeHaskell/check/pkg01/all.T
index f121b99add..e1ed80dd7c 100644
--- a/testsuite/tests/safeHaskell/check/pkg01/all.T
+++ b/testsuite/tests/safeHaskell/check/pkg01/all.T
@@ -51,6 +51,15 @@ test('ImpSafe01', normal, compile_fail, ['-fpackage-trust -distrust base'])
# Succeed since we don't enable package trust
test('ImpSafe02', normal, compile, ['-distrust base'])
+# Fail since we don't trust base of bytestring
+test('ImpSafe03', normal, multi_compile_fail,
+ ['ImpSafe03 -trust base -distrust bytestring', [
+ ('ImpSafe03_A.hs', ' -trust base -trust bytestring')
+ ], '-fpackage-trust' ])
+
+# Fail same as ImpSafe01 but testing with -XTrustworthy now
+test('ImpSafe04', normal, compile_fail, ['-fpackage-trust -distrust base'])
+
test('ImpSafeOnly01',
[pre_cmd('$MAKE -s --no-print-directory mkPackageDatabase.ImpSafeOnly01 ' + make_args),
clean_cmd('$MAKE -s --no-print-directory cleanPackageDatabase.ImpSafeOnly01')],
@@ -95,7 +104,7 @@ test('ImpSafeOnly07',
clean_cmd('$MAKE -s --no-print-directory cleanPackageDatabase.ImpSafeOnly07'),
normalise_errmsg_fun(normaliseBytestringPackage)],
compile_fail,
- ['-fpackage-trust -package-db pdb.ImpSafeOnly07/local.db -trust safePkg01'])
+ ['-fpackage-trust -package-db pdb.ImpSafeOnly07/local.db -trust safePkg01 -distrust bytestring'])
test('ImpSafeOnly08',
[pre_cmd('$MAKE -s --no-print-directory mkPackageDatabase.ImpSafeOnly08 ' + make_args),
clean_cmd('$MAKE -s --no-print-directory cleanPackageDatabase.ImpSafeOnly08'),