Reexport Semigroup's <> operator from Prelude (#14191)
authorHerbert Valerio Riedel <hvr@gnu.org>
Thu, 21 Sep 2017 21:30:05 +0000 (23:30 +0200)
committerHerbert Valerio Riedel <hvr@gnu.org>
Thu, 21 Sep 2017 22:24:25 +0000 (00:24 +0200)
This completes the 2nd phase of the Semigroup=>Monoid Proposal (SMP)
initiated in 8ae263ceb3566a7c82336400b09cb8f381217405.

This updates a couple submodules to address <> naming clashes.

18 files changed:
compiler/utils/GhcPrelude.hs
ghc/GHCi/UI.hs
ghc/GHCi/UI/Info.hs
ghc/GHCi/UI/Monad.hs
ghc/Main.hs
libraries/base/Prelude.hs
libraries/base/changelog.md
libraries/containers
libraries/pretty
libraries/template-haskell/Language/Haskell/TH/Ppr.hs
libraries/template-haskell/Language/Haskell/TH/PprLib.hs
libraries/text
testsuite/tests/ado/ado-optimal.hs
testsuite/tests/ado/ado001.hs
testsuite/tests/callarity/unittest/CallArity1.hs
testsuite/tests/rename/should_fail/T10618.hs
testsuite/tests/rename/should_fail/T10618.stderr
utils/haddock

index ed4eacb..8b09bd5 100644 (file)
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 -- | Custom GHC "Prelude"
 --
 -- This module serves as a replacement for the "Prelude" module
@@ -6,4 +8,13 @@
 --
 module GhcPrelude (module X) where
 
+-- We export the 'Semigroup' class but w/o the (<>) operator to avoid
+-- clashing with the (Outputable.<>) operator which is heavily used
+-- through GHC's code-base.
+
+#if MIN_VERSION_base(4,11,0)
+import Prelude as X hiding ((<>))
+#else
 import Prelude as X
+import Data.Semigroup as X (Semigroup)
+#endif
index 6a03b3c..32e581a 100644 (file)
@@ -102,6 +102,7 @@ import qualified Data.Map as M
 import Data.Time.LocalTime ( getZonedTime )
 import Data.Time.Format ( formatTime, defaultTimeLocale )
 import Data.Version ( showVersion )
+import Prelude hiding ((<>))
 
 import Exception hiding (catch)
 import Foreign hiding (void)
index c0cb2d1..fd8749a 100644 (file)
@@ -27,7 +27,7 @@ import           Data.Map.Strict   (Map)
 import qualified Data.Map.Strict   as M
 import           Data.Maybe
 import           Data.Time
-import           Prelude           hiding (mod)
+import           Prelude           hiding (mod,(<>))
 import           System.Directory
 
 import qualified CoreUtils
index 46f0860..9233beb 100644 (file)
@@ -55,6 +55,7 @@ import Data.Time
 import System.Environment
 import System.IO
 import Control.Monad
+import Prelude hiding ((<>))
 
 import System.Console.Haskeline (CompletionFunc, InputT)
 import qualified System.Console.Haskeline as Haskeline
index a75aba3..7c406e4 100644 (file)
@@ -809,7 +809,7 @@ dumpFastStringStats dflags = do
         -- the "z-encoded" total.
   putMsg dflags msg
   where
-   x `pcntOf` y = int ((x * 100) `quot` y) <> char '%'
+   x `pcntOf` y = int ((x * 100) `quot` y) Outputable.<> char '%'
 
 countFS :: Int -> Int -> Int -> [[FastString]] -> (Int, Int, Int)
 countFS entries longest has_z [] = (entries, longest, has_z)
