@@ -24,7 +24,8 @@ fn run(
24
24
fold_mod: fold_mod,
25
25
fold_fn: fold_fn,
26
26
fold_const: fold_const,
27
- fold_enum: fold_enum
27
+ fold_enum: fold_enum,
28
+ fold_res: fold_res
28
29
with * fold:: default_seq_fold ( srv)
29
30
} ) ;
30
31
fold. fold_crate ( fold, doc)
@@ -307,3 +308,49 @@ fn fold_enum_should_extract_variant_docs() {
307
308
let doc = fold_enum ( fold, doc. topmod . enums [ 0 ] ) ;
308
309
assert doc. variants [ 0 ] . desc == some ( "c" ) ;
309
310
}
311
+
312
+ fn fold_res (
313
+ fold : fold:: fold < astsrv:: srv > ,
314
+ doc : doc:: resdoc
315
+ ) -> doc:: resdoc {
316
+
317
+ let srv = fold. ctxt ;
318
+ let attrs = parse_item_attrs ( srv, doc. id , attr_parser:: parse_fn) ;
319
+
320
+ ~{
321
+ brief: attrs. brief ,
322
+ desc: attrs. desc ,
323
+ args: vec:: map ( attrs. args ) { |attrs|
324
+ ~{
325
+ name: attrs. name ,
326
+ desc: some ( attrs. desc ) ,
327
+ ty: none
328
+ }
329
+ }
330
+ with * doc
331
+ }
332
+ }
333
+
334
+ #[ test]
335
+ fn fold_res_should_extract_docs ( ) {
336
+ let source = "#[doc(brief = \" a\" , desc = \" b\" )]\
337
+ resource r(b: bool) { }";
338
+ let srv = astsrv:: mk_srv_from_str ( source) ;
339
+ let doc = extract:: from_srv ( srv, "" ) ;
340
+ let fold = fold:: default_seq_fold ( srv) ;
341
+ let doc = fold_res ( fold, doc. topmod . resources [ 0 ] ) ;
342
+ assert doc. brief == some ( "a" ) ;
343
+ assert doc. desc == some ( "b" ) ;
344
+ }
345
+
346
+ #[ test]
347
+ fn fold_res_should_extract_arg_docs ( ) {
348
+ let source = "#[doc(args(a = \" b\" ))]\
349
+ resource r(a: bool) { }";
350
+ let srv = astsrv:: mk_srv_from_str ( source) ;
351
+ let doc = extract:: from_srv ( srv, "" ) ;
352
+ let fold = fold:: default_seq_fold ( srv) ;
353
+ let doc = fold_res ( fold, doc. topmod . resources [ 0 ] ) ;
354
+ assert doc. args [ 0 ] . name == "a" ;
355
+ assert doc. args [ 0 ] . desc == some ( "b" ) ;
356
+ }
0 commit comments