summaryrefslogtreecommitdiff
path: root/compiler/hsSyn/HsDecls.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/hsSyn/HsDecls.hs')
-rw-r--r--compiler/hsSyn/HsDecls.hs16
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