// revisions: edition2015 edition2021 // [edition2015]compile-flags: --edition=2015 // [edition2021]compile-flags: --edition=2021 #![feature(extern_types)] #![feature(cfg_accessible)] // Struct::unresolved - error struct Struct { existing: u8, } #[cfg_accessible(Struct::existing)] //~ ERROR not sure const A: bool = true; #[cfg_accessible(Struct::unresolved)] //~ ERROR not sure const B: bool = true; // Union::unresolved - error struct Union { existing: u8, } #[cfg_accessible(Union::existing)] //~ ERROR not sure const A: bool = true; #[cfg_accessible(Union::unresolved)] //~ ERROR not sure const B: bool = true; // Enum::unresolved - error enum Enum { Existing { existing: u8 }, } #[cfg_accessible(Enum::Existing::existing)] //~ ERROR not sure const A: bool = true; #[cfg_accessible(Enum::Existing::unresolved)] //~ ERROR not sure const B: bool = true; #[cfg_accessible(Enum::unresolved)] //~ ERROR not sure const C: bool = true; // Trait::unresolved - false or error, depending on edition (error if you can write Trait::foo // instead of ::foo for methods like impl dyn Trait { fn foo() {} }) trait Trait {} impl dyn Trait { fn existing() {} } // FIXME: Should be an error for edition > 2015 #[cfg_accessible(Trait::existing)] //~ ERROR not sure const A: bool = true; #[cfg_accessible(Trait::unresolved)] //~ ERROR not sure const B: bool = true; // TypeAlias::unresolved - error type TypeAlias = Struct; #[cfg_accessible(TypeAlias::existing)] //~ ERROR not sure const A: bool = true; #[cfg_accessible(TypeAlias::unresolved)] //~ ERROR not sure const B: bool = true; // ForeignType::unresolved - error extern { type ForeignType; } #[cfg_accessible(ForeignType::unresolved)] //~ ERROR not sure const A: bool = true; // AssocType::unresolved - error trait AssocType { type AssocType; } #[cfg_accessible(AssocType::AssocType::unresolved)] //~ ERROR not sure const A: bool = true; // PrimitiveType::unresolved - error #[cfg_accessible(u8::unresolved)] //~ ERROR not sure const A: bool = true; #[cfg_accessible(u8::is_ascii)] //~ ERROR not sure const B: bool = true; fn main() {}