File tree 1 file changed +12
-4
lines changed
1 file changed +12
-4
lines changed Original file line number Diff line number Diff line change @@ -337,15 +337,23 @@ pub fn make_test(s: &str,
337
337
338
338
let mut prog = String :: new ( ) ;
339
339
340
- // First push any outer attributes from the example, assuming they
341
- // are intended to be crate attributes.
342
- prog. push_str ( & crate_attrs) ;
340
+ if opts. attrs . is_empty ( ) {
341
+ // If there aren't any attributes supplied by #![doc(test(attr(...)))], then allow some
342
+ // lints that are commonly triggered in doctests. The crate-level test attributes are
343
+ // commonly used to make tests fail in case they trigger warnings, so having this there in
344
+ // that case may cause some tests to pass when they shouldn't have.
345
+ prog. push_str ( "#![allow(unused)]\n " ) ;
346
+ }
343
347
344
- // Next, any attributes for other aspects such as lints .
348
+ // Next, any attributes that came from the crate root via #![doc(test(attr(...)))] .
345
349
for attr in & opts. attrs {
346
350
prog. push_str ( & format ! ( "#![{}]\n " , attr) ) ;
347
351
}
348
352
353
+ // Now push any outer attributes from the example, assuming they
354
+ // are intended to be crate attributes.
355
+ prog. push_str ( & crate_attrs) ;
356
+
349
357
// Don't inject `extern crate std` because it's already injected by the
350
358
// compiler.
351
359
if !s. contains ( "extern crate" ) && !opts. no_crate_inject && cratename != Some ( "std" ) {
You can’t perform that action at this time.
0 commit comments