diff options
author | David Terei <davidterei@gmail.com> | 2011-07-20 11:09:03 -0700 |
---|---|---|
committer | David Terei <davidterei@gmail.com> | 2011-07-20 11:26:35 -0700 |
commit | 16514f272fb42af6e9c7674a9bd6c9dce369231f (patch) | |
tree | e4f332b45fe65e2a7a2451be5674f887b42bf199 /testsuite/tests/safeHaskell/check | |
parent | ebd422aed41048476aa61dd4c520d43becd78682 (diff) | |
download | haskell-16514f272fb42af6e9c7674a9bd6c9dce369231f.tar.gz |
Move tests from tests/ghc-regress/* to just tests/*
Diffstat (limited to 'testsuite/tests/safeHaskell/check')
38 files changed, 420 insertions, 0 deletions
diff --git a/testsuite/tests/safeHaskell/check/Check01.hs b/testsuite/tests/safeHaskell/check/Check01.hs new file mode 100644 index 0000000000..bd018acb50 --- /dev/null +++ b/testsuite/tests/safeHaskell/check/Check01.hs @@ -0,0 +1,9 @@ +{-# LANGUAGE SafeImports #-} +module Check01 ( main' ) where + +import safe Check01_B + +main' = do + let n = mainM 1 + print $ n + diff --git a/testsuite/tests/safeHaskell/check/Check01.stderr b/testsuite/tests/safeHaskell/check/Check01.stderr new file mode 100644 index 0000000000..70722f32b8 --- /dev/null +++ b/testsuite/tests/safeHaskell/check/Check01.stderr @@ -0,0 +1,4 @@ +[3 of 3] Compiling Check01 ( Check01.hs, Check01.o ) + +<no location info>: + The package (base) is required to be trusted but it isn't! diff --git a/testsuite/tests/safeHaskell/check/Check01_A.hs b/testsuite/tests/safeHaskell/check/Check01_A.hs new file mode 100644 index 0000000000..8b318a5124 --- /dev/null +++ b/testsuite/tests/safeHaskell/check/Check01_A.hs @@ -0,0 +1,15 @@ +{-# LANGUAGE Trustworthy #-} +module Check01_A ( + trace + ) where + +import qualified Debug.Trace as D +import qualified Data.ByteString.Lazy.Char8 as BS + +-- | Allowed declasification +trace :: String -> a -> a +trace s = D.trace $ s ++ show a3 + +a3 :: BS.ByteString +a3 = BS.take 3 $ BS.repeat 'a' + diff --git a/testsuite/tests/safeHaskell/check/Check01_B.hs b/testsuite/tests/safeHaskell/check/Check01_B.hs new file mode 100644 index 0000000000..b584e51b97 --- /dev/null +++ b/testsuite/tests/safeHaskell/check/Check01_B.hs @@ -0,0 +1,10 @@ +{-# LANGUAGE Safe #-} + +-- Since Safe we require base package be trusted to compile +module Check01_B where + +import Check01_A + +mainM :: Int -> Int +mainM n = trace "Allowed Leak" $ n * 2 + diff --git a/testsuite/tests/safeHaskell/check/Check02.hs b/testsuite/tests/safeHaskell/check/Check02.hs new file mode 100644 index 0000000000..3f15cb4ba9 --- /dev/null +++ b/testsuite/tests/safeHaskell/check/Check02.hs @@ -0,0 +1,9 @@ +{-# LANGUAGE SafeImports #-} +module Check02 ( main' ) where + +import safe Check02_B + +main' = do + let n = mainM 1 + print $ n + diff --git a/testsuite/tests/safeHaskell/check/Check02.stderr b/testsuite/tests/safeHaskell/check/Check02.stderr new file mode 100644 index 0000000000..708541b8ed --- /dev/null +++ b/testsuite/tests/safeHaskell/check/Check02.stderr @@ -0,0 +1 @@ +[3 of 3] Compiling Check02 ( Check02.hs, Check02.o ) diff --git a/testsuite/tests/safeHaskell/check/Check02_A.hs b/testsuite/tests/safeHaskell/check/Check02_A.hs new file mode 100644 index 0000000000..d43dab727a --- /dev/null +++ b/testsuite/tests/safeHaskell/check/Check02_A.hs @@ -0,0 +1,16 @@ +{-# LANGUAGE Trustworthy #-} +module Check02_A ( + trace + ) where + +import qualified Debug.Trace as D +import qualified Data.ByteString.Lazy.Char8 as BS + +-- | Allowed declasification +trace :: String -> a -> a +trace s = D.trace $ s ++ show a3 + +a3 :: BS.ByteString +a3 = BS.take 3 $ BS.repeat 'a' + + diff --git a/testsuite/tests/safeHaskell/check/Check02_B.hs b/testsuite/tests/safeHaskell/check/Check02_B.hs new file mode 100644 index 0000000000..10d45ccfbb --- /dev/null +++ b/testsuite/tests/safeHaskell/check/Check02_B.hs @@ -0,0 +1,10 @@ +{-# LANGUAGE Safe #-} + +-- Since Safe we require base package be trusted to compile +module Check02_B where + +import Check02_A + +mainM :: Int -> Int +mainM n = trace "Allowed Leak" $ n * 2 + diff --git a/testsuite/tests/safeHaskell/check/Check03.hs b/testsuite/tests/safeHaskell/check/Check03.hs new file mode 100644 index 0000000000..e06b4f83fb --- /dev/null +++ b/testsuite/tests/safeHaskell/check/Check03.hs @@ -0,0 +1,8 @@ +module Check03 where + +import Check03_B + +mainN = do + let n = mainM 1 + print $ n + diff --git a/testsuite/tests/safeHaskell/check/Check03.stderr b/testsuite/tests/safeHaskell/check/Check03.stderr new file mode 100644 index 0000000000..343803f6ff --- /dev/null +++ b/testsuite/tests/safeHaskell/check/Check03.stderr @@ -0,0 +1 @@ +[3 of 3] Compiling Check03 ( Check03.hs, Check03.o ) diff --git a/testsuite/tests/safeHaskell/check/Check03_A.hs b/testsuite/tests/safeHaskell/check/Check03_A.hs new file mode 100644 index 0000000000..e7b8d75d03 --- /dev/null +++ b/testsuite/tests/safeHaskell/check/Check03_A.hs @@ -0,0 +1,15 @@ +{-# LANGUAGE Trustworthy #-} +module Check03_A ( + trace + ) where + +import qualified Debug.Trace as D +import qualified Data.ByteString.Lazy.Char8 as BS + +-- | Allowed declasification +trace :: String -> a -> a +trace s = D.trace $ s ++ show a3 + +a3 :: BS.ByteString +a3 = BS.take 3 $ BS.repeat 'a' + diff --git a/testsuite/tests/safeHaskell/check/Check03_B.hs b/testsuite/tests/safeHaskell/check/Check03_B.hs new file mode 100644 index 0000000000..bce45af4e5 --- /dev/null +++ b/testsuite/tests/safeHaskell/check/Check03_B.hs @@ -0,0 +1,10 @@ +{-# LANGUAGE Safe #-} + +-- Since Safe we require base package be trusted to compile +module Check03_B where + +import Check03_A + +mainM :: Int -> Int +mainM n = trace "Allowed Leak" $ n * 2 + diff --git a/testsuite/tests/safeHaskell/check/Check04.hs b/testsuite/tests/safeHaskell/check/Check04.hs new file mode 100644 index 0000000000..9891de36ee --- /dev/null +++ b/testsuite/tests/safeHaskell/check/Check04.hs @@ -0,0 +1,7 @@ +{-# LANGUAGE SafeImports #-} +module Main ( main ) where + +import Check04_1 + +main = main' + diff --git a/testsuite/tests/safeHaskell/check/Check04.stderr b/testsuite/tests/safeHaskell/check/Check04.stderr new file mode 100644 index 0000000000..ec3bdb1585 --- /dev/null +++ b/testsuite/tests/safeHaskell/check/Check04.stderr @@ -0,0 +1,2 @@ +[4 of 4] Compiling Main ( Check04.hs, Check04.o ) +Linking Check04 ... diff --git a/testsuite/tests/safeHaskell/check/Check04_1.hs b/testsuite/tests/safeHaskell/check/Check04_1.hs new file mode 100644 index 0000000000..e823c889d6 --- /dev/null +++ b/testsuite/tests/safeHaskell/check/Check04_1.hs @@ -0,0 +1,9 @@ +{-# LANGUAGE SafeImports #-} +module Check04_1 ( main' ) where + +import safe Check04_B + +main' = do + let n = mainM 1 + print $ n + diff --git a/testsuite/tests/safeHaskell/check/Check04_A.hs b/testsuite/tests/safeHaskell/check/Check04_A.hs new file mode 100644 index 0000000000..3f6b5f00e9 --- /dev/null +++ b/testsuite/tests/safeHaskell/check/Check04_A.hs @@ -0,0 +1,15 @@ +{-# LANGUAGE Trustworthy #-} +module Check04_A ( + trace + ) where + +import qualified Debug.Trace as D +import qualified Data.ByteString.Lazy.Char8 as BS + +-- | Allowed declasification +trace :: String -> a -> a +trace s = D.trace $ s ++ show a3 + +a3 :: BS.ByteString +a3 = BS.take 3 $ BS.repeat 'a' + diff --git a/testsuite/tests/safeHaskell/check/Check04_B.hs b/testsuite/tests/safeHaskell/check/Check04_B.hs new file mode 100644 index 0000000000..5280c51fad --- /dev/null +++ b/testsuite/tests/safeHaskell/check/Check04_B.hs @@ -0,0 +1,10 @@ +{-# LANGUAGE Safe #-} + +-- Since Safe we require base package be trusted to compile +module Check04_B where + +import Check04_A + +mainM :: Int -> Int +mainM n = trace "Allowed Leak" $ n * 2 + diff --git a/testsuite/tests/safeHaskell/check/CheckA.hs b/testsuite/tests/safeHaskell/check/CheckA.hs new file mode 100644 index 0000000000..80f9ae4ee0 --- /dev/null +++ b/testsuite/tests/safeHaskell/check/CheckA.hs @@ -0,0 +1,15 @@ +{-# LANGUAGE Trustworthy #-} +module CheckA ( + trace + ) where + +import qualified Debug.Trace as D +import qualified Data.ByteString.Lazy.Char8 as BS + +-- | Allowed declasification +trace :: String -> a -> a +trace s = D.trace $ s ++ show a3 + +a3 :: BS.ByteString +a3 = BS.take 3 $ BS.repeat 'a' + diff --git a/testsuite/tests/safeHaskell/check/CheckB.hs b/testsuite/tests/safeHaskell/check/CheckB.hs new file mode 100644 index 0000000000..7e649a1598 --- /dev/null +++ b/testsuite/tests/safeHaskell/check/CheckB.hs @@ -0,0 +1,10 @@ +{-# LANGUAGE Safe #-} + +-- Since Safe we require base package be trusted to compile +module CheckB where + +import CheckB_Aux + +mainM :: Int -> Int +mainM n = trace "Allowed Leak" $ n * 2 + diff --git a/testsuite/tests/safeHaskell/check/CheckB.stderr b/testsuite/tests/safeHaskell/check/CheckB.stderr new file mode 100644 index 0000000000..f8321b3704 --- /dev/null +++ b/testsuite/tests/safeHaskell/check/CheckB.stderr @@ -0,0 +1,2 @@ +[1 of 2] Compiling CheckB_Aux ( CheckB_Aux.hs, CheckB_Aux.o ) +[2 of 2] Compiling CheckB ( CheckB.hs, CheckB.o ) diff --git a/testsuite/tests/safeHaskell/check/CheckB_Aux.hs b/testsuite/tests/safeHaskell/check/CheckB_Aux.hs new file mode 100644 index 0000000000..c04d5102d7 --- /dev/null +++ b/testsuite/tests/safeHaskell/check/CheckB_Aux.hs @@ -0,0 +1,15 @@ +{-# LANGUAGE Trustworthy #-} +module CheckB_Aux ( + trace + ) where + +import qualified Debug.Trace as D +import qualified Data.ByteString.Lazy.Char8 as BS + +-- | Allowed declasification +trace :: String -> a -> a +trace s = D.trace $ s ++ show a3 + +a3 :: BS.ByteString +a3 = BS.take 3 $ BS.repeat 'a' + diff --git a/testsuite/tests/safeHaskell/check/Makefile b/testsuite/tests/safeHaskell/check/Makefile new file mode 100644 index 0000000000..9101fbd40a --- /dev/null +++ b/testsuite/tests/safeHaskell/check/Makefile @@ -0,0 +1,3 @@ +TOP=../../.. +include $(TOP)/mk/boilerplate.mk +include $(TOP)/mk/test.mk diff --git a/testsuite/tests/safeHaskell/check/all.T b/testsuite/tests/safeHaskell/check/all.T new file mode 100644 index 0000000000..2e769ba1aa --- /dev/null +++ b/testsuite/tests/safeHaskell/check/all.T @@ -0,0 +1,38 @@ +# Just do the normal way, SafeHaskell is all in the frontend +def f( opts ): + opts.only_ways = ['normal'] + +setTestOpts(f) + +test('CheckA', normal, compile, ['']) +test('CheckB', + extra_clean(['CheckB_Aux.hi', 'CheckB_Aux.o']), + multimod_compile, ['CheckB', '-trust base']) + +# fail as we don't trust base when compiling Check01 +test('Check01', normal, multi_compile_fail, ['Check01', [ + ('Check01_A.hs', ''), + ('Check01_B.hs', '-trust base') + ], '']) + +# suceed this time since we trust base when we compile AND use CheckB +test('Check02', normal, multi_compile, ['Check02', [ + ('Check02_A.hs', ''), + ('Check02_B.hs', '') + ], '-trust base']) + +# suceed as while like Check01_fail we don't import CheckB as a safe +# import this time, so don't require base trusted when used. +test('Check03', normal, multi_compile, ['Check03', [ + ('Check03_A.hs', ''), + ('Check03_B.hs', '-trust base') + ], '']) + +# Check a slightly larger transitive program. Check01 isn't imported +# safely by Check03 so we don't require base trused at end. +test('Check04', normal, multi_compile, ['Check04', [ + ('Check04_A.hs', ''), + ('Check04_B.hs', '-trust base'), + ('Check04_1.hs', '-trust base') + ], '']) + diff --git a/testsuite/tests/safeHaskell/check/pkg01/ImpSafe01.hs b/testsuite/tests/safeHaskell/check/pkg01/ImpSafe01.hs new file mode 100644 index 0000000000..deb0d57f8d --- /dev/null +++ b/testsuite/tests/safeHaskell/check/pkg01/ImpSafe01.hs @@ -0,0 +1,12 @@ +{-# LANGUAGE Safe #-} +{-# LANGUAGE NoImplicitPrelude #-} +module ImpSafe ( 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 Data.Word + +type MyWord = Word + diff --git a/testsuite/tests/safeHaskell/check/pkg01/ImpSafe01.stderr b/testsuite/tests/safeHaskell/check/pkg01/ImpSafe01.stderr new file mode 100644 index 0000000000..9ca2bbe817 --- /dev/null +++ b/testsuite/tests/safeHaskell/check/pkg01/ImpSafe01.stderr @@ -0,0 +1,3 @@ + +ImpSafe01.hs:9:1: + base:Data.Word can't be safely imported! The package (base) the module resides in isn't trusted. diff --git a/testsuite/tests/safeHaskell/check/pkg01/ImpSafeOnly01.hs b/testsuite/tests/safeHaskell/check/pkg01/ImpSafeOnly01.hs new file mode 100644 index 0000000000..2143d3139b --- /dev/null +++ b/testsuite/tests/safeHaskell/check/pkg01/ImpSafeOnly01.hs @@ -0,0 +1,8 @@ +{-# LANGUAGE Safe #-} +module Main where + +import M_SafePkg + +main = do + putStrLn $ show bigInt + diff --git a/testsuite/tests/safeHaskell/check/pkg01/ImpSafeOnly02.hs b/testsuite/tests/safeHaskell/check/pkg01/ImpSafeOnly02.hs new file mode 100644 index 0000000000..27281b9cce --- /dev/null +++ b/testsuite/tests/safeHaskell/check/pkg01/ImpSafeOnly02.hs @@ -0,0 +1,8 @@ +{-# LANGUAGE Safe #-} +module Main where + +import M_SafePkg2 + +main = do + putStrLn $ show bigInt + diff --git a/testsuite/tests/safeHaskell/check/pkg01/ImpSafeOnly03.hs b/testsuite/tests/safeHaskell/check/pkg01/ImpSafeOnly03.hs new file mode 100644 index 0000000000..d09e39937d --- /dev/null +++ b/testsuite/tests/safeHaskell/check/pkg01/ImpSafeOnly03.hs @@ -0,0 +1,8 @@ +{-# LANGUAGE Safe #-} +module Main where + +import M_SafePkg3 + +main = do + putStrLn $ show bigInt + diff --git a/testsuite/tests/safeHaskell/check/pkg01/ImpSafeOnly03.stderr b/testsuite/tests/safeHaskell/check/pkg01/ImpSafeOnly03.stderr new file mode 100644 index 0000000000..bc6eecffee --- /dev/null +++ b/testsuite/tests/safeHaskell/check/pkg01/ImpSafeOnly03.stderr @@ -0,0 +1,3 @@ + +ImpSafeOnly03.hs:4:1: + safePkg01-1.0:M_SafePkg3 can't be safely imported! The package (safePkg01-1.0) the module resides in isn't trusted. diff --git a/testsuite/tests/safeHaskell/check/pkg01/M_SafePkg.hs b/testsuite/tests/safeHaskell/check/pkg01/M_SafePkg.hs new file mode 100644 index 0000000000..14c21132e7 --- /dev/null +++ b/testsuite/tests/safeHaskell/check/pkg01/M_SafePkg.hs @@ -0,0 +1,6 @@ +{-# LANGUAGE Safe #-} +module M_SafePkg where + +bigInt :: Int +bigInt = 9 + diff --git a/testsuite/tests/safeHaskell/check/pkg01/M_SafePkg2.hs b/testsuite/tests/safeHaskell/check/pkg01/M_SafePkg2.hs new file mode 100644 index 0000000000..74c263f61d --- /dev/null +++ b/testsuite/tests/safeHaskell/check/pkg01/M_SafePkg2.hs @@ -0,0 +1,6 @@ +{-# LANGUAGE Trustworthy #-} +module M_SafePkg2 where + +bigInt :: Int +bigInt = 9 + diff --git a/testsuite/tests/safeHaskell/check/pkg01/M_SafePkg3.hs b/testsuite/tests/safeHaskell/check/pkg01/M_SafePkg3.hs new file mode 100644 index 0000000000..67714c4731 --- /dev/null +++ b/testsuite/tests/safeHaskell/check/pkg01/M_SafePkg3.hs @@ -0,0 +1,8 @@ +{-# LANGUAGE Safe #-} +module M_SafePkg3 where + +import qualified M_SafePkg2 as M2 + +bigInt :: Int +bigInt = M2.bigInt + diff --git a/testsuite/tests/safeHaskell/check/pkg01/M_SafePkg4.hs b/testsuite/tests/safeHaskell/check/pkg01/M_SafePkg4.hs new file mode 100644 index 0000000000..52367b113b --- /dev/null +++ b/testsuite/tests/safeHaskell/check/pkg01/M_SafePkg4.hs @@ -0,0 +1,11 @@ +{-# LANGUAGE Safe #-} +module M_SafePkg4 where + +import qualified M_SafePkg3 as M3 +import Data.Word + +bigInt :: Int +bigInt = M3.bigInt + +type MyWord = Word + diff --git a/testsuite/tests/safeHaskell/check/pkg01/Makefile b/testsuite/tests/safeHaskell/check/pkg01/Makefile new file mode 100644 index 0000000000..7cc80494a1 --- /dev/null +++ b/testsuite/tests/safeHaskell/check/pkg01/Makefile @@ -0,0 +1,46 @@ +TOP=../../../.. +include $(TOP)/mk/boilerplate.mk +include $(TOP)/mk/test.mk + +clean: + rm -rf setup a.out + rm -rf dist + find . -name "*.o" | xargs rm -f + find . -name "*.hi" | xargs rm -f + rm -rf local.db + rm -rf install + +# We use the global package database as there's no easy way to tell +# ghc-pkg (via Cabal) to use one in ., and the global one at least +# won't affect the installed GHC and is more likely to work + +PREFIX := $(abspath install) +$(eval $(call canonicalise,PREFIX)) + +PKGCONF = local.db +LGHC_PKG = '$(GHC_PKG)' --no-user-package-conf -f '$(PKGCONF)' + +safePkg01: + '$(MAKE)' clean + '$(TEST_HC)' --make -o setup Setup.hs -v0 + + '$(GHC_PKG)' init local.db + ./setup configure -v0 --prefix='$(PREFIX)' --with-compiler='$(TEST_HC)' --ghc-options='$(TEST_HC_OPTS) -trust base' --with-hc-pkg='$(GHC_PKG)' --package-db='$(PKGCONF)' $(PROF) + ./setup build -v0 + ./setup copy -v0 + ./setup register --inplace -v0 + $(LGHC_PKG) list + $(LGHC_PKG) field safePkg01-1.0 trusted + echo + echo 'M_SafePkg' + '$(TEST_HC)' --show-iface dist/build/M_SafePkg.hi | grep -E '^package dependencies:|^trusted:|^require own pkg trusted:' + echo + echo 'M_SafePkg2' + '$(TEST_HC)' --show-iface dist/build/M_SafePkg2.hi | grep -E '^package dependencies:|^trusted:|^require own pkg trusted:' + echo + echo 'M_SafePkg3' + '$(TEST_HC)' --show-iface dist/build/M_SafePkg3.hi | grep -E '^package dependencies:|^trusted:|^require own pkg trusted:' + echo + echo 'M_SafePkg4' + '$(TEST_HC)' --show-iface dist/build/M_SafePkg4.hi | grep -E '^package dependencies:|^trusted:|^require own pkg trusted:' + diff --git a/testsuite/tests/safeHaskell/check/pkg01/Setup.hs b/testsuite/tests/safeHaskell/check/pkg01/Setup.hs new file mode 100644 index 0000000000..6479cb1c16 --- /dev/null +++ b/testsuite/tests/safeHaskell/check/pkg01/Setup.hs @@ -0,0 +1,4 @@ +import Distribution.Simple + +main = defaultMain + diff --git a/testsuite/tests/safeHaskell/check/pkg01/all.T b/testsuite/tests/safeHaskell/check/pkg01/all.T new file mode 100644 index 0000000000..bdbdc4c56d --- /dev/null +++ b/testsuite/tests/safeHaskell/check/pkg01/all.T @@ -0,0 +1,24 @@ +# Just do the normal way, SafeHaskell is all in the frontend +def f( opts ): + opts.only_ways = ['normal'] + +setTestOpts(f) + +if config.have_profiling: + prof = '--enable-library-profiling' +else: + prof = '' + +test('safePkg01', + [normal, alone], + run_command, + ['$MAKE -s --no-print-directory safePkg01 PROF=' + prof]) + +test('ImpSafe01', normal, compile_fail, ['']) + +test('ImpSafeOnly01', [normal, alone], compile, ['-package-conf local.db -trust base']) + +test('ImpSafeOnly02', [normal, alone], compile, ['-package-conf local.db -trust base -trust safePkg01']) + +test('ImpSafeOnly03', [normal, alone], compile_fail, ['-package-conf local.db -trust base']) + diff --git a/testsuite/tests/safeHaskell/check/pkg01/p.cabal b/testsuite/tests/safeHaskell/check/pkg01/p.cabal new file mode 100644 index 0000000000..f6d84b5f8a --- /dev/null +++ b/testsuite/tests/safeHaskell/check/pkg01/p.cabal @@ -0,0 +1,15 @@ +Name: safePkg01 +Version: 1.0 +Description: SafeHaskell Test Package +License: BSD3 +Build-Type: Simple + +Library { + Build-Depends: base >= 4 + Exposed-Modules: + M_SafePkg + M_SafePkg2 + M_SafePkg3 + M_SafePkg4 +} + diff --git a/testsuite/tests/safeHaskell/check/pkg01/safePkg01.stdout b/testsuite/tests/safeHaskell/check/pkg01/safePkg01.stdout new file mode 100644 index 0000000000..c1a5642c17 --- /dev/null +++ b/testsuite/tests/safeHaskell/check/pkg01/safePkg01.stdout @@ -0,0 +1,24 @@ +local.db: + safePkg01-1.0 + +trusted: False + +M_SafePkg +package dependencies: base* ghc-prim integer-gmp +trusted: safe +require own pkg trusted: False + +M_SafePkg2 +package dependencies: base ghc-prim integer-gmp +trusted: trustworthy +require own pkg trusted: False + +M_SafePkg3 +package dependencies: base* ghc-prim integer-gmp +trusted: safe +require own pkg trusted: True + +M_SafePkg4 +package dependencies: base* ghc-prim integer-gmp +trusted: safe +require own pkg trusted: True |