Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
obsidiansystems
GHC
Commits
ca002f96
Commit
ca002f96
authored
Aug 09, 2007
by
simonpj@microsoft.com
Browse files
Print fewer parens when pretty-printing HsSyn
parent
e2cd7b27
Changes
1
Hide whitespace changes
Inline
Side-by-side
compiler/hsSyn/HsExpr.lhs
View file @
ca002f96
...
...
@@ -326,8 +326,8 @@ ppr_expr (OpApp e1 op fixity e2)
HsVar v -> pp_infixly v
_ -> pp_prefixly
where
pp_e1 = pprParendExpr e1
-- Add parens to make
pre
cedence clear
pp_e2 = pprParendExpr e2
pp_e1 = ppr
Debug
ParendExpr e1
-- In debug mode, add
p
a
re
ns
pp_e2 = ppr
Debug
ParendExpr e2
-- to make precedence clear
pp_prefixly
= hang (ppr op) 2 (sep [pp_e1, pp_e2])
...
...
@@ -335,14 +335,14 @@ ppr_expr (OpApp e1 op fixity e2)
pp_infixly v
= sep [nest 2 pp_e1, pprInfix v, nest 2 pp_e2]
ppr_expr (NegApp e _) = char '-' <+> pprParendExpr e
ppr_expr (NegApp e _) = char '-' <+> ppr
Debug
ParendExpr e
ppr_expr (SectionL expr op)
= case unLoc op of
HsVar v -> pp_infixly v
_ -> pp_prefixly
where
pp_expr = pprParendExpr expr
pp_expr = ppr
Debug
ParendExpr expr
pp_prefixly = hang (hsep [text " \\ x_ ->", ppr op])
4 (hsep [pp_expr, ptext SLIT("x_ )")])
...
...
@@ -353,7 +353,7 @@ ppr_expr (SectionR op expr)
HsVar v -> pp_infixly v
_ -> pp_prefixly
where
pp_expr = pprParendExpr expr
pp_expr = ppr
Debug
ParendExpr expr
pp_prefixly = hang (hsep [text "( \\ x_ ->", ppr op, ptext SLIT("x_")])
4 ((<>) pp_expr rparen)
...
...
@@ -473,8 +473,23 @@ pa_brackets :: SDoc -> SDoc
pa_brackets p = ptext SLIT("[:") <> p <> ptext SLIT(":]")
\end{code}
Parenthesize unless very simple:
HsSyn records exactly where the user put parens, with HsPar.
So generally speaking we print without adding any parens.
However, some code is internally generated, and in some places
parens are absolutely required; so for these places we use
pprParendExpr (but don't print double parens of course).
For operator applications we don't add parens, because the oprerator
fixities should do the job, except in debug mode (-dppr-debug) so we
can see the structure of the parse tree.
\begin{code}
pprDebugParendExpr :: OutputableBndr id => LHsExpr id -> SDoc
pprDebugParendExpr expr
= getPprStyle (\sty ->
if debugStyle sty then pprParendExpr expr
else pprLExpr expr)
pprParendExpr :: OutputableBndr id => LHsExpr id -> SDoc
pprParendExpr expr
= let
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment