+ = char '$' <> ifPprDebug (brackets (ppr n)) <> eDoc
+ where
+ -- We use pprLExpr to match pprParendExpr:
+ -- Using pprLExpr makes sure that we go 'deeper'
+ -- I think that is usually (always?) right
+ pp_as_was = pprLExpr e
+ eDoc = case unLoc e of
+ HsPar _ -> pp_as_was
+ HsVar _ -> pp_as_was
+ _ -> parens pp_as_was