Add support for Word primitives 32##
authorIan Lynagh <igloo@earth.li>
Wed, 23 Apr 2008 16:04:28 +0000 (16:04 +0000)
committerIan Lynagh <igloo@earth.li>
Wed, 23 Apr 2008 16:04:28 +0000 (16:04 +0000)
libraries/template-haskell/Language/Haskell/TH.hs
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 b3a83ff..75ab0e7 100644 (file)
@@ -28,7 +28,8 @@ module Language.Haskell.TH(
        -- Library functions
        InfoQ, ExpQ, DecQ, ConQ, TypeQ, CxtQ, MatchQ, ClauseQ, BodyQ, GuardQ,
        StmtQ, RangeQ, StrictTypeQ, VarStrictTypeQ, PatQ, FieldPatQ,
-       intPrimL, floatPrimL, doublePrimL, integerL, charL, stringL, rationalL, 
+       intPrimL, wordPrimL, floatPrimL, doublePrimL, integerL, rationalL,
+       charL, stringL,
        litP, varP, tupP, conP, infixP, tildeP, asP, wildP, recP, listP, sigP,
        fieldPat,
        bindS, letS, noBindS, parS, 
index 9432231..7e6fe23 100644 (file)
@@ -37,6 +37,8 @@ type FieldExpQ      = Q FieldExp
 
 intPrimL    :: Integer -> Lit
 intPrimL    = IntPrimL
+wordPrimL    :: Integer -> Lit
+wordPrimL    = WordPrimL
 floatPrimL  :: Rational -> Lit
 floatPrimL  = FloatPrimL
 doublePrimL :: Rational -> Lit
index 3281781..02deea9 100644 (file)
@@ -155,6 +155,7 @@ pprBody eq (NormalB e) = (if eq then text "=" else text "->") <+> ppr e
 pprLit :: Precedence -> Lit -> Doc
 pprLit i (IntPrimL x)    = parensIf (i > noPrec && x < 0)
                                     (integer x <> char '#')
+pprLit i (WordPrimL x)    = integer x <> text "##"
 pprLit i (FloatPrimL x)  = parensIf (i > noPrec && x < 0)
                                     (float (fromRational x) <> char '#')
 pprLit i (DoublePrimL x) = parensIf (i > noPrec && x < 0)
index a63d77b..435f4c6 100644 (file)
@@ -605,6 +605,7 @@ data Lit = CharL Char
                                 -- the moment. Maybe that doesn't matter?
          | RationalL Rational   -- Ditto
          | IntPrimL Integer
+         | WordPrimL Integer
          | FloatPrimL Rational
          | DoublePrimL Rational
     deriving( Show, Eq, Data, Typeable )