@@ -20,7 +20,8 @@ fn run(
20
20
fold_const: fold_const,
21
21
fold_fn: fold_fn,
22
22
fold_enum: fold_enum,
23
- fold_res: fold_res
23
+ fold_res: fold_res,
24
+ fold_iface: fold_iface
24
25
with * fold:: default_seq_fold ( op)
25
26
} ) ;
26
27
fold. fold_crate ( fold, doc)
@@ -99,6 +100,32 @@ fn fold_res(fold: fold::fold<op>, doc: doc::resdoc) -> doc::resdoc {
99
100
}
100
101
}
101
102
103
+ fn fold_iface ( fold : fold:: fold < op > , doc : doc:: ifacedoc ) -> doc:: ifacedoc {
104
+ {
105
+ brief: maybe_apply_op ( fold. ctxt , doc. brief ) ,
106
+ desc: maybe_apply_op ( fold. ctxt , doc. desc ) ,
107
+ methods: vec:: map ( doc. methods ) { |doc|
108
+ {
109
+ brief: maybe_apply_op ( fold. ctxt , doc. brief ) ,
110
+ desc: maybe_apply_op ( fold. ctxt , doc. desc ) ,
111
+ args: vec:: map ( doc. args ) { |doc|
112
+ {
113
+ desc: maybe_apply_op ( fold. ctxt , doc. desc )
114
+ with doc
115
+ }
116
+ } ,
117
+ return : {
118
+ desc: maybe_apply_op ( fold. ctxt , doc. return . desc )
119
+ with doc. return
120
+ } ,
121
+ failure: maybe_apply_op ( fold. ctxt , doc. failure )
122
+ with doc
123
+ }
124
+ }
125
+ with doc
126
+ }
127
+ }
128
+
102
129
#[ test]
103
130
fn should_execute_op_on_enum_brief ( ) {
104
131
let source = "#[doc(brief = \" a \" )] enum a { b }" ;
@@ -157,4 +184,74 @@ fn should_execute_op_on_resource_args() {
157
184
let doc = attr_pass:: mk_pass ( ) ( srv, doc) ;
158
185
let doc = mk_pass ( str:: trim) ( srv, doc) ;
159
186
assert doc. topmod . resources ( ) [ 0 ] . args [ 0 ] . desc == some ( "a" ) ;
160
- }
187
+ }
188
+
189
+ #[ test]
190
+ fn should_execute_op_on_iface_brief ( ) {
191
+ let source = "#[doc(brief = \" a \" )] iface i { fn a(); }" ;
192
+ let srv = astsrv:: mk_srv_from_str ( source) ;
193
+ let doc = extract:: from_srv ( srv, "" ) ;
194
+ let doc = attr_pass:: mk_pass ( ) ( srv, doc) ;
195
+ let doc = mk_pass ( str:: trim) ( srv, doc) ;
196
+ assert doc. topmod . ifaces ( ) [ 0 ] . brief == some ( "a" ) ;
197
+ }
198
+
199
+ #[ test]
200
+ fn should_execute_op_on_iface_desc ( ) {
201
+ let source = "#[doc(desc = \" a \" )] iface i { fn a(); }" ;
202
+ let srv = astsrv:: mk_srv_from_str ( source) ;
203
+ let doc = extract:: from_srv ( srv, "" ) ;
204
+ let doc = attr_pass:: mk_pass ( ) ( srv, doc) ;
205
+ let doc = mk_pass ( str:: trim) ( srv, doc) ;
206
+ assert doc. topmod . ifaces ( ) [ 0 ] . desc == some ( "a" ) ;
207
+ }
208
+
209
+ #[ test]
210
+ fn should_execute_op_on_iface_method_brief ( ) {
211
+ let source = "iface i { #[doc(brief = \" a \" )] fn a(); }" ;
212
+ let srv = astsrv:: mk_srv_from_str ( source) ;
213
+ let doc = extract:: from_srv ( srv, "" ) ;
214
+ let doc = attr_pass:: mk_pass ( ) ( srv, doc) ;
215
+ let doc = mk_pass ( str:: trim) ( srv, doc) ;
216
+ assert doc. topmod . ifaces ( ) [ 0 ] . methods [ 0 ] . brief == some ( "a" ) ;
217
+ }
218
+
219
+ #[ test]
220
+ fn should_execute_op_on_iface_method_desc ( ) {
221
+ let source = "iface i { #[doc(desc = \" a \" )] fn a(); }" ;
222
+ let srv = astsrv:: mk_srv_from_str ( source) ;
223
+ let doc = extract:: from_srv ( srv, "" ) ;
224
+ let doc = attr_pass:: mk_pass ( ) ( srv, doc) ;
225
+ let doc = mk_pass ( str:: trim) ( srv, doc) ;
226
+ assert doc. topmod . ifaces ( ) [ 0 ] . methods [ 0 ] . desc == some ( "a" ) ;
227
+ }
228
+
229
+ #[ test]
230
+ fn should_execute_op_on_iface_method_args ( ) {
231
+ let source = "iface i { #[doc(args(a = \" a \" ))] fn a(a: bool); }" ;
232
+ let srv = astsrv:: mk_srv_from_str ( source) ;
233
+ let doc = extract:: from_srv ( srv, "" ) ;
234
+ let doc = attr_pass:: mk_pass ( ) ( srv, doc) ;
235
+ let doc = mk_pass ( str:: trim) ( srv, doc) ;
236
+ assert doc. topmod . ifaces ( ) [ 0 ] . methods [ 0 ] . args [ 0 ] . desc == some ( "a" ) ;
237
+ }
238
+
239
+ #[ test]
240
+ fn should_execute_op_on_iface_method_return ( ) {
241
+ let source = "iface i { #[doc(return = \" a \" )] fn a() -> int; }" ;
242
+ let srv = astsrv:: mk_srv_from_str ( source) ;
243
+ let doc = extract:: from_srv ( srv, "" ) ;
244
+ let doc = attr_pass:: mk_pass ( ) ( srv, doc) ;
245
+ let doc = mk_pass ( str:: trim) ( srv, doc) ;
246
+ assert doc. topmod . ifaces ( ) [ 0 ] . methods [ 0 ] . return . desc == some ( "a" ) ;
247
+ }
248
+
249
+ #[ test]
250
+ fn should_execute_op_on_iface_method_failure_condition ( ) {
251
+ let source = "iface i { #[doc(failure = \" a \" )] fn a(); }" ;
252
+ let srv = astsrv:: mk_srv_from_str ( source) ;
253
+ let doc = extract:: from_srv ( srv, "" ) ;
254
+ let doc = attr_pass:: mk_pass ( ) ( srv, doc) ;
255
+ let doc = mk_pass ( str:: trim) ( srv, doc) ;
256
+ assert doc. topmod . ifaces ( ) [ 0 ] . methods [ 0 ] . failure == some ( "a" ) ;
257
+ }
0 commit comments