diff options
Diffstat (limited to 'compiler/hsSyn/HsDecls.hs')
-rw-r--r-- | compiler/hsSyn/HsDecls.hs | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/compiler/hsSyn/HsDecls.hs b/compiler/hsSyn/HsDecls.hs index 2d2e911645..55f3b73686 100644 --- a/compiler/hsSyn/HsDecls.hs +++ b/compiler/hsSyn/HsDecls.hs @@ -1764,13 +1764,15 @@ pprFamInstLHS thing typats fixity context mb_kind_sig -- explicit type patterns = hsep [ pprHsContext context, pp_pats typats, pp_kind_sig ] where - pp_pats (patl:patsr) - | fixity == Infix - = hsep [pprHsType (unLoc patl), pprInfixOcc (unLoc thing) - , hsep (map (pprHsType.unLoc) patsr)] - | otherwise = hsep [ pprPrefixOcc (unLoc thing) - , hsep (map (pprHsType.unLoc) (patl:patsr))] - pp_pats [] = pprPrefixOcc (unLoc thing) + pp_pats (patl:patr:pats) + | Infix <- fixity + = let pp_op_app = hsep [ ppr patl, pprInfixOcc (unLoc thing), ppr patr ] in + case pats of + [] -> pp_op_app + _ -> hsep (parens pp_op_app : map ppr pats) + + pp_pats pats = hsep [ pprPrefixOcc (unLoc thing) + , hsep (map ppr pats)] pp_kind_sig | Just k <- mb_kind_sig |