@@ -10,6 +10,7 @@ export default_seq_fold_fn;
10
10
export default_seq_fold_const;
11
11
export default_seq_fold_enum;
12
12
export default_seq_fold_res;
13
+ export default_seq_fold_iface;
13
14
14
15
enum fold< T > = t< T > ;
15
16
@@ -19,6 +20,7 @@ type fold_fn<T> = fn~(fold: fold<T>, doc: doc::fndoc) -> doc::fndoc;
19
20
type fold_const < T > = fn ~( fold : fold < T > , doc : doc:: constdoc ) -> doc:: constdoc ;
20
21
type fold_enum < T > = fn ~( fold : fold < T > , doc : doc:: enumdoc ) -> doc:: enumdoc ;
21
22
type fold_res < T > = fn ~( fold : fold < T > , doc : doc:: resdoc ) -> doc:: resdoc ;
23
+ type fold_iface < T > = fn ~( fold : fold < T > , doc : doc:: ifacedoc ) -> doc:: ifacedoc ;
22
24
23
25
type t < T > = {
24
26
ctxt : T ,
@@ -27,7 +29,8 @@ type t<T> = {
27
29
fold_fn : fold_fn < T > ,
28
30
fold_const : fold_const < T > ,
29
31
fold_enum : fold_enum < T > ,
30
- fold_res : fold_res < T >
32
+ fold_res : fold_res < T > ,
33
+ fold_iface : fold_iface < T >
31
34
} ;
32
35
33
36
@@ -40,7 +43,8 @@ fn mk_fold<T:copy>(
40
43
fold_fn : fold_fn < T > ,
41
44
fold_const : fold_const < T > ,
42
45
fold_enum : fold_enum < T > ,
43
- fold_res : fold_res < T >
46
+ fold_res : fold_res < T > ,
47
+ fold_iface : fold_iface < T >
44
48
) -> fold < T > {
45
49
fold ( {
46
50
ctxt: ctxt,
@@ -49,7 +53,8 @@ fn mk_fold<T:copy>(
49
53
fold_fn: fold_fn,
50
54
fold_const: fold_const,
51
55
fold_enum: fold_enum,
52
- fold_res: fold_res
56
+ fold_res: fold_res,
57
+ fold_iface: fold_iface
53
58
} )
54
59
}
55
60
@@ -61,7 +66,8 @@ fn default_seq_fold<T:copy>(ctxt: T) -> fold<T> {
61
66
{ |f, d| default_seq_fold_fn ( f, d) } ,
62
67
{ |f, d| default_seq_fold_const ( f, d) } ,
63
68
{ |f, d| default_seq_fold_enum ( f, d) } ,
64
- { |f, d| default_seq_fold_res ( f, d) }
69
+ { |f, d| default_seq_fold_res ( f, d) } ,
70
+ { |f, d| default_seq_fold_iface ( f, d) }
65
71
)
66
72
}
67
73
@@ -96,6 +102,9 @@ fn default_seq_fold_mod<T>(
96
102
doc:: restag ( resdoc) {
97
103
doc:: restag ( fold. fold_res ( fold, resdoc) )
98
104
}
105
+ doc:: ifacetag ( ifacedoc) {
106
+ doc:: ifacetag ( fold. fold_iface ( fold, ifacedoc) )
107
+ }
99
108
}
100
109
}
101
110
with doc
@@ -130,6 +139,13 @@ fn default_seq_fold_res<T>(
130
139
doc
131
140
}
132
141
142
+ fn default_seq_fold_iface < T > (
143
+ _fold : fold < T > ,
144
+ doc : doc:: ifacedoc
145
+ ) -> doc:: ifacedoc {
146
+ doc
147
+ }
148
+
133
149
#[ test]
134
150
fn default_fold_should_produce_same_doc ( ) {
135
151
let source = "mod a { fn b() { } mod c { fn d() { } } }" ;
0 commit comments