From 8c4bd8988ae062f8b6084b99277250eae362dbbf Mon Sep 17 00:00:00 2001 From: simonmar Date: Mon, 29 Apr 2002 16:17:55 +0000 Subject: [PATCH] [project @ 2002-04-29 16:17:55 by simonmar] - Fix bootstrapped compilation, - Add the following RULE: text "abc" ==> ptext SLIT("abc") so most of the time there shouldn't be any need to use SLIT(). I'll go around and apply the opposite of the above RULE once I've convinced myself that the RULE does what it should. --- ghc/compiler/utils/Pretty.lhs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/ghc/compiler/utils/Pretty.lhs b/ghc/compiler/utils/Pretty.lhs index 6f4f614..994435a 100644 --- a/ghc/compiler/utils/Pretty.lhs +++ b/ghc/compiler/utils/Pretty.lhs @@ -189,8 +189,21 @@ import IOExts ( hPutBufFull ) import System.IO ( hPutBuf ) #endif +#if __GLASGOW_HASKELL__ < 503 +import PrelBase ( unpackCString# ) +#else +import GHC.Base ( unpackCString# ) +#endif + import PrimPacked ( strLength ) +#if __GLASGOW_HASKELL__ < 411 +import PrelAddr ( Addr(..) ) +#else +import Addr ( Addr(..) ) +import Ptr ( Ptr(..) ) +#endif + -- Don't import Util( assertPanic ) because it makes a loop in the module structure infixl 6 <> @@ -595,6 +608,12 @@ text s = case length s of {IBOX(sl) -> textBeside_ (Str s) sl Empty} ftext s = case lengthFS s of {IBOX(sl) -> textBeside_ (PStr s) sl Empty} ptext (A# s) = case strLength (A# s) of {IBOX(sl) -> textBeside_ (LStr s sl) sl Empty} +-- RULE that turns (text "abc") into (ptext (A# "abc"#)) to avoid the +-- intermediate packing/unpacking of the string. +{-# RULES + "text/str" forall a. text (unpackCString# a) = ptext (A# a) + #-} + nest IBOX(k) p = mkNest k (reduceDoc p) -- Externally callable version -- mkNest checks for Nest's invariant that it doesn't have an Empty inside it -- 1.7.10.4