1
- #[ doc = "Prunes branches of the document tree that contain no documentation" ] ;
1
+ #[ doc = "Prunes items of the document tree that contain no documentation" ] ;
2
2
3
3
export mk_pass;
4
4
@@ -109,46 +109,27 @@ fn fold_fn(
109
109
fold : fold:: fold < ctxt > ,
110
110
doc : doc:: fndoc
111
111
) -> doc:: fndoc {
112
- let doc = {
113
- args: prune_args ( doc. args ) ,
114
- return : prune_return ( doc. return )
115
- with doc
116
- } ;
112
+ let doc = fold:: default_seq_fold_fn ( fold, doc) ;
117
113
118
114
fold. ctxt . have_docs =
119
115
doc. brief != none
120
116
|| doc. desc != none
121
- || vec :: is_not_empty ( doc. args )
117
+ || args_have_docs ( doc. args )
122
118
|| doc. return . desc != none
123
119
|| doc. failure != none;
124
120
ret doc;
125
121
}
126
122
127
- fn prune_args ( docs : [ doc:: argdoc ] ) -> [ doc:: argdoc ] {
128
- vec:: filter_map ( docs) { |doc|
129
- if option:: is_some ( doc. desc ) {
130
- some ( doc)
131
- } else {
132
- none
133
- }
134
- }
135
- }
136
-
137
- fn prune_return ( doc : doc:: retdoc ) -> doc:: retdoc {
138
- {
139
- ty: if option:: is_some ( doc. desc ) {
140
- doc. ty
141
- } else {
142
- none
143
- }
144
- with doc
123
+ fn args_have_docs ( docs : [ doc:: argdoc ] ) -> bool {
124
+ vec:: foldl ( false , docs) { |accum, doc|
125
+ accum || doc. desc != none
145
126
}
146
127
}
147
128
148
129
#[ test]
149
- fn should_elide_undocumented_arguments ( ) {
150
- let doc = test:: mk_doc ( "#[doc = \" hey \" ] fn a(b : int) { }" ) ;
151
- assert vec:: is_empty ( doc. topmod . fns ( ) [ 0 ] . args ) ;
130
+ fn should_elide_fns_with_undocumented_arguments ( ) {
131
+ let doc = test:: mk_doc ( "fn a(a : int) { }" ) ;
132
+ assert vec:: is_empty ( doc. topmod . fns ( ) ) ;
152
133
}
153
134
154
135
#[ test]
@@ -157,17 +138,6 @@ fn should_not_elide_fns_with_documented_arguments() {
157
138
assert vec:: is_not_empty ( doc. topmod . fns ( ) ) ;
158
139
}
159
140
160
- #[ test]
161
- fn should_elide_undocumented_return_values ( ) {
162
- let source = "#[doc = \" fonz\" ] fn a() -> int { }" ;
163
- let srv = astsrv:: mk_srv_from_str ( source) ;
164
- let doc = extract:: from_srv ( srv, "" ) ;
165
- let doc = tystr_pass:: mk_pass ( ) ( srv, doc) ;
166
- let doc = attr_pass:: mk_pass ( ) ( srv, doc) ;
167
- let doc = run ( srv, doc) ;
168
- assert doc. topmod . fns ( ) [ 0 ] . return . ty == none;
169
- }
170
-
171
141
#[ test]
172
142
fn should_not_elide_fns_with_documented_failure_conditions ( ) {
173
143
let doc = test:: mk_doc ( "#[doc(failure = \" yup\" )] fn a() { }" ) ;
@@ -252,20 +222,12 @@ fn should_not_elide_enums_with_documented_variants() {
252
222
}
253
223
254
224
fn fold_res ( fold : fold:: fold < ctxt > , doc : doc:: resdoc ) -> doc:: resdoc {
255
- let doc = {
256
- args: vec:: filter_map ( doc. args ) { |arg|
257
- if arg. desc != none {
258
- some ( arg)
259
- } else {
260
- none
261
- }
262
- }
263
- with fold:: default_seq_fold_res ( fold, doc)
264
- } ;
225
+ let doc = fold:: default_seq_fold_res ( fold, doc) ;
226
+
265
227
fold. ctxt . have_docs =
266
228
doc. brief != none
267
229
|| doc. desc != none
268
- || vec :: is_not_empty ( doc. args ) ;
230
+ || args_have_docs ( doc. args ) ;
269
231
ret doc;
270
232
}
271
233
@@ -275,13 +237,6 @@ fn should_elide_undocumented_resources() {
275
237
assert vec:: is_empty ( doc. topmod . resources ( ) ) ;
276
238
}
277
239
278
- #[ test]
279
- fn should_elide_undocumented_resource_args ( ) {
280
- let doc = test:: mk_doc ( "#[doc = \" drunk\" ]\
281
- resource r(a: bool) { }") ;
282
- assert vec:: is_empty ( doc. topmod . resources ( ) [ 0 ] . args ) ;
283
- }
284
-
285
240
#[ test]
286
241
fn should_not_elide_resources_with_documented_args ( ) {
287
242
let doc = test:: mk_doc ( "#[doc(args(a = \" drunk\" ))]\
@@ -294,33 +249,20 @@ fn fold_iface(
294
249
doc : doc:: ifacedoc
295
250
) -> doc:: ifacedoc {
296
251
let doc = fold:: default_seq_fold_iface ( fold, doc) ;
297
- let doc = {
298
- methods: prune_methods ( doc. methods )
299
- with doc
300
- } ;
252
+
301
253
fold. ctxt . have_docs =
302
254
doc. brief != none
303
255
|| doc. desc != none
304
256
|| methods_have_docs ( doc. methods ) ;
305
257
ret doc;
306
258
}
307
259
308
- fn prune_methods ( docs : [ doc:: methoddoc ] ) -> [ doc:: methoddoc ] {
309
- vec:: map ( docs) { |doc|
310
- {
311
- args: prune_args ( doc. args ) ,
312
- return : prune_return ( doc. return )
313
- with doc
314
- }
315
- }
316
- }
317
-
318
260
fn methods_have_docs ( docs : [ doc:: methoddoc ] ) -> bool {
319
261
vec:: foldl ( false , docs) { |accum, doc|
320
262
accum
321
263
|| doc. brief != none
322
264
|| doc. desc != none
323
- || vec :: is_not_empty ( doc. args )
265
+ || args_have_docs ( doc. args )
324
266
|| doc. return . desc != none
325
267
|| doc. failure != none
326
268
}
@@ -338,6 +280,12 @@ fn should_not_elide_documented_ifaces() {
338
280
assert vec:: is_not_empty ( doc. topmod . ifaces ( ) ) ;
339
281
}
340
282
283
+ #[ test]
284
+ fn should_elide_ifaces_with_undocumented_args ( ) {
285
+ let doc = test:: mk_doc ( "iface i { fn a(b: bool); }" ) ;
286
+ assert vec:: is_empty ( doc. topmod . ifaces ( ) ) ;
287
+ }
288
+
341
289
#[ test]
342
290
fn should_not_elide_ifaces_with_documented_methods ( ) {
343
291
let doc = test:: mk_doc ( "iface i { #[doc = \" hey\" ] fn a(); }" ) ;
@@ -350,27 +298,12 @@ fn should_not_elide_undocumented_iface_methods() {
350
298
assert vec:: is_not_empty ( doc. topmod . ifaces ( ) [ 0 ] . methods ) ;
351
299
}
352
300
353
- #[ test]
354
- fn should_elide_undocumented_iface_method_args ( ) {
355
- let doc = test:: mk_doc ( "#[doc = \" hey\" ] iface i { fn a(); }" ) ;
356
- assert vec:: is_empty ( doc. topmod . ifaces ( ) [ 0 ] . methods [ 0 ] . args ) ;
357
- }
358
-
359
- #[ test]
360
- fn should_elide_undocumented_iface_method_return_values ( ) {
361
- let doc = test:: mk_doc ( "#[doc = \" hey\" ] iface i { fn a() -> int; }" ) ;
362
- assert doc. topmod . ifaces ( ) [ 0 ] . methods [ 0 ] . return . ty == none;
363
- }
364
-
365
301
fn fold_impl (
366
302
fold : fold:: fold < ctxt > ,
367
303
doc : doc:: impldoc
368
304
) -> doc:: impldoc {
369
305
let doc = fold:: default_seq_fold_impl ( fold, doc) ;
370
- let doc = {
371
- methods: prune_methods ( doc. methods )
372
- with doc
373
- } ;
306
+
374
307
fold. ctxt . have_docs =
375
308
doc. brief != none
376
309
|| doc. desc != none
@@ -402,20 +335,6 @@ fn should_not_elide_undocumented_impl_methods() {
402
335
assert vec:: is_not_empty ( doc. topmod . impls ( ) [ 0 ] . methods ) ;
403
336
}
404
337
405
- #[ test]
406
- fn should_elide_undocumented_impl_method_args ( ) {
407
- let doc = test:: mk_doc (
408
- "#[doc = \" hey\" ] impl i for int { fn a(b: bool) { } }" ) ;
409
- assert vec:: is_empty ( doc. topmod . impls ( ) [ 0 ] . methods [ 0 ] . args ) ;
410
- }
411
-
412
- #[ test]
413
- fn should_elide_undocumented_impl_method_return_values ( ) {
414
- let doc = test:: mk_doc (
415
- "#[doc = \" hey\" ] impl i for int { fn a() -> int { } }" ) ;
416
- assert doc. topmod . impls ( ) [ 0 ] . methods [ 0 ] . return . ty == none;
417
- }
418
-
419
338
#[ cfg( test) ]
420
339
mod test {
421
340
fn mk_doc ( source : str ) -> doc:: cratedoc {
0 commit comments