Add a StringPrimL constructor to the Lit type (fix Trac #4168)
authorsimonpj@microsoft.com <unknown>
Fri, 30 Jul 2010 13:15:50 +0000 (13:15 +0000)
committersimonpj@microsoft.com <unknown>
Fri, 30 Jul 2010 13:15:50 +0000 (13:15 +0000)
There's a corresponding patch in the main compiler

libraries/template-haskell/Language/Haskell/TH/Lib.hs
libraries/template-haskell/Language/Haskell/TH/Ppr.hs
libraries/template-haskell/Language/Haskell/TH/Syntax.hs

index 9dab6ce..761d807 100644 (file)
@@ -53,6 +53,8 @@ charL       :: Char -> Lit
 charL       = CharL
 stringL     :: String -> Lit
 stringL     = StringL
+stringPrimL :: String -> Lit
+stringPrimL = StringPrimL
 rationalL   :: Rational -> Lit
 rationalL   = RationalL
 
index 0ac48b2..4f79fbe 100644 (file)
@@ -164,6 +164,7 @@ pprLit i (DoublePrimL x) = parensIf (i > noPrec && x < 0)
 pprLit i (IntegerL x)    = parensIf (i > noPrec && x < 0) (integer x)
 pprLit _ (CharL c)       = text (show c)
 pprLit _ (StringL s)     = text (show s)
+pprLit _ (StringPrimL s) = text (show s) <> char '#'
 pprLit i (RationalL rat) = parensIf (i > noPrec) $ rational rat
 
 ------------------------------
index ff833cd..a992c5a 100644 (file)
@@ -649,6 +649,7 @@ data Lit = CharL Char
          | WordPrimL Integer
          | FloatPrimL Rational
          | DoublePrimL Rational
+         | StringPrimL String  -- ^ A primitive C-style string, type Addr#
     deriving( Show, Eq, Data, Typeable )
 
     -- We could add Int, Float, Double etc, as we do in HsLit,