Improve Safe Haskell bounds for changes to base over time
authorDavid Terei <code@davidterei.com>
Thu, 20 Nov 2014 02:02:30 +0000 (18:02 -0800)
committerDavid Terei <code@davidterei.com>
Fri, 21 Nov 2014 21:03:38 +0000 (13:03 -0800)
20 files changed:
libraries/base/Control/Concurrent/QSem.hs
libraries/base/Control/Concurrent/QSemN.hs
libraries/base/Data/Bifunctor.hs
libraries/base/Data/Data.hs
libraries/base/Data/Type/Bool.hs
libraries/base/Data/Version.hs
libraries/base/GHC/Char.hs
libraries/base/GHC/Event/Control.hs
libraries/base/GHC/Fingerprint.hs-boot
libraries/base/GHC/IO/Encoding/CodePage/API.hs
libraries/base/GHC/IP.hs
libraries/base/GHC/Profiling.hs
libraries/base/GHC/Stack.hsc
libraries/base/GHC/TypeLits.hs
libraries/base/System/Timeout.hs
testsuite/tests/safeHaskell/unsafeLibs/BadImport05.hs [deleted file]
testsuite/tests/safeHaskell/unsafeLibs/BadImport05.stderr [deleted file]
testsuite/tests/safeHaskell/unsafeLibs/GoodImport02.hs
testsuite/tests/safeHaskell/unsafeLibs/GoodImport03.hs
testsuite/tests/safeHaskell/unsafeLibs/all.T