index 75a0d53..15e392f 100644 (file)
@@ -67,7 +67,7 @@ module Prelude (
     fromIntegral, realToFrac,
 
     -- ** Semigroups and Monoids
-    Semigroup, -- TODO: export (<>)
+    Semigroup((<>)),
     Monoid(mempty, mappend, mconcat),
 
     -- ** Monads and functors
index 6d5543e..6c15a98 100644 (file)
@@ -11,7 +11,7 @@
   * Add `Semigroup` instance for `EventLifetime`.
 
   * Make `Semigroup` a superclass of `Monoid`;
-    export `Semigroup` from `Prelude`; remove `Monoid` reexport
+    export `Semigroup((<>))` from `Prelude`; remove `Monoid` reexport
     from `Data.Semigroup` (#14191).
 
   * Generalise `instance Monoid a => Monoid (Maybe a)` to
index 6414704..c07e484 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 6414704b892a6dc56a1b17e3a530d777b70f56ae
+Subproject commit c07e4848e1b4458265e30cfb6265f9b6bd2bf053
index 56bc78e..445e92d 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 56bc78e2c2cfcc850f6fec87fe79743750d4c8b4
+Subproject commit 445e92dd7508978caba5563c1e79b2758dff4767
index e6c3302..bbb73b0 100644 (file)
@@ -14,6 +14,7 @@ import Data.Char ( toLower, chr)
 import GHC.Show  ( showMultiLineString )
 import GHC.Lexeme( startsVarSym )
 import Data.Ratio ( numerator, denominator )
+import Prelude hiding ((<>))
 
 nestDepth :: Int
 nestDepth = 4
index 32980ab..7e05d05 100644 (file)
@@ -41,6 +41,7 @@ import qualified Text.PrettyPrint as HPJ
 import Control.Monad (liftM, liftM2, ap)
 import Language.Haskell.TH.Lib.Map ( Map )
 import qualified Language.Haskell.TH.Lib.Map as Map ( lookup, insert, empty )
+import Prelude hiding ((<>))
 
 infixl 6 <> 
 infixl 6 <+>
index 1707aa5..2d88a0a 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 1707aa5f2ad5c254c45ac9ffcac749e4d6b67a6e
+Subproject commit 2d88a0a3e8e3bb79260e5c8f61dd6c447f61c5f5
index d67aa4f..5e3266e 100644 (file)
@@ -3,7 +3,7 @@
 module Main where
 
 import Control.Applicative
-import Text.PrettyPrint
+import Text.PrettyPrint as PP
 
 (a:b:c:d:e:f:g:h:_) = map (\c -> doc [c]) ['a'..]
 
@@ -64,7 +64,7 @@ instance Monad M where
       (Nothing,Nothing) -> (Nothing, b)
       (Just d, Nothing) -> (Just d, b)
       (Nothing, Just d) -> (Just d, b)
-      (Just d1, Just d2) -> (Just (maybeParen p (d1 <> semi <+> d2)), b)
+      (Just d1, Just d2) -> (Just (maybeParen p (d1 PP.<> semi <+> d2)), b)
 
 doc :: String -> M ()
 doc d = M $ \_ -> (Just (text d), ())
index 0d466c5..6abce17 100644 (file)
@@ -2,7 +2,7 @@
 module Main where
 
 import Control.Applicative
-import Text.PrettyPrint
+import Text.PrettyPrint as PP
 
 (a:b:c:d:e:f:g:h:_) = map (\c -> doc [c]) ['a'..]
 
@@ -175,7 +175,7 @@ instance Monad M where
       (Nothing,Nothing) -> (Nothing, b)
       (Just d, Nothing) -> (Just d, b)
       (Nothing, Just d) -> (Just d, b)
-      (Just d1, Just d2) -> (Just (maybeParen p (d1 <> semi <+> d2)), b)
+      (Just d1, Just d2) -> (Just (maybeParen p (d1 PP.<> semi <+> d2)), b)
 
 doc :: String -> M ()
 doc d = M $ \_ -> (Just (text d), ())
index 8fd8feb..1100ff6 100644 (file)
@@ -172,7 +172,7 @@ main = do
             case lintExpr dflags [f,scrutf,scruta] e of
                 Just msg -> putMsg dflags (msg $$ text "in" <+> text n)
                 Nothing -> return ()
-            putMsg dflags (text n <> char ':')
+            putMsg dflags (text n Outputable.<> char ':')
             -- liftIO $ putMsg dflags (ppr e)
             let e' = callArityRHS e
             let bndrs = nonDetEltsUniqSet (allBoundIds e')
index 28b665f..d69cf3d 100644 (file)
@@ -1,3 +1,3 @@
 module T10618 where
 
-foo = Just $ Nothing <> Nothing
+foo = Just $ Nothing <|> Nothing
index 8b4dc2c..2d47874 100644 (file)
@@ -1,6 +1,6 @@
 
 T10618.hs:3:22: error:
-    • Variable not in scope: (<>) :: Maybe (Maybe a0) -> Maybe a1 -> t
+    • Variable not in scope: (<|>) :: Maybe (Maybe a0) -> Maybe a1 -> t
     • Perhaps you meant one of these:
-        ‘<$>’ (imported from Prelude), ‘*>’ (imported from Prelude),
-        ‘<$’ (imported from Prelude)
+        ‘<$>’ (imported from Prelude), ‘<*>’ (imported from Prelude),
+        ‘<>’ (imported from Prelude)
index 2f6c113..0a64b5c 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 2f6c11305cca9f50833b99dac729ce76e46aa235
+Subproject commit 0a64b5cdc051c47b24151b8839ae9067f06d8d0d