diff options
author | David Terei <code@davidterei.com> | 2014-11-07 14:11:19 -0800 |
---|---|---|
committer | David Terei <code@davidterei.com> | 2014-11-12 16:09:33 -0800 |
commit | 1f8b4ee074b4d9e3d847b3139dc89fff1bb5d2e6 (patch) | |
tree | d77b9d8316d780ffc6604cddcbbee08884afc132 /testsuite/tests/safeHaskell/check | |
parent | 064c28960730ed2f592fb675c9a11310e2371b66 (diff) | |
download | haskell-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')
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'), |