1
1
Expr.pprint(self): Doc
2
2
match self:
3
3
Expr.Var(VarExpr(id, tyArgs)) | Expr.Constr(ConstrExpr(id, tyArgs)):
4
- Doc.str(id.name).cat( _ppTyArgs(tyArgs) )
4
+ Doc.str(id.name) + _ppTyArgs(tyArgs)
5
5
6
6
Expr.ConstrSelect(ConstrSelectExpr(ty, constr, tyArgs)):
7
- Doc.str(ty.name).cat( Doc.char('.')).cat( Doc.str(constr.name)).cat( _ppTyArgs(tyArgs) )
7
+ Doc.str(ty.name) + Doc.char('.') + Doc.str(constr.name) + _ppTyArgs(tyArgs)
8
8
9
9
Expr.FieldSelect(FieldSelectExpr(object, field)):
10
10
let addParens = _needsParens(object.node)
11
11
let doc = object.node.pprint()
12
12
if addParens:
13
13
doc = parens(doc)
14
- doc.cat( Doc.char('.')).cat( Doc.str(field.name) )
14
+ doc + Doc.char('.') + Doc.str(field.name)
15
15
16
16
Expr.MethodSelect(MethodSelectExpr(object, method, ..)):
17
17
# TODO: Print all of the details.
18
18
let addParens = _needsParens(object.node)
19
19
let doc = object.node.pprint()
20
20
if addParens:
21
21
doc = parens(doc)
22
- doc.cat( Doc.char('.')).cat( Doc.str(method.name) )
22
+ doc + Doc.char('.') + Doc.str(method.name)
23
23
24
24
Expr.AssocFnSelect(AssocFnSelectExpr(ty, member, tyArgs)):
25
- Doc.str(ty.name).cat( Doc.char('.')).cat( Doc.str(member.name)).cat( _ppTyArgs(tyArgs) )
25
+ Doc.str(ty.name) + Doc.char('.') + Doc.str(member.name) + _ppTyArgs(tyArgs)
26
26
27
27
Expr.Call(CallExpr(fun, args)):
28
28
let addParens = _needsParens(fun.node)
29
29
let doc = fun.node.pprint()
30
30
if addParens:
31
31
doc = parens(doc)
32
- doc.cat( parens(interleave(args.iter().map(CallArg.pprint), Doc.str(", ") )))
32
+ doc + parens(interleave(args.iter().map(CallArg.pprint), Doc.str(", ")))
33
33
34
34
Expr.Int(IntExpr(text, ..)):
35
35
# TODO: Print all of the details
@@ -41,14 +41,14 @@ Expr.pprint(self): Doc
41
41
match part:
42
42
StrPart.Str(str):
43
43
# TODO: Escapes
44
- doc = doc.cat( Doc.str(str) )
44
+ doc += Doc.str(str)
45
45
StrPart.Expr(expr):
46
- doc = doc.cat( Doc.char('`')).cat( expr.node.pprint()).cat( Doc.char('`') )
46
+ doc += Doc.char('`') + expr.node.pprint() + Doc.char('`')
47
47
doc
48
48
49
49
Expr.Char(char):
50
50
# TODO: Escapes
51
- Doc.char('\'').cat( Doc.char(char)).cat( Doc.char('\'') )
51
+ Doc.char('\'') + Doc.char(char) + Doc.char('\'')
52
52
53
53
Expr.Self:
54
54
Doc.str("self")
@@ -57,40 +57,40 @@ Expr.pprint(self): Doc
57
57
# TODO: Precedence and parens
58
58
# TODO: Operator string
59
59
parens(left.node.pprint()) \
60
- .cat( Doc.blank(1) ) \
61
- .cat( Doc.str(op.toStr() )) \
62
- .cat( Doc.blank(1) ) \
63
- .cat( parens(right.node.pprint() ))
60
+ + Doc.blank(1) \
61
+ + Doc.str(op.toStr()) \
62
+ + Doc.blank(1) \
63
+ + parens(right.node.pprint())
64
64
65
65
Expr.UnOp(UnOpExpr(op, expr)):
66
66
let opChar = match op:
67
67
UnOp.Not: '!'
68
68
UnOp.Neg: '-'
69
- Doc.char(opChar).cat( expr.node.pprint() )
69
+ Doc.char(opChar) + expr.node.pprint()
70
70
71
71
Expr.Record(fields):
72
72
_ppParenNamedFields(fields)
73
73
74
74
Expr.Variant(VariantExpr(id, args)):
75
- brackets(Doc.str(id.name).cat( _ppParenNamedFields(args) ))
75
+ brackets(Doc.str(id.name) + _ppParenNamedFields(args))
76
76
77
77
Expr.Return(expr):
78
- Doc.str("return ").cat( expr.node.pprint() )
78
+ Doc.str("return ") + expr.node.pprint()
79
79
80
80
Expr.Match(MatchExpr(scrutinee, alts)):
81
- Doc.str("match ").cat( scrutinee.node.pprint()).cat( Doc.char(':')).cat( Doc.hardLine() ) \
82
- .cat( interleave(alts.iter().map(_ppAlt), Doc.hardLine() )) \
83
- .cat( Doc.hardLine() )
81
+ Doc.str("match ") + scrutinee.node.pprint() + Doc.char(':') + Doc.hardLine() \
82
+ + interleave(alts.iter().map(_ppAlt), Doc.hardLine()) \
83
+ + Doc.hardLine()
84
84
85
85
Expr.If(IfExpr(branches, else _branch)):
86
86
let doc = _ppIfBranch("if", branches.get(0).guard, branches.get(0).body)
87
87
for branch: (guard: L[Expr], body: Vec[L[Stmt]]) in branches.iter().skip (1):
88
- doc = doc.cat( _ppIfBranch("elif", branch.guard, branch.body) )
88
+ doc += _ppIfBranch("elif", branch.guard, branch.body)
89
89
match else _branch:
90
90
Option.None: ()
91
91
Option.Some(stmts):
92
92
for stmt: L[Stmt] in stmts.iter():
93
- doc = doc.cat( stmt.node.pprint()).cat( Doc.hardLine() )
93
+ doc += stmt.node.pprint() + Doc.hardLine()
94
94
doc
95
95
96
96
Expr.Fn_(FnExpr(sig, body, ..)):
@@ -99,7 +99,7 @@ Expr.pprint(self): Doc
99
99
Type.pprint(self): Doc
100
100
match self:
101
101
Type.Named(NamedType(name, args)):
102
- Doc.str(name.name).cat( _ppTyArgs(args) )
102
+ Doc.str(name.name) + _ppTyArgs(args)
103
103
104
104
Type.Var(var_):
105
105
Doc.str(var_.name)
@@ -112,7 +112,7 @@ Type.pprint(self): Doc
112
112
if fields.len() == 0:
113
113
doc = Doc.str("..")
114
114
else :
115
- doc = doc.cat( Doc.str(", ..") )
115
+ doc += Doc.str(", ..")
116
116
parens(doc)
117
117
118
118
Type.Variant(alts, extension): panic("")
@@ -145,23 +145,23 @@ _ppNamedList(namedList: Vec[Named[L[a]]], ppItem: Fn(a): exn Doc): exn Doc
145
145
_ppNamed(named: Named[L[a]], ppItem: Fn(a): exn Doc): exn Doc
146
146
let doc = match named.name:
147
147
Option.Some(name):
148
- Doc.str(name.name).cat( Doc.str(" = ") )
148
+ Doc.str(name.name) + Doc.str(" = ")
149
149
Option.None:
150
150
Doc.empty()
151
- doc.cat( ppItem(named.node.node) )
151
+ doc + ppItem(named.node.node)
152
152
153
153
_ppAlt(alt: Alt): Doc
154
154
panic("TODO")
155
155
156
156
_ppIfBranch(prefix: Str, guard: L[Expr], body: Vec[L[Stmt]]): Doc
157
157
let doc = Doc.str(prefix) \
158
- .cat( Doc.break_(1) ) \
159
- .cat( guard.node.pprint() ) \
160
- .cat( Doc.char(':') ) \
161
- .cat( Doc.hardLine() )
158
+ + Doc.break_(1) \
159
+ + guard.node.pprint() \
160
+ + Doc.char(':') \
161
+ + Doc.hardLine()
162
162
163
163
for stmt: L[Stmt] in body.iter():
164
- doc = doc.cat( stmt.node.pprint()).cat( Doc.hardLine() )
164
+ doc += stmt.node.pprint() + Doc.hardLine()
165
165
166
166
doc
167
167
@@ -181,12 +181,12 @@ interleave[Iterator[iter, Doc, exn]](iter: iter, sep: Doc): exn Doc
181
181
Option.Some(doc): doc
182
182
183
183
for item: Doc in iter:
184
- doc = doc.cat( sep).cat( item)
184
+ doc += sep + item
185
185
186
186
doc
187
187
188
188
parens(doc: Doc): Doc
189
- Doc.char('(').cat( doc).cat( Doc.char(')') )
189
+ Doc.char('(') + doc + Doc.char(')')
190
190
191
191
brackets(doc: Doc): Doc
192
- Doc.char('[').cat( doc).cat( Doc.char(']') )
192
+ Doc.char('[') + doc + Doc.char(']')
0 commit comments