#![feature(cfg_accessible)] mod m { pub struct ExistingPublic; struct ExistingPrivate; } trait Trait { type Assoc; } enum Enum { Existing, } #[cfg_accessible(Enum)] struct ExistingResolved; #[cfg_accessible(Enum::Existing)] struct ExistingResolvedVariant; #[cfg_accessible(m::ExistingPublic)] struct ExistingPublic; #[cfg_accessible(m::ExistingPrivate)] struct ExistingPrivate; #[cfg_accessible(m::NonExistent)] struct NonExistingPrivate; #[cfg_accessible(n::AccessibleExpanded)] // OK, `cfg_accessible` can wait and retry. struct AccessibleExpanded; #[cfg_accessible(Trait::Assoc)] struct AccessibleTraitAssoc; macro_rules! generate_accessible_expanded { () => { mod n { pub struct AccessibleExpanded; } }; } generate_accessible_expanded!(); fn main() { ExistingPublic; AccessibleExpanded; AccessibleTraitAssoc; ExistingPrivate; //~ ERROR cannot find NonExistingPrivate; //~ ERROR cannot find NonExistingTraitAlias; //~ ERROR cannot find }