index 223d865..e20c737 100644 (file)
@@ -1,4 +1,4 @@
-{-# LANGUAGE Trustworthy #-}
+{-# LANGUAGE Safe #-}
 {-# LANGUAGE AutoDeriveTypeable, BangPatterns #-}
 {-# OPTIONS_GHC -funbox-strict-fields #-}
 
index a377e5e..bd520cf 100644 (file)
@@ -1,4 +1,4 @@
-{-# LANGUAGE Trustworthy #-}
+{-# LANGUAGE Safe #-}
 {-# LANGUAGE AutoDeriveTypeable, BangPatterns #-}
 {-# OPTIONS_GHC -funbox-strict-fields #-}
 
index 4c84f1c..2e31ad5 100644 (file)
@@ -1,5 +1,5 @@
+{-# LANGUAGE Safe #-}
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE NoImplicitPrelude #-}
 
 -----------------------------------------------------------------------------
 -- |
@@ -18,8 +18,6 @@ module Data.Bifunctor
   ) where
 
 import Control.Applicative  ( Const(..) )
-import Data.Either          ( Either(..) )
-import GHC.Base             ( (.), id )
 
 -- | Formally, the class 'Bifunctor' represents a bifunctor
 -- from @Hask@ -> @Hask@.
index 4aa785b..8f1e5f4 100644 (file)
@@ -1,7 +1,6 @@
-{-# LANGUAGE Trustworthy, FlexibleInstances #-}
-{-# LANGUAGE RankNTypes, ScopedTypeVariables, PolyKinds #-}
-{-# LANGUAGE StandaloneDeriving, AutoDeriveTypeable, TypeOperators,
-             GADTs #-}
+{-# LANGUAGE Trustworthy #-}
+{-# LANGUAGE RankNTypes, ScopedTypeVariables, PolyKinds, StandaloneDeriving,
+             AutoDeriveTypeable, TypeOperators, GADTs, FlexibleInstances #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 
 -----------------------------------------------------------------------------
index 705db9e..8a80455 100644 (file)
@@ -1,3 +1,4 @@
+{-# LANGUAGE Safe #-}
 {-# LANGUAGE TypeFamilies, TypeOperators, DataKinds, NoImplicitPrelude,
              PolyKinds #-}
 
@@ -53,4 +54,4 @@ type family Not a where
   Not False = True
   Not True  = False
 
-  
\ No newline at end of file
+  
index fdf01d1..8a0f9c8 100644 (file)
@@ -1,6 +1,6 @@
+{-# LANGUAGE Safe #-}
 {-# LANGUAGE AutoDeriveTypeable #-}
 {-# LANGUAGE NoImplicitPrelude #-}
-{-# LANGUAGE Trustworthy #-}
 
 -----------------------------------------------------------------------------
 -- |
@@ -34,12 +34,15 @@ module Data.Version (
         showVersion, parseVersion,
   ) where
 
+import Control.Monad    ( Monad(..), liftM )
+import Data.Bool        ( (&&) )
 import Data.Char        ( isDigit, isAlphaNum )
 import Data.Eq
+import Data.Int         ( Int )
 import Data.List
 import Data.Ord
+import Data.String      ( String )
 import Data.Typeable    ( Typeable )
-import GHC.Base         ( ($), (&&), Monad(..), String, Int, liftM )
 import GHC.Read
 import GHC.Show
 import Text.ParserCombinators.ReadP
@@ -113,6 +116,6 @@ showVersion (Version branch tags)
 -- | A parser for versions in the format produced by 'showVersion'.
 --
 parseVersion :: ReadP Version
-parseVersion = do branch <- sepBy1 (liftM read $ munch1 isDigit) (char '.')
+parseVersion = do branch <- sepBy1 (liftM read (munch1 isDigit)) (char '.')
                   tags   <- many (char '-' >> munch1 isAlphaNum)
                   return Version{versionBranch=branch, versionTags=tags}
index 2db18c6..4928f21 100644 (file)
@@ -1,4 +1,4 @@
-
+{-# LANGUAGE Trustworthy #-}
 {-# LANGUAGE NoImplicitPrelude, MagicHash #-}
 
 module GHC.Char (chr) where
index 747a416..93590ec 100644 (file)
@@ -1,4 +1,4 @@
-{-# LANGUAGE Unsafe #-}
+{-# LANGUAGE Trustworthy #-}
 {-# LANGUAGE CPP
            , NoImplicitPrelude
            , ScopedTypeVariables
index 36833b8..479c1af 100644 (file)
@@ -1,4 +1,4 @@
-{-# LANGUAGE Unsafe #-}
+{-# LANGUAGE Trustworthy #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 module GHC.Fingerprint (
         fingerprintString,
index fc915ec..182f05d 100644 (file)
@@ -1,3 +1,4 @@
+{-# LANGUAGE Trustworthy #-}
 {-# LANGUAGE CPP, NoImplicitPrelude, NondecreasingIndentation, RecordWildCards, ScopedTypeVariables #-}
 {-# OPTIONS_GHC -fno-warn-name-shadowing #-}
 module GHC.IO.Encoding.CodePage.API (
index 95b00c1..b80ee4b 100644 (file)
@@ -1,3 +1,4 @@
+{-# LANGUAGE Safe #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE FunctionalDependencies #-}
 {-# LANGUAGE KindSignatures #-}
index 0bedcb1..281d9b1 100644 (file)
@@ -1,3 +1,4 @@
+{-# LANGUAGE Trustworthy #-}
 {-# LANGUAGE NoImplicitPrelude #-}
 
 -- | /Since: 4.7.0.0/
index edd0f4f..611e5c9 100644 (file)
@@ -1,3 +1,5 @@
+{-# LANGUAGE Trustworthy #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  GHC.Stack
index cd404f1..8c74481 100644 (file)
@@ -1,3 +1,4 @@
+{-# LANGUAGE Trustworthy #-}
 {-# LANGUAGE DataKinds #-}
 {-# LANGUAGE KindSignatures #-}
 {-# LANGUAGE TypeFamilies #-}
index 322a842..73b5910 100644 (file)
@@ -1,4 +1,4 @@
-{-# LANGUAGE Trustworthy #-}
+{-# LANGUAGE Safe #-}
 {-# LANGUAGE CPP #-}
 {-# LANGUAGE AutoDeriveTypeable, StandaloneDeriving #-}
 
diff --git a/testsuite/tests/safeHaskell/unsafeLibs/BadImport05.hs b/testsuite/tests/safeHaskell/unsafeLibs/BadImport05.hs
deleted file mode 100644 (file)
index c6d6384..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-{-# LANGUAGE Safe #-}
--- | Import unsafe module Foreign.Unsafe to make sure it fails
-module Main where
-
-import System.IO.Unsafe (unsafePerformIO)
-
-f :: Int
-f = unsafePerformIO $ putStrLn "What kind of swallow?" >> return 2
-
-main :: IO ()
-main = putStrLn $ "X is: " ++ show f
-
diff --git a/testsuite/tests/safeHaskell/unsafeLibs/BadImport05.stderr b/testsuite/tests/safeHaskell/unsafeLibs/BadImport05.stderr
deleted file mode 100644 (file)
index 32a42f5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-
-BadImport05.hs:5:1:
-    System.IO.Unsafe: Can't be safely imported!
-    The module itself isn't safe.
index 85a781f..86c34ad 100644 (file)
@@ -1,11 +1,11 @@
 {-# LANGUAGE Safe #-}
--- | Import safe versions of unsafe modules from prelude
+-- | Import (now safe by default) modules.
 module Main where
 
-import Control.Monad.ST.Safe
-import Control.Monad.ST.Lazy.Safe
-import Foreign.ForeignPtr.Safe
-import Foreign.Safe
+import Control.Monad.ST
+import Control.Monad.ST.Lazy
+import Foreign.ForeignPtr
+import Foreign
 
 f :: Int
 f = 2
index 6533e18..30da9f5 100644 (file)
@@ -1,39 +1,47 @@
 {-# LANGUAGE Safe #-}
+{-# OPTIONS_GHC -fno-warn-deprecations #-}
 -- | Import all modules from prelude that should be safe
 module Main where
 
 import Numeric
 import Prelude
--- import Foreign
 
 import Control.Applicative
 import Control.Arrow
 import Control.Category
 
--- import Control.ST
--- import Control.ST.Lazy
--- import Control.ST.Strict
-
 import Control.Concurrent
 import Control.Concurrent.Chan
 import Control.Concurrent.MVar
+import Control.Concurrent.QSem
+import Control.Concurrent.QSemN
 
 import Control.Exception
 import Control.Exception.Base
 
 import Control.Monad
 import Control.Monad.Fix
+import Control.Monad.Instances
 import Control.Monad.Zip
 
+import Control.Monad.ST
+import Control.Monad.ST.Lazy
+import Control.Monad.ST.Strict
+
+import Data.Bifunctor
 import Data.Bits
 import Data.Bool
 import Data.Char
+-- import Data.Coerce
 import Data.Complex
+import Data.Data
+import Data.Dynamic
 import Data.Either
 import Data.Eq
 import Data.Fixed
 import Data.Foldable
 import Data.Function
+import Data.Functor.Identity
 import Data.Functor
 import Data.IORef
 import Data.Int
@@ -42,11 +50,13 @@ import Data.List
 import Data.Maybe
 import Data.Monoid
 import Data.Ord
+import Data.Proxy
 import Data.Ratio
 import Data.String
 import Data.Traversable
 import Data.Tuple
 import Data.Typeable
+-- import Data.Typeable.Internal
 import Data.Unique
 import Data.Version
 import Data.Word
@@ -55,10 +65,16 @@ import Data.STRef
 import Data.STRef.Lazy
 import Data.STRef.Strict
 
+import Data.Type.Bool
+-- import Data.Type.Coercion
+-- import Data.Type.Equality
+
 -- import Debug.Trace
 
+import Foreign
+
 import Foreign.Concurrent
--- import Foreign.ForeignPtr
+import Foreign.ForeignPtr
 import Foreign.Ptr
 import Foreign.StablePtr
 import Foreign.Storable
@@ -68,7 +84,7 @@ import Foreign.C.Error
 import Foreign.C.String
 import Foreign.C.Types
 
--- import Foreign.Marshal
+import Foreign.Marshal
 import Foreign.Marshal.Alloc
 import Foreign.Marshal.Array
 import Foreign.Marshal.Error
@@ -76,34 +92,27 @@ import Foreign.Marshal.Pool
 import Foreign.Marshal.Utils
 
 import System.CPUTime
+import System.Console.GetOpt
 import System.Environment
 import System.Exit
-import System.Info
-import System.Mem
-import System.Timeout
-
-import System.Console.GetOpt
-
 import System.IO
 import System.IO.Error
-
+import System.Info
+import System.Mem
 import System.Mem.StableName
 import System.Mem.Weak
-
 import System.Posix.Internals
 import System.Posix.Types
+import System.Timeout
 
+import Text.ParserCombinators.ReadP
+import Text.ParserCombinators.ReadPrec
 import Text.Printf
-
 import Text.Read
 import Text.Read.Lex
-
 import Text.Show
 import Text.Show.Functions
 
-import Text.ParserCombinators.ReadP
-import Text.ParserCombinators.ReadPrec
-
 -- import Unsafe.Coerce
 
 f :: Int
index 03ca0e4..8bcda5f 100644 (file)
@@ -19,7 +19,6 @@ test('Dep10', normal, compile_fail, [''])
 
 # check unsafe modules are marked unsafe
 test('BadImport01', normal, compile_fail, [''])
-test('BadImport05', normal, compile_fail, [''])
 test('BadImport06', normal, compile_fail, [''])
 test('BadImport07', normal, compile_fail, [''])
 test('BadImport08', normal, compile_fail, [''])