@@ -21,9 +21,11 @@ fn run(
21
21
fold_mod: fold_mod,
22
22
fold_fn: fold_fn,
23
23
fold_const: fold_const,
24
+ fold_enum: fold_enum,
24
25
fold_modlist: fold_modlist,
25
26
fold_fnlist: fold_fnlist,
26
- fold_constlist: fold_constlist
27
+ fold_constlist: fold_constlist,
28
+ fold_enumlist: fold_enumlist
27
29
with * fold:: default_seq_fold ( ctxt)
28
30
} ) ;
29
31
fold. fold_crate ( fold, doc)
@@ -216,3 +218,65 @@ fn should_elide_undocumented_consts() {
216
218
let doc = run ( srv, doc) ;
217
219
assert vec:: is_empty ( * doc. topmod . consts ) ;
218
220
}
221
+
222
+ fn fold_enum ( fold : fold:: fold < ctxt > , doc : doc:: enumdoc ) -> doc:: enumdoc {
223
+ let doc = ~{
224
+ variants: vec:: filter_map ( doc. variants ) { |variant|
225
+ if variant. desc != none {
226
+ some ( variant)
227
+ } else {
228
+ none
229
+ }
230
+ }
231
+ with * fold:: default_seq_fold_enum ( fold, doc)
232
+ } ;
233
+ fold. ctxt . have_docs =
234
+ doc. brief != none
235
+ || doc. desc != none
236
+ || vec:: is_not_empty ( doc. variants ) ;
237
+ ret doc;
238
+ }
239
+
240
+ fn fold_enumlist (
241
+ fold : fold:: fold < ctxt > ,
242
+ list : doc:: enumlist
243
+ ) -> doc:: enumlist {
244
+ doc:: enumlist ( vec:: filter_map ( * list) { |doc|
245
+ let doc = fold. fold_enum ( fold, doc) ;
246
+ if fold. ctxt . have_docs {
247
+ some ( doc)
248
+ } else {
249
+ none
250
+ }
251
+ } )
252
+ }
253
+
254
+ #[ test]
255
+ fn should_elide_undocumented_enums ( ) {
256
+ let source = "enum a { b }" ;
257
+ let srv = astsrv:: mk_srv_from_str ( source) ;
258
+ let doc = extract:: from_srv ( srv, "" ) ;
259
+ let doc = attr_pass:: mk_pass ( ) ( srv, doc) ;
260
+ let doc = run ( srv, doc) ;
261
+ assert vec:: is_empty ( * doc. topmod . enums ) ;
262
+ }
263
+
264
+ #[ test]
265
+ fn should_elide_undocumented_variants ( ) {
266
+ let source = "#[doc = \" a\" ] enum a { b }" ;
267
+ let srv = astsrv:: mk_srv_from_str ( source) ;
268
+ let doc = extract:: from_srv ( srv, "" ) ;
269
+ let doc = attr_pass:: mk_pass ( ) ( srv, doc) ;
270
+ let doc = run ( srv, doc) ;
271
+ assert vec:: is_empty ( doc. topmod . enums [ 0 ] . variants ) ;
272
+ }
273
+
274
+ #[ test]
275
+ fn should_not_elide_enums_with_documented_variants ( ) {
276
+ let source = "enum a { #[doc = \" a\" ] b }" ;
277
+ let srv = astsrv:: mk_srv_from_str ( source) ;
278
+ let doc = extract:: from_srv ( srv, "" ) ;
279
+ let doc = attr_pass:: mk_pass ( ) ( srv, doc) ;
280
+ let doc = run ( srv, doc) ;
281
+ assert vec:: is_not_empty ( * doc. topmod . enums ) ;
282
+ }
0 commit comments