From 3dbd32854f6bdee94c98c5e3e5da58fb79d79fd9 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 4 Nov 2014 14:59:42 -0800 Subject: rustc: Process #[cfg]/#[cfg_attr] on crates This commit implements processing these two attributes at the crate level as well as at the item level. When #[cfg] is applied at the crate level, then the entire crate will be omitted if the cfg doesn't match. The #[cfg_attr] attribute is processed as usual in that the attribute is included or not depending on whether the cfg matches. This was spurred on by motivations of #18585 where #[cfg_attr] annotations will be applied at the crate-level. cc #18585 --- src/libsyntax/test.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/libsyntax/test.rs') diff --git a/src/libsyntax/test.rs b/src/libsyntax/test.rs index a7db8e800a9..29637e88dd5 100644 --- a/src/libsyntax/test.rs +++ b/src/libsyntax/test.rs @@ -108,7 +108,10 @@ impl<'a> fold::Folder for TestHarnessGenerator<'a> { } fn fold_item(&mut self, i: P) -> SmallVector> { - self.cx.path.push(i.ident); + let ident = i.ident; + if ident.name != token::special_idents::invalid.name { + self.cx.path.push(ident); + } debug!("current path: {}", ast_util::path_name_i(self.cx.path.as_slice())); @@ -143,7 +146,9 @@ impl<'a> fold::Folder for TestHarnessGenerator<'a> { ast::ItemMod(..) => fold::noop_fold_item(i, self), _ => SmallVector::one(i), }; - self.cx.path.pop(); + if ident.name != token::special_idents::invalid.name { + self.cx.path.pop(); + } res } -- cgit 1.4.1-3-g733a5