@@ -18,12 +18,15 @@ type fold_mod<T> = fn~(fold: fold<T>, doc: doc::moddoc) -> doc::moddoc;
18
18
type fold_fn < T > = fn ~( fold : fold < T > , doc : doc:: fndoc ) -> doc:: fndoc ;
19
19
type fold_const < T > = fn ~( fold : fold < T > , doc : doc:: constdoc ) -> doc:: constdoc ;
20
20
type fold_enum < T > = fn ~( fold : fold < T > , doc : doc:: enumdoc ) -> doc:: enumdoc ;
21
+ type fold_res < T > = fn ~( fold : fold < T > , doc : doc:: resdoc ) -> doc:: resdoc ;
21
22
type fold_modlist < T > = fn ~( fold : fold < T > , list : doc:: modlist ) -> doc:: modlist ;
22
23
type fold_fnlist < T > = fn ~( fold : fold < T > , list : doc:: fnlist ) -> doc:: fnlist ;
23
24
type fold_constlist < T > = fn ~(
24
25
fold : fold < T > , list : doc:: constlist ) -> doc:: constlist ;
25
26
type fold_enumlist < T > = fn ~(
26
27
fold : fold < T > , list : doc:: enumlist ) -> doc:: enumlist ;
28
+ type fold_reslist < T > = fn ~(
29
+ fold : fold < T > , list : doc:: reslist ) -> doc:: reslist ;
27
30
28
31
type t < T > = {
29
32
ctxt : T ,
@@ -32,10 +35,12 @@ type t<T> = {
32
35
fold_fn : fold_fn < T > ,
33
36
fold_const : fold_const < T > ,
34
37
fold_enum : fold_enum < T > ,
38
+ fold_res : fold_res < T > ,
35
39
fold_modlist : fold_modlist < T > ,
36
40
fold_fnlist : fold_fnlist < T > ,
37
41
fold_constlist : fold_constlist < T > ,
38
- fold_enumlist : fold_enumlist < T >
42
+ fold_enumlist : fold_enumlist < T > ,
43
+ fold_reslist : fold_reslist < T >
39
44
} ;
40
45
41
46
@@ -48,10 +53,12 @@ fn mk_fold<T:copy>(
48
53
fold_fn : fold_fn < T > ,
49
54
fold_const : fold_const < T > ,
50
55
fold_enum : fold_enum < T > ,
56
+ fold_res : fold_res < T > ,
51
57
fold_modlist : fold_modlist < T > ,
52
58
fold_fnlist : fold_fnlist < T > ,
53
59
fold_constlist : fold_constlist < T > ,
54
- fold_enumlist : fold_enumlist < T >
60
+ fold_enumlist : fold_enumlist < T > ,
61
+ fold_reslist : fold_reslist < T >
55
62
) -> fold < T > {
56
63
fold ( {
57
64
ctxt: ctxt,
@@ -60,10 +67,12 @@ fn mk_fold<T:copy>(
60
67
fold_fn: fold_fn,
61
68
fold_const: fold_const,
62
69
fold_enum: fold_enum,
70
+ fold_res: fold_res,
63
71
fold_modlist: fold_modlist,
64
72
fold_fnlist: fold_fnlist,
65
73
fold_constlist: fold_constlist,
66
- fold_enumlist: fold_enumlist
74
+ fold_enumlist: fold_enumlist,
75
+ fold_reslist: fold_reslist
67
76
} )
68
77
}
69
78
@@ -75,10 +84,12 @@ fn default_seq_fold<T:copy>(ctxt: T) -> fold<T> {
75
84
{ |f, d| default_seq_fold_fn ( f, d) } ,
76
85
{ |f, d| default_seq_fold_const ( f, d) } ,
77
86
{ |f, d| default_seq_fold_enum ( f, d) } ,
87
+ { |f, d| default_seq_fold_res ( f, d) } ,
78
88
{ |f, d| default_seq_fold_modlist ( f, d) } ,
79
89
{ |f, d| default_seq_fold_fnlist ( f, d) } ,
80
90
{ |f, d| default_seq_fold_constlist ( f, d) } ,
81
- { |f, d| default_seq_fold_enumlist ( f, d) }
91
+ { |f, d| default_seq_fold_enumlist ( f, d) } ,
92
+ { |f, d| default_seq_fold_reslist ( f, d) }
82
93
)
83
94
}
84
95
@@ -125,6 +136,13 @@ fn default_seq_fold_enum<T>(
125
136
doc
126
137
}
127
138
139
+ fn default_seq_fold_res < T > (
140
+ _fold : fold < T > ,
141
+ doc : doc:: resdoc
142
+ ) -> doc:: resdoc {
143
+ doc
144
+ }
145
+
128
146
fn default_seq_fold_modlist < T > (
129
147
fold : fold < T > ,
130
148
list : doc:: modlist
@@ -161,6 +179,15 @@ fn default_seq_fold_enumlist<T>(
161
179
} )
162
180
}
163
181
182
+ fn default_seq_fold_reslist < T > (
183
+ fold : fold < T > ,
184
+ list : doc:: reslist
185
+ ) -> doc:: reslist {
186
+ doc:: reslist ( vec:: map ( * list) { |doc|
187
+ fold. fold_res ( fold, doc)
188
+ } )
189
+ }
190
+
164
191
#[ test]
165
192
fn default_fold_should_produce_same_doc ( ) {
166
193
let source = "mod a { fn b() { } mod c { fn d() { } } }" ;
0 commit comments