on master help sign in
reprime when printing expressions and patterns
0e62924Evan Czaplicki
compiler/SourceSyntax/Expression.hs+6−6
@@ -75,24 +75,24 @@ instance Pretty (Expr t v) where
75 Data "::" [hd,tl] -> pretty hd <+> P.text "::" <+> pretty tl
75 Data "::" [hd,tl] -> pretty hd <+> P.text "::" <+> pretty tl
76 Data "[]" [] -> P.text "[]"
76 Data "[]" [] -> P.text "[]"
77 Data name es -> P.hang (P.text name) 2 (P.sep (map prettyParens es))
77 Data name es -> P.hang (P.text name) 2 (P.sep (map prettyParens es))
78− Access e x -> prettyParens e <> P.text "." <> P.text x
78+ Access e x -> prettyParens e <> P.text "." <> variable x
79− Remove e x -> P.braces (pretty e <+> P.text "-" <+> P.text x)
79+ Remove e x -> P.braces (pretty e <+> P.text "-" <+> variable x)
80 Insert (Location.L _ (Remove e y)) x v ->
80 Insert (Location.L _ (Remove e y)) x v ->
81− P.braces (pretty e <+> P.text "-" <+> P.text y <+> P.text "|" <+> P.text x <+> P.text "=" <+> pretty v)
81+ P.braces (pretty e <+> P.text "-" <+> variable y <+> P.text "|" <+> variable x <+> P.text "=" <+> pretty v)
82 Insert e x v ->
82 Insert e x v ->
83− P.braces (pretty e <+> P.text "|" <+> P.text x <+> P.text "=" <+> pretty v)
83+ P.braces (pretty e <+> P.text "|" <+> variable x <+> P.text "=" <+> pretty v)
84
84
85 Modify e fs ->
85 Modify e fs ->
86 P.braces $ P.hang (pretty e <+> P.text "|")
86 P.braces $ P.hang (pretty e <+> P.text "|")
87 4
87 4
88 (commaSep $ map field fs)
88 (commaSep $ map field fs)
89 where
89 where
90− field (x,e) = P.text x <+> P.text "<-" <+> pretty e
90+ field (x,e) = variable x <+> P.text "<-" <+> pretty e
91
91
92 Record fs ->
92 Record fs ->
93 P.braces $ P.nest 2 (commaSep $ map field fs)
93 P.braces $ P.nest 2 (commaSep $ map field fs)
94 where
94 where
95− field (x,e) = P.text x <+> P.text "=" <+> pretty e
95+ field (x,e) = variable x <+> P.text "=" <+> pretty e
96
96
97 Markdown _ -> P.text "[markdown| ... |]"
97 Markdown _ -> P.text "[markdown| ... |]"
98
98
compiler/SourceSyntax/Pattern.hs+2−2
@@ -27,8 +27,8 @@ instance Pretty Pattern where
27 case pattern of
27 case pattern of
28 PVar x -> variable x
28 PVar x -> variable x
29 PLiteral lit -> pretty lit
29 PLiteral lit -> pretty lit
30− PRecord fs -> PP.braces (commaCat $ map PP.text fs)
30+ PRecord fs -> PP.braces (commaCat $ map variable fs)
31− PAlias x p -> prettyParens p <+> PP.text "as" <+> PP.text x
31+ PAlias x p -> prettyParens p <+> PP.text "as" <+> variable x
32 PAnything -> PP.text "_"
32 PAnything -> PP.text "_"
33 PData "::" [hd,tl] -> parensIf isCons (pretty hd) <+> PP.text "::" <+> pretty tl
33 PData "::" [hd,tl] -> parensIf isCons (pretty hd) <+> PP.text "::" <+> pretty tl
34 where isCons = case hd of
34 where isCons = case hd of
compiler/SourceSyntax/PrettyPrint.hs+6−1
@@ -15,4 +15,9 @@ commaSep docs = sep (punctuate comma docs)
15
15
16parensIf bool doc = if bool then parens doc else doc
16parensIf bool doc = if bool then parens doc else doc
17
17
18−variable x = parensIf (Help.isOp x) (text x)
18+variable x =
19+ if Help.isOp x then parens (text x)
20+ else text (reprime x)
21+
22+reprime :: String -> String
23+reprime = map (\c -> if c == '$' then '\'' else c)