8078: Support `#[cfg]` on all associated items r=jonas-schievink a=jonas-schievink

bors r+

Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
This commit is contained in:
bors[bot] 2021-03-18 00:30:11 +00:00 committed by GitHub
commit bda858bba9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 5 deletions

View File

@ -256,17 +256,17 @@ fn collect_items(
let mut items = Vec::new();
for item in assoc_items {
let attrs = item_tree.attrs(db, module.krate, ModItem::from(item).into());
if !attrs.is_cfg_enabled(&cfg_options) {
continue;
}
match item {
AssocItem::Function(id) => {
let item = &item_tree[id];
let attrs = item_tree.attrs(db, module.krate, ModItem::from(id).into());
if !attrs.is_cfg_enabled(&cfg_options) {
continue;
}
let def = FunctionLoc { container, id: ItemTreeId::new(file_id, id) }.intern(db);
items.push((item.name.clone(), def.into()));
}
// FIXME: cfg?
AssocItem::Const(id) => {
let item = &item_tree[id];
let name = match item.name.clone() {

View File

@ -2545,3 +2545,22 @@ fn test() {
"#]],
)
}
#[test]
fn cfgd_out_assoc_items() {
check_types(
r#"
struct S;
impl S {
#[cfg(FALSE)]
const C: S = S;
}
fn f() {
S::C;
//^^^^ {unknown}
}
"#,
)
}