Add fixity declarations to Template Haskell (Trac #1541)
authorSimon Peyton Jones <simonpj@microsoft.com>
Wed, 14 Mar 2012 17:36:33 +0000 (17:36 +0000)
committerSimon Peyton Jones <simonpj@microsoft.com>
Wed, 14 Mar 2012 17:40:36 +0000 (17:40 +0000)
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 92f3dd4..d98da91 100644 (file)
@@ -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
index 53f43ff..5e8ad56 100644 (file)
@@ -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
index 9c464cf..61bbde8 100644 (file)
@@ -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 #-} }@