From: John Renner Date: Wed, 1 Aug 2018 18:28:08 +0000 (-0700) Subject: Allow test imports to go unused X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=af7ae2f278cb5f5b2d054d15dc36a39178a48b69;p=rust.git Allow test imports to go unused --- diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index 96003be3152..590d8cd6c99 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -1376,6 +1376,7 @@ fn fold_item(&mut self, item: P) -> SmallVector> { // #[test] fn foo() {} // becomes: // #[test] pub fn foo_gensym(){} + // #[allow(dead_code)] // use foo_gensym as foo; ast::ItemKind::Fn(..) if self.cx.ecfg.should_test => { if self.tests_nameable && item.attrs.iter().any(|attr| is_test_or_bench(attr)) { @@ -1390,13 +1391,26 @@ fn fold_item(&mut self, item: P) -> SmallVector> { }); // Use the gensymed name under the item's original visibility - let use_item = self.cx.item_use_simple_( + let mut use_item = self.cx.item_use_simple_( item.ident.span, orig_vis, Some(orig_ident), self.cx.path(item.ident.span, vec![keywords::SelfValue.ident(), item.ident])); + // #[allow(dead_code)] because the test function probably isn't being referenced + use_item = use_item.map(|mut ui| { + ui.attrs.push( + self.cx.attribute(DUMMY_SP, attr::mk_list_item(DUMMY_SP, + Ident::from_str("allow"), vec![ + attr::mk_nested_word_item(Ident::from_str("dead_code")) + ] + )) + ); + + ui + }); + SmallVector::many( self.fold_unnameable(item).into_iter() .chain(self.fold_unnameable(use_item)))