NoImplicitPrelude in ghc-boot-th, ghc-boot, ghc-heap, ghci
authorShayne Fletcher <shayne.fletcher@digitalasset.com>
Tue, 21 Aug 2018 11:58:16 +0000 (07:58 -0400)
committerKrzysztof Gogolewski <krz.gogolewski@gmail.com>
Tue, 18 Sep 2018 17:05:25 +0000 (19:05 +0200)
PR: https://github.com/ghc/ghc/pull/184

34 files changed:
compiler/utils/GhcPrelude.hs
libraries/ghc-boot-th/GHC/ForeignSrcLang/Type.hs
libraries/ghc-boot-th/GHC/LanguageExtensions/Type.hs
libraries/ghc-boot-th/GHC/Lexeme.hs
libraries/ghc-boot-th/ghc-boot-th.cabal.in
libraries/ghc-boot/GHC/HandleEncoding.hs
libraries/ghc-boot/GHC/PackageDb.hs
libraries/ghc-boot/GHC/Serialized.hs
libraries/ghc-boot/ghc-boot.cabal.in
libraries/ghc-heap/GHC/Exts/Heap.hs
libraries/ghc-heap/GHC/Exts/Heap/ClosureTypes.hs
libraries/ghc-heap/GHC/Exts/Heap/Closures.hs
libraries/ghc-heap/GHC/Exts/Heap/Constants.hsc
libraries/ghc-heap/GHC/Exts/Heap/InfoTable.hsc
libraries/ghc-heap/GHC/Exts/Heap/InfoTable/Types.hsc
libraries/ghc-heap/GHC/Exts/Heap/InfoTableProf.hsc
libraries/ghc-heap/GHC/Exts/Heap/Utils.hsc
libraries/ghc-heap/ghc-heap.cabal.in
libraries/ghci/GHCi/BinaryArray.hs
libraries/ghci/GHCi/BreakArray.hs
libraries/ghci/GHCi/CreateBCO.hs
libraries/ghci/GHCi/FFI.hsc
libraries/ghci/GHCi/InfoTable.hsc
libraries/ghci/GHCi/Message.hs
libraries/ghci/GHCi/ObjLink.hs
libraries/ghci/GHCi/RemoteTypes.hs
libraries/ghci/GHCi/ResolvedBCO.hs
libraries/ghci/GHCi/Run.hs
libraries/ghci/GHCi/Signals.hs
libraries/ghci/GHCi/StaticPtrTable.hs
libraries/ghci/GHCi/TH.hs
libraries/ghci/GHCi/TH/Binary.hs
libraries/ghci/SizedSeq.hs
libraries/ghci/ghci.cabal.in

index 574c29d..66d01be 100644 (file)
@@ -20,3 +20,16 @@ import Data.Semigroup as X (Semigroup)
 #endif
 
 import Data.Foldable as X (foldl')
+
+{-
+Note [Why do we import Prelude here?]
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+The files ghc-boot-th.cabal, ghc-boot.cabal, ghci.cabal and
+ghc-heap.cabal contain the directive default-extensions:
+NoImplicitPrelude. There are two motivations for this:
+  - Consistency with the compiler directory, which enables
+    NoImplicitPrelude;
+  - Allows loading the above dependent packages with ghc-in-ghci,
+    giving a smoother development experience when adding new
+    extensions.
+-}
index 4841de8..3106141 100644 (file)
@@ -3,6 +3,7 @@ module GHC.ForeignSrcLang.Type
   ( ForeignSrcLang(..)
   ) where
 
+import Prelude -- See note [Why do we import Prelude here?]
 import GHC.Generics (Generic)
 
 data ForeignSrcLang
index c01ea32..2c06a74 100644 (file)
@@ -11,6 +11,7 @@
 {-# LANGUAGE DeriveGeneric #-}
 module GHC.LanguageExtensions.Type ( Extension(..) ) where
 
+import Prelude -- See note [Why do we import Prelude here?]
 import GHC.Generics
 
 -- | The language extensions known to GHC.
index 2ecee61..5093c98 100644 (file)
@@ -14,6 +14,7 @@ module GHC.Lexeme (
         startsVarSymASCII, isVarSymChar, okSymChar
   ) where
 
+import Prelude -- See note [Why do we import Prelude here?]
 import Data.Char
 
 -- | Is this character acceptable in a symbol (after the first char)?
index 2e45e8e..b52c8ab 100644 (file)
@@ -29,6 +29,7 @@ source-repository head
 Library
     default-language: Haskell2010
     other-extensions: DeriveGeneric
+    default-extensions: NoImplicitPrelude
 
     exposed-modules:
             GHC.LanguageExtensions.Type
index aaa1689..3c4c10c 100644 (file)
@@ -1,6 +1,7 @@
 -- | See GHC #10762 and #15021.
 module GHC.HandleEncoding (configureHandleEncoding) where
 
+import Prelude -- See note [Why do we import Prelude here?]
 import GHC.IO.Encoding (textEncodingName)
 import System.Environment
 import System.IO
index 0bce700..5de3a5f 100644 (file)
@@ -64,6 +64,7 @@ module GHC.PackageDb (
        writePackageDb
   ) where
 
+import Prelude -- See note [Why do we import Prelude here?]
 import Data.Version (Version(..))
 import qualified Data.ByteString as BS
 import qualified Data.ByteString.Char8 as BS.Char8
index ea5dba7..deb1a48 100644 (file)
@@ -18,6 +18,7 @@ module GHC.Serialized (
     serializeWithData, deserializeWithData,
   ) where
 
+import Prelude -- See note [Why do we import Prelude here?]
 import Data.Bits
 import Data.Word        ( Word8 )
 import Data.Data
index 0ca9c1e..58311b6 100644 (file)
@@ -34,6 +34,7 @@ source-repository head
 Library
     default-language: Haskell2010
     other-extensions: DeriveGeneric, RankNTypes, ScopedTypeVariables
+    default-extensions: NoImplicitPrelude
 
     exposed-modules:
             GHC.LanguageExtensions
index 535596f..16b00e0 100644 (file)
@@ -45,6 +45,7 @@ module GHC.Exts.Heap (
     , areBoxesEqual
     ) where
 
+import Prelude
 import GHC.Exts.Heap.Closures
 import GHC.Exts.Heap.ClosureTypes
 import GHC.Exts.Heap.Constants
index 677e3b6..1d25abe 100644 (file)
@@ -6,6 +6,7 @@ module GHC.Exts.Heap.ClosureTypes
     , closureTypeHeaderSize
     ) where
 
+import Prelude -- See note [Why do we import Prelude here?]
 import GHC.Generics
 
 {- ---------------------------------------------
index bdfac8b..facb801 100644 (file)
@@ -20,6 +20,7 @@ module GHC.Exts.Heap.Closures (
     , asBox
     ) where
 
+import Prelude -- See note [Why do we import Prelude here?]
 import GHC.Exts.Heap.Constants
 #if defined(PROFILING)
 import GHC.Exts.Heap.InfoTableProf
index 757e76c..2b57c13 100644 (file)
@@ -8,6 +8,7 @@ module GHC.Exts.Heap.Constants
 
 #include "MachDeps.h"
 
+import Prelude -- See note [Why do we import Prelude here?]
 import Data.Bits
 
 wORD_SIZE, tAG_MASK, wORD_SIZE_IN_BITS :: Int
index d6f1ab0..25fe498 100644 (file)
@@ -7,6 +7,7 @@ module GHC.Exts.Heap.InfoTable
 
 #include "Rts.h"
 
+import Prelude -- See note [Why do we import Prelude here?]
 import GHC.Exts.Heap.InfoTable.Types
 #if !defined(TABLES_NEXT_TO_CODE)
 import GHC.Exts.Heap.Constants
index 0ba535d..9a19360 100644 (file)
@@ -8,6 +8,7 @@ module GHC.Exts.Heap.InfoTable.Types
 
 #include "Rts.h"
 
+import Prelude -- See note [Why do we import Prelude here?]
 import GHC.Generics
 import GHC.Exts.Heap.ClosureTypes
 import Foreign
index cd030bf..56d7caa 100644 (file)
@@ -11,6 +11,7 @@ module GHC.Exts.Heap.InfoTableProf
 #define PROFILING
 #include "Rts.h"
 
+import Prelude -- See note [Why do we import Prelude here?]
 import GHC.Exts.Heap.InfoTable.Types
 #if !defined(TABLES_NEXT_TO_CODE)
 import GHC.Exts.Heap.Constants
index 3f09700..fab56d5 100644 (file)
@@ -6,6 +6,7 @@ module GHC.Exts.Heap.Utils (
 
 #include "Rts.h"
 
+import Prelude -- See note [Why do we import Prelude here?]
 import GHC.Exts.Heap.Constants
 import GHC.Exts.Heap.InfoTable
 
index 6f9bd2d..386c984 100644 (file)
@@ -28,6 +28,9 @@ library
 
   ghc-options:      -Wall
   cmm-sources:      cbits/HeapPrim.cmm
+
+  default-extensions: NoImplicitPrelude
+
   exposed-modules:  GHC.Exts.Heap
                     GHC.Exts.Heap.Closures
                     GHC.Exts.Heap.ClosureTypes
index 9529744..5431d6a 100644 (file)
@@ -5,6 +5,7 @@
 --
 module GHCi.BinaryArray(putArray, getArray) where
 
+import Prelude
 import Foreign.Ptr
 import Data.Binary
 import Data.Binary.Put (putBuilder)
index bece43b..8d0e749 100644 (file)
@@ -30,6 +30,7 @@ module GHCi.BreakArray
     ) where
 
 #ifdef GHCI
+import Prelude -- See note [Why do we import Prelude here?]
 import Control.Monad
 import Data.Word
 import GHC.Word
index ca7726c..3ebcf0e 100644 (file)
@@ -13,6 +13,7 @@
 -- | Create real byte-code objects from 'ResolvedBCO's.
 module GHCi.CreateBCO (createBCOs) where
 
+import Prelude -- See note [Why do we import Prelude here?]
 import GHCi.ResolvedBCO
 import GHCi.RemoteTypes
 import GHCi.BreakArray
index 7fd75bb..f88e9e8 100644 (file)
@@ -17,6 +17,7 @@ module GHCi.FFI
   , freeForeignCallInfo
   ) where
 
+import Prelude -- See note [Why do we import Prelude here?]
 import Control.Exception
 import Data.Binary
 import GHC.Generics
index ca57572..ec3c18a 100644 (file)
@@ -15,6 +15,7 @@ module GHCi.InfoTable
 #endif
   ) where
 
+import Prelude -- See note [Why do we import Prelude here?]
 #ifdef GHCI
 import Foreign
 import Foreign.C
index 9b6740c..012dd88 100644 (file)
@@ -22,6 +22,7 @@ module GHCi.Message
   , Pipe(..), remoteCall, remoteTHCall, readPipe, writePipe
   ) where
 
+import Prelude -- See note [Why do we import Prelude here?]
 import GHCi.RemoteTypes
 import GHCi.FFI
 import GHCi.TH.Binary ()
index 0d7b2ae..8c9f75b 100644 (file)
@@ -25,6 +25,7 @@ module GHCi.ObjLink
   , findSystemLibrary
   )  where
 
+import Prelude -- See note [Why do we import Prelude here?]
 import GHCi.RemoteTypes
 import Control.Exception (throwIO, ErrorCall(..))
 import Control.Monad    ( when )
index 12ae529..c024ae9 100644 (file)
@@ -17,6 +17,7 @@ module GHCi.RemoteTypes
   , unsafeForeignRefToRemoteRef, finalizeForeignRef
   ) where
 
+import Prelude -- See note [Why do we import Prelude here?]
 import Control.DeepSeq
 import Data.Word
 import Foreign hiding (newForeignPtr)
index f56ee6d..5942d37 100644 (file)
@@ -6,6 +6,7 @@ module GHCi.ResolvedBCO
   , isLittleEndian
   ) where
 
+import Prelude -- See note [Why do we import Prelude here?]
 import SizedSeq
 import GHCi.RemoteTypes
 import GHCi.BreakArray
index 8ec7659..72099b2 100644 (file)
@@ -12,6 +12,7 @@ module GHCi.Run
   ( run, redirectInterrupts
   ) where
 
+import Prelude -- See note [Why do we import Prelude here?]
 import GHCi.CreateBCO
 import GHCi.InfoTable
 import GHCi.FFI
index 629f116..dc3b297 100644 (file)
@@ -1,6 +1,7 @@
 {-# LANGUAGE CPP #-}
 module GHCi.Signals (installSignalHandlers) where
 
+import Prelude -- See note [Why do we import Prelude here?]
 import Control.Concurrent
 import Control.Exception
 import System.Mem.Weak  ( deRefWeak )
index d23e810..623e8ef 100644 (file)
@@ -3,6 +3,7 @@
 
 module GHCi.StaticPtrTable ( sptAddEntry ) where
 
+import Prelude -- See note [Why do we import Prelude here?]
 import Data.Word
 import Foreign
 import GHC.Fingerprint
index aebc32c..5779b50 100644 (file)
@@ -91,6 +91,7 @@ Other Notes on TH / Remote GHCi
     compiler/typecheck/TcSplice.hs
 -}
 
+import Prelude -- See note [Why do we import Prelude here?]
 import GHCi.Message
 import GHCi.RemoteTypes
 import GHC.Serialized
index 4cda7f2..22a2847 100644 (file)
@@ -7,6 +7,7 @@
 -- This module is full of orphans, unfortunately
 module GHCi.TH.Binary () where
 
+import Prelude -- See note [Why do we import Prelude here?]
 import Data.Binary
 import qualified Data.ByteString as B
 import GHC.Serialized
index 55433c2..f83e140 100644 (file)
@@ -8,6 +8,7 @@ module SizedSeq
   , sizeSS
   ) where
 
+import Prelude -- See note [Why do we import Prelude here?]
 import Control.DeepSeq
 import Data.Binary
 import Data.List
index 32ce79c..f49acf5 100644 (file)
@@ -29,6 +29,7 @@ source-repository head
 
 library
     default-language: Haskell2010
+    default-extensions: NoImplicitPrelude
     other-extensions:
         BangPatterns
         CPP