Repository : ssh://darcs.haskell.org//srv/darcs/packages/template-haskell

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/55fdd9e2b6144496fe48201c185b5962de074a4b

>---------------------------------------------------------------

commit 55fdd9e2b6144496fe48201c185b5962de074a4b
Author: Simon Peyton Jones <[email protected]>
Date:   Wed Mar 14 17:36:33 2012 +0000

    Add fixity declarations to Template Haskell (Trac #1541)

>---------------------------------------------------------------

 Language/Haskell/TH/Lib.hs    |    9 +++++++++
 Language/Haskell/TH/Ppr.hs    |    7 ++++---
 Language/Haskell/TH/Syntax.hs |    2 ++
 3 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/Language/Haskell/TH/Lib.hs b/Language/Haskell/TH/Lib.hs
index 92f3dd4..d98da91 100644
--- a/Language/Haskell/TH/Lib.hs
+++ b/Language/Haskell/TH/Lib.hs
@@ -354,6 +354,15 @@ forImpD cc s str n ty
  = do ty' <- ty
       return $ ForeignD (ImportF cc s str n ty')
 
+infixLD :: Int -> Name -> DecQ
+infixLD prec nm = return (InfixD (Fixity prec InfixL) nm)
+
+infixRD :: Int -> Name -> DecQ
+infixRD prec nm = return (InfixD (Fixity prec InfixR) nm)
+
+infixND :: Int -> Name -> DecQ
+infixND prec nm = return (InfixD (Fixity prec InfixN) nm)
+
 pragInlD :: Name -> InlineSpecQ -> DecQ
 pragInlD n ispec 
   = do
diff --git a/Language/Haskell/TH/Ppr.hs b/Language/Haskell/TH/Ppr.hs
index 53f43ff..5e8ad56 100644
--- a/Language/Haskell/TH/Ppr.hs
+++ b/Language/Haskell/TH/Ppr.hs
@@ -235,9 +235,10 @@ ppr_dec _  (ClassD ctxt c xs fds ds)
     $$ where_clause ds
 ppr_dec _ (InstanceD ctxt i ds) = text "instance" <+> pprCxt ctxt <+> ppr i
                                   $$ where_clause ds
-ppr_dec _ (SigD f t) = ppr f <+> text "::" <+> ppr t
-ppr_dec _ (ForeignD f) = ppr f
-ppr_dec _ (PragmaD p) = ppr p
+ppr_dec _ (SigD f t)    = ppr f <+> text "::" <+> ppr t
+ppr_dec _ (ForeignD f)  = ppr f
+ppr_dec _ (InfixD fx n) = pprFixity n fx
+ppr_dec _ (PragmaD p)   = ppr p
 ppr_dec isTop (FamilyD flav tc tvs k) 
   = ppr flav <+> maybeFamily <+> ppr tc <+> hsep (map ppr tvs) <+> maybeKind
   where
diff --git a/Language/Haskell/TH/Syntax.hs b/Language/Haskell/TH/Syntax.hs
index 9c464cf..61bbde8 100644
--- a/Language/Haskell/TH/Syntax.hs
+++ b/Language/Haskell/TH/Syntax.hs
@@ -916,6 +916,8 @@ data Dec
   | SigD Name Type                -- ^ @{ length :: [a] -> Int }@
   | ForeignD Foreign
 
+  | InfixD Fixity Name            -- ^ @{ infix 3 foo }@
+
   -- | pragmas
   | PragmaD Pragma                -- ^ @{ {-# INLINE [1] foo #-} }@
 



_______________________________________________
Cvs-libraries mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-libraries

Reply via email to