]> git.lizzy.rs Git - rust.git/commitdiff
Allow test imports to go unused
authorJohn Renner <john@jrenner.net>
Wed, 1 Aug 2018 18:28:08 +0000 (11:28 -0700)
committerJohn Renner <john@jrenner.net>
Wed, 1 Aug 2018 18:28:08 +0000 (11:28 -0700)
src/libsyntax/ext/expand.rs

index 96003be31522cada4a025d1fc3f105774cae73eb..590d8cd6c99f4ece019ddc934a918dffd44f95dd 100644 (file)
@@ -1376,6 +1376,7 @@ fn fold_item(&mut self, item: P<ast::Item>) -> SmallVector<P<ast::Item>> {
             // #[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<ast::Item>) -> SmallVector<P<ast::Item>> {
                     });
 
                     // 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)))