//@ aux-build:privacy-struct-ctor.rs extern crate privacy_struct_ctor as xcrate; mod m { pub struct S(u8); pub struct S2 { s: u8 } pub mod n { pub(in m) struct Z(pub(in m::n) u8); } use m::n::Z; // OK, only the type is imported fn f() { n::Z; //~^ ERROR tuple struct constructor `Z` is private Z; //~^ ERROR expected value, found struct `Z` } } use m::S; // OK, only the type is imported use m::S2; // OK, only the type is imported fn main() { m::S; //~^ ERROR tuple struct constructor `S` is private let _: S = m::S(2); //~^ ERROR tuple struct constructor `S` is private S; //~^ ERROR expected value, found struct `S` m::n::Z; //~^ ERROR tuple struct constructor `Z` is private S2; //~^ ERROR expected value, found struct `S2` xcrate::m::S; //~^ ERROR tuple struct constructor `S` is private xcrate::S; //~^ ERROR expected value, found struct `xcrate::S` xcrate::m::n::Z; //~^ ERROR tuple struct constructor `Z` is private }