@@ -22,10 +22,12 @@ fn run(
22
22
fold_fn: fold_fn,
23
23
fold_const: fold_const,
24
24
fold_enum: fold_enum,
25
+ fold_res: fold_res,
25
26
fold_modlist: fold_modlist,
26
27
fold_fnlist: fold_fnlist,
27
28
fold_constlist: fold_constlist,
28
- fold_enumlist: fold_enumlist
29
+ fold_enumlist: fold_enumlist,
30
+ fold_reslist: fold_reslist
29
31
with * fold:: default_seq_fold ( ctxt)
30
32
} ) ;
31
33
fold. fold_crate ( fold, doc)
@@ -280,3 +282,66 @@ fn should_not_elide_enums_with_documented_variants() {
280
282
let doc = run ( srv, doc) ;
281
283
assert vec:: is_not_empty ( * doc. topmod . enums ) ;
282
284
}
285
+
286
+ fn fold_res ( fold : fold:: fold < ctxt > , doc : doc:: resdoc ) -> doc:: resdoc {
287
+ let doc = ~{
288
+ args: vec:: filter_map ( doc. args ) { |arg|
289
+ if arg. desc != none {
290
+ some ( arg)
291
+ } else {
292
+ none
293
+ }
294
+ }
295
+ with * fold:: default_seq_fold_res ( fold, doc)
296
+ } ;
297
+ fold. ctxt . have_docs =
298
+ doc. brief != none
299
+ || doc. desc != none
300
+ || vec:: is_not_empty ( doc. args ) ;
301
+ ret doc;
302
+ }
303
+
304
+ fn fold_reslist (
305
+ fold : fold:: fold < ctxt > ,
306
+ list : doc:: reslist
307
+ ) -> doc:: reslist {
308
+ doc:: reslist ( vec:: filter_map ( * list) { |doc|
309
+ let doc = fold. fold_res ( fold, doc) ;
310
+ if fold. ctxt . have_docs {
311
+ some ( doc)
312
+ } else {
313
+ none
314
+ }
315
+ } )
316
+ }
317
+
318
+ #[ test]
319
+ fn should_elide_undocumented_resources ( ) {
320
+ let source = "resource r(a: bool) { }" ;
321
+ let srv = astsrv:: mk_srv_from_str ( source) ;
322
+ let doc = extract:: from_srv ( srv, "" ) ;
323
+ let doc = run ( srv, doc) ;
324
+ assert vec:: is_empty ( * doc. topmod . resources ) ;
325
+ }
326
+
327
+ #[ test]
328
+ fn should_elide_undocumented_resource_args ( ) {
329
+ let source = "#[doc = \" drunk\" ]\
330
+ resource r(a: bool) { }";
331
+ let srv = astsrv:: mk_srv_from_str ( source) ;
332
+ let doc = extract:: from_srv ( srv, "" ) ;
333
+ let doc = attr_pass:: mk_pass ( ) ( srv, doc) ;
334
+ let doc = run ( srv, doc) ;
335
+ assert vec:: is_empty ( doc. topmod . resources [ 0 ] . args ) ;
336
+ }
337
+
338
+ #[ test]
339
+ fn should_not_elide_resources_with_documented_args ( ) {
340
+ let source = "#[doc(args(a = \" drunk\" ))]\
341
+ resource r(a: bool) { }";
342
+ let srv = astsrv:: mk_srv_from_str ( source) ;
343
+ let doc = extract:: from_srv ( srv, "" ) ;
344
+ let doc = attr_pass:: mk_pass ( ) ( srv, doc) ;
345
+ let doc = run ( srv, doc) ;
346
+ assert vec:: is_not_empty ( * doc. topmod . resources ) ;
347
+ }
0 commit comments