//@ build-pass (FIXME(62277): could be check-pass?) | |
#![allow(warnings)] | |
mod foo { | |
pub use foo::bar::S; | |
mod bar { | |
#[derive(Default)] | |
pub struct S { | |
pub(in foo) x: i32, | |
} | |
impl S { | |
pub(in foo) fn f(&self) -> i32 { 0 } | |
} | |
pub struct S2 { | |
pub(crate) x: bool, | |
} | |
impl S2 { | |
pub(crate) fn f(&self) -> bool { false } | |
} | |
impl ::std::ops::Deref for S { | |
type Target = S2; | |
fn deref(&self) -> &S2 { unimplemented!() } | |
} | |
} | |
} | |
fn main() { | |
let s = foo::S::default(); | |
let _: bool = s.x; | |
let _: bool = s.f(); | |
} |