@@ -22,7 +22,7 @@ let space = Pretty.line(" ");
22
22
let dedent = Pretty . back(2 , "" );
23
23
24
24
let str = (~len=?, s) => Pretty . text(~len? , s);
25
- let (@! ) = Pretty . append;
25
+ let (+++ ) = Pretty . append;
26
26
27
27
let sepdList = (sep, items, printItem) => {
28
28
let rec recur = items =>
@@ -31,49 +31,49 @@ let sepdList = (sep, items, printItem) => {
31
31
| [ one ] => printItem(one)
32
32
| [ one , ... more ] =>
33
33
let l = printItem(one);
34
- l @! sep @! recur(more);
34
+ l +++ sep +++ recur(more);
35
35
};
36
36
recur(items);
37
37
};
38
38
39
39
let commadList = (printItem, items) => {
40
- sepdList(str("," ) @! space, items, printItem);
40
+ sepdList(str("," ) +++ space, items, printItem);
41
41
};
42
42
43
43
let indentGroup = doc => Pretty . indent(2 , Pretty . group(doc));
44
44
45
45
let tupleList = (items, printItem) => {
46
46
str("(" )
47
- @! indentGroup(break @! commadList(printItem, items) @! dedent)
48
- @! str(")" );
47
+ +++ indentGroup(break +++ commadList(printItem, items) +++ dedent)
48
+ +++ str(")" );
49
49
};
50
50
51
51
let typeConstr = (items, printItem) =>
52
52
if (rescript^ ) {
53
53
str("<" )
54
- @! indentGroup(break @! commadList(printItem, items) @! dedent)
55
- @! str(">" );
54
+ +++ indentGroup(break +++ commadList(printItem, items) +++ dedent)
55
+ +++ str(">" );
56
56
} else {
57
57
tupleList(items, printItem);
58
58
};
59
59
60
60
let showArgs = (loop, args) => {
61
61
str("(" )
62
- @! indentGroup(
63
- break
64
- @! commadList(
65
- ((label, typ)) => {
66
- switch (label) {
67
- | Asttypes . Nolabel => loop(typ)
68
- | Labelled (label )
69
- | Optional (label ) => str("~" ++ label ++ ": " ) @! loop(typ)
70
- }
71
- },
72
- args,
73
- )
74
- @! dedent,
75
- )
76
- @! str(")" );
62
+ +++ indentGroup(
63
+ break
64
+ +++ commadList(
65
+ ((label, typ)) => {
66
+ switch (label) {
67
+ | Asttypes . Nolabel => loop(typ)
68
+ | Labelled (label )
69
+ | Optional (label ) => str("~" ++ label ++ ": " ) +++ loop(typ)
70
+ }
71
+ },
72
+ args,
73
+ )
74
+ +++ dedent,
75
+ )
76
+ +++ str(")" );
77
77
};
78
78
79
79
type namer = {
@@ -131,12 +131,12 @@ let rec print_expr = (~depth=0, typ) => {
131
131
| _ => showArgs(innerExpr, args)
132
132
}
133
133
)
134
- @! str(" => " )
135
- @! innerExpr(result);
134
+ +++ str(" => " )
135
+ +++ innerExpr(result);
136
136
| Ttuple (items ) => tupleList(items, innerExpr)
137
137
| Tconstr (path , args , _ ) =>
138
138
print_path(path)
139
- @! (
139
+ +++ (
140
140
switch (args) {
141
141
| [] => Pretty . empty
142
142
| args => typeConstr(args, innerExpr)
@@ -147,27 +147,27 @@ let rec print_expr = (~depth=0, typ) => {
147
147
| Tnil => str("(no type)" )
148
148
| Tvariant ({row_fields}) =>
149
149
str("[" )
150
- @! indentGroup(
151
- break
152
- @! (List . length(row_fields) <= 1 ? str("| " ) : str(" " ))
153
- @! sepdList(
154
- space @! str("| " ), row_fields, ((label, row_field)) =>
155
- switch (row_field) {
156
- | Rpresent (None )
157
- | Reither (_ , [] , _ , _ ) => str("#" ++ label)
158
- | Rpresent (Some (t ))
159
- | Reither (_ , [ t ] , _ , _ ) =>
160
- str("#" ++ label)
161
- @! str("(" )
162
- @! innerExpr(t)
163
- @! str(")" )
164
- | Reither (_ )
165
- | Rabsent => str("..." )
166
- }
167
- ),
168
- )
169
- @! str("]" )
170
- @! break
150
+ +++ indentGroup(
151
+ break
152
+ +++ (List . length(row_fields) <= 1 ? str("| " ) : str(" " ))
153
+ +++ sepdList(
154
+ space +++ str("| " ), row_fields, ((label, row_field)) =>
155
+ switch (row_field) {
156
+ | Rpresent (None )
157
+ | Reither (_ , [] , _ , _ ) => str("#" ++ label)
158
+ | Rpresent (Some (t ))
159
+ | Reither (_ , [ t ] , _ , _ ) =>
160
+ str("#" ++ label)
161
+ +++ str("(" )
162
+ +++ innerExpr(t)
163
+ +++ str(")" )
164
+ | Reither (_ )
165
+ | Rabsent => str("..." )
166
+ }
167
+ ),
168
+ )
169
+ +++ str("]" )
170
+ +++ break
171
171
| Tfield (_ , _ , _ , _ )
172
172
| Tunivar (_ )
173
173
| Tpoly (_ , _ )
@@ -188,76 +188,79 @@ let rec print_expr = (~depth=0, typ) => {
188
188
and print_path = path =>
189
189
switch (path) {
190
190
| Path . Pident (id ) => ident(id)
191
- | Pdot (path , name , _ ) => print_path(path) @! str("." ++ name)
191
+ | Pdot (path , name , _ ) => print_path(path) +++ str("." ++ name)
192
192
| Papply (_ , _ ) => str("<apply>" )
193
193
};
194
194
195
+ let print_attr = ({Types . ld_id, ld_mutable, ld_type}) => {
196
+ (
197
+ switch (ld_mutable) {
198
+ | Asttypes . Immutable => Pretty . empty
199
+ | Mutable => str("mutable " )
200
+ }
201
+ )
202
+ +++ ident(ld_id)
203
+ +++ str(": " )
204
+ +++ print_expr(ld_type);
205
+ };
206
+
195
207
let print_constructor = (loop, {Types . cd_id, cd_args, cd_res}) => {
196
208
let name = Ident . name(cd_id);
197
209
str(name)
198
- @! (
210
+ +++ (
199
211
switch (cd_args) {
200
212
| Cstr_tuple ([] ) => Pretty . empty
201
- | Cstr_record (_ ) => str("{...printing not supported...}" )
213
+ | Cstr_record (labels ) =>
214
+ str("({" )
215
+ +++ indentGroup(break +++ commadList(print_attr, labels) +++ dedent)
216
+ +++ str("})" )
202
217
| Cstr_tuple (args ) => tupleList(args, loop)
203
218
}
204
219
)
205
- @! (
220
+ +++ (
206
221
switch (cd_res) {
207
222
| None => Pretty . empty
208
- | Some (typ ) => str(": " ) @! loop(typ)
223
+ | Some (typ ) => str(": " ) +++ loop(typ)
209
224
}
210
225
);
211
226
};
212
227
213
- let print_attr = ({Types . ld_id, ld_mutable, ld_type}) => {
214
- (
215
- switch (ld_mutable) {
216
- | Asttypes . Immutable => Pretty . empty
217
- | Mutable => str("mut " )
218
- }
219
- )
220
- @! ident(ld_id)
221
- @! str(": " )
222
- @! print_expr(ld_type);
223
- };
224
-
225
228
let print_decl = (realName, name, decl) => {
226
229
Types . (
227
230
str("type " )
228
- @! str(~len= String . length(realName), name)
229
- @! (
231
+ +++ str(~len= String . length(realName), name)
232
+ +++ (
230
233
switch (decl. type_params) {
231
234
| [] => Pretty . empty
232
235
| args => typeConstr(args, print_expr)
233
236
}
234
237
)
235
- @! (
238
+ +++ (
236
239
switch (decl. type_kind) {
237
240
| Type_abstract => Pretty . empty
238
241
| Type_open => str(" = .." )
239
242
| Type_record (labels , _representation ) =>
240
243
str(" = {" )
241
- @! indentGroup(break @! commadList(print_attr, labels) @! dedent)
242
- @! str("}" )
244
+ +++ indentGroup(break +++ commadList(print_attr, labels) +++ dedent)
245
+ +++ str("}" )
243
246
| Type_variant (constructors ) =>
244
247
str(" = " )
245
- @! indentGroup(
246
- break
247
- @! str("| " )
248
- @! sepdList(
249
- space @! str("| " ),
250
- constructors,
251
- print_constructor(print_expr),
252
- ),
253
- )
254
- @! break
248
+ +++ indentGroup(
249
+ break
250
+ +++ str("| " )
251
+ +++ sepdList(
252
+ space +++ str("| " ),
253
+ constructors,
254
+ print_constructor(print_expr),
255
+ ),
256
+ )
257
+ +++ break
255
258
}
256
259
)
257
- @! (
260
+ +++ (
258
261
switch (decl. type_manifest) {
259
262
| None => Pretty . empty
260
- | Some (manifest ) => str(" = " ) @! print_expr(manifest)
263
+ | Some (manifest ) => str(" = " ) +++ print_expr(manifest)
261
264
}
262
265
)
263
266
);
0 commit comments