Skip to content

Commit 1de5b7e

Browse files
authored
Auto merge of #35617 - jseyfried:fix_unused_cfg_attr_path, r=eddyb
Fix incorrect unused import warnings on `cfg_attr`ed `path` attributes Fixes #35584. r? @eddyb
2 parents e25542c + 4943e96 commit 1de5b7e

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

src/librustc_passes/ast_validation.rs

+5
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
use rustc::lint;
2020
use rustc::session::Session;
2121
use syntax::ast::*;
22+
use syntax::attr;
2223
use syntax::parse::token::{self, keywords};
2324
use syntax::visit::{self, Visitor};
2425
use syntax_pos::Span;
@@ -168,6 +169,10 @@ impl<'a> Visitor for AstValidator<'a> {
168169
}
169170
}
170171
}
172+
ItemKind::Mod(_) => {
173+
// Ensure that `path` attributes on modules are recorded as used (c.f. #35584).
174+
attr::first_attr_value_str_by_name(&item.attrs, "path");
175+
}
171176
_ => {}
172177
}
173178

src/test/compile-fail/cfg_attr_path.rs

+14-2
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,17 @@
88
// option. This file may not be copied, modified, or distributed
99
// except according to those terms.
1010

11-
#[cfg_attr(all(), path = "nonexistent_file.rs")] mod foo;
12-
//~^ ERROR nonexistent_file.rs
11+
#![feature(rustc_attrs)]
12+
#![allow(dead_code)]
13+
#![deny(unused_attributes)] // c.f #35584
14+
15+
mod auxiliary {
16+
#[cfg_attr(any(), path = "nonexistent_file.rs")] pub mod namespaced_enums;
17+
#[cfg_attr(all(), path = "namespaced_enums.rs")] pub mod nonexistent_file;
18+
}
19+
20+
#[rustc_error]
21+
fn main() { //~ ERROR compilation successful
22+
let _ = auxiliary::namespaced_enums::Foo::A;
23+
let _ = auxiliary::nonexistent_file::Foo::A;
24+
}

0 commit comments

Comments
 (0)