Fix Core pretty printer
authorSimon Peyton Jones <simonpj@microsoft.com>
Fri, 17 Feb 2017 14:56:13 +0000 (14:56 +0000)
committerBen Gamari <ben@smart-cactus.org>
Mon, 20 Feb 2017 18:33:12 +0000 (13:33 -0500)
If a JoinId (bogusly) ends up in an argument position we printed
    f jump j
rather than
    f (jump j)

Easy to fix.

compiler/coreSyn/PprCore.hs

index 994c237..30de5d2 100644 (file)
@@ -148,8 +148,9 @@ ppr_expr :: OutputableBndr b => (SDoc -> SDoc) -> Expr b -> SDoc
         -- The function adds parens in context that need
         -- an atomic value (e.g. function args)
 
         -- The function adds parens in context that need
         -- an atomic value (e.g. function args)
 
-ppr_expr _       (Var name)    = ppWhen (isJoinId name) (text "jump") <+>
-                                   ppr name
+ppr_expr add_par (Var name)
+ | isJoinId name               = add_par ((text "jump") <+> ppr name)
+ | otherwise                   = ppr name
 ppr_expr add_par (Type ty)     = add_par (text "TYPE:" <+> ppr ty)       -- Weird
 ppr_expr add_par (Coercion co) = add_par (text "CO:" <+> ppr co)
 ppr_expr add_par (Lit lit)     = pprLiteral add_par lit
 ppr_expr add_par (Type ty)     = add_par (text "TYPE:" <+> ppr ty)       -- Weird
 ppr_expr add_par (Coercion co) = add_par (text "CO:" <+> ppr co)
 ppr_expr add_par (Lit lit)     = pprLiteral add_par lit