Repository : ssh://darcs.haskell.org//srv/darcs/packages/template-haskell On branch : master
http://hackage.haskell.org/trac/ghc/changeset/15f68f57ca685933d18d88655e91ea692ccd198f >--------------------------------------------------------------- commit 15f68f57ca685933d18d88655e91ea692ccd198f Author: Simon Peyton Jones <[email protected]> Date: Mon Jul 18 23:25:51 2011 +0100 Add TH support for UNPACK pragmas (Trac #5290) The extension is nice, because it just adds an extra constructor to the existing data type 'Strict'. Thanks to Mikhail Vorozhtsov. >--------------------------------------------------------------- Language/Haskell/TH/Lib.hs | 3 ++- Language/Haskell/TH/Ppr.hs | 1 + Language/Haskell/TH/Syntax.hs | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Language/Haskell/TH/Lib.hs b/Language/Haskell/TH/Lib.hs index fc8ab76..7fe6676 100644 --- a/Language/Haskell/TH/Lib.hs +++ b/Language/Haskell/TH/Lib.hs @@ -457,9 +457,10 @@ sigT t k t' <- t return $ SigT t' k -isStrict, notStrict :: Q Strict +isStrict, notStrict, unpacked :: Q Strict isStrict = return $ IsStrict notStrict = return $ NotStrict +unpacked = return Unpacked strictType :: Q Strict -> TypeQ -> StrictTypeQ strictType = liftM2 (,) diff --git a/Language/Haskell/TH/Ppr.hs b/Language/Haskell/TH/Ppr.hs index 6c324f0..dc43f4b 100644 --- a/Language/Haskell/TH/Ppr.hs +++ b/Language/Haskell/TH/Ppr.hs @@ -374,6 +374,7 @@ pprStrictType :: (Strict, Type) -> Doc -- Prints with parens if not already atomic pprStrictType (IsStrict, t) = char '!' <> pprParendType t pprStrictType (NotStrict, t) = pprParendType t +pprStrictType (Unpacked, t) = text "{-# UNPACK #-} !" <> pprParendType t ------------------------------ pprParendType :: Type -> Doc diff --git a/Language/Haskell/TH/Syntax.hs b/Language/Haskell/TH/Syntax.hs index b763aba..96f75f4 100644 --- a/Language/Haskell/TH/Syntax.hs +++ b/Language/Haskell/TH/Syntax.hs @@ -862,7 +862,7 @@ data Pred = ClassP Name [Type] -- ^ @Eq (Int, a)@ | EqualP Type Type -- ^ @F a ~ Bool@ deriving( Show, Eq, Data, Typeable ) -data Strict = IsStrict | NotStrict +data Strict = IsStrict | NotStrict | Unpacked deriving( Show, Eq, Data, Typeable ) data Con = NormalC Name [StrictType] -- ^ @C Int a@ _______________________________________________ Cvs-libraries mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-libraries
