Ticket #842 (closed bug: fixed)
pretty-printing bug in Template Haskell library
Description
It can quickly be seen in ghci but occurs in any compiler using the libraries:
ghci -fth :module Language.Haskell.TH runQ [d| foo (Just _) = True|] >>= putStrLn . pprint foo Data.Maybe.Just _ = GHC.Base.True
Note: the Just term is no longer parenthesized.
Problem is in Language.Haskell.TH.Ppr where
instance Ppr Clause where
ppr (Clause ps rhs ds) = hsep (map ppr ps) <+> pprBody True rhs
$$ where_clause ds
should read:
instance Ppr Clause where
ppr (Clause ps rhs ds) = hsep (map (pprPat appPrec) ps) <+> pprBody True rhs
$$ where_clause ds
because the Clause follows a function name and so is always inside a surrounding function application.
(It also wouldn't hurt to change
instance Ppr Con where
ppr (NormalC c sts) = ppr c <+> hsep (map pprStrictType sts)
ppr (RecC c vsts)
= ppr c <+> braces (hsep (punctuate comma $ map pprVarStrictType vsts))
to
instance Ppr Con where
ppr (NormalC c sts) = ppr c <+> hsep (map pprStrictType sts)
ppr (RecC c vsts)
= ppr c <+> braces (vcat (punctuate comma $ map pprVarStrictType vsts))
just for esthetics. Record fields run off the page very quickly.)
Change History
Note: See
TracTickets for help on using
tickets.
