//@ run-pass #![allow(unused_variables)] #![allow(non_upper_case_globals)] // Empty struct defined with braces add names into type namespace // Empty struct defined without braces add names into both type and value namespaces //@ aux-build:empty-struct.rs extern crate empty_struct; use empty_struct::*; struct Empty1 {} struct Empty2; struct Empty7(); #[derive(PartialEq, Eq)] struct Empty3 {} const Empty3: Empty3 = Empty3 {}; enum E { Empty4 {}, Empty5, Empty6(), } fn local() { let e1: Empty1 = Empty1 {}; let e2: Empty2 = Empty2 {}; let e2: Empty2 = Empty2; let e3: Empty3 = Empty3 {}; let e3: Empty3 = Empty3; let e4: E = E::Empty4 {}; let e5: E = E::Empty5 {}; let e5: E = E::Empty5; let e6: E = E::Empty6 {}; let e6: E = E::Empty6(); let ctor6: fn() -> E = E::Empty6; let e7: Empty7 = Empty7 {}; let e7: Empty7 = Empty7(); let ctor7: fn() -> Empty7 = Empty7; match e1 { Empty1 {} => {} } match e2 { Empty2 {} => {} } match e3 { Empty3 {} => {} } match e4 { E::Empty4 {} => {} _ => {} } match e5 { E::Empty5 {} => {} _ => {} } match e6 { E::Empty6 {} => {} _ => {} } match e7 { Empty7 {} => {} } match e1 { Empty1 { .. } => {} } match e2 { Empty2 { .. } => {} } match e3 { Empty3 { .. } => {} } match e4 { E::Empty4 { .. } => {} _ => {} } match e5 { E::Empty5 { .. } => {} _ => {} } match e6 { E::Empty6 { .. } => {} _ => {} } match e7 { Empty7 { .. } => {} } match e2 { Empty2 => {} } match e3 { Empty3 => {} } match e5 { E::Empty5 => {} _ => {} } match e6 { E::Empty6() => {} _ => {} } match e6 { E::Empty6(..) => {} _ => {} } match e7 { Empty7() => {} } match e7 { Empty7(..) => {} } let e11: Empty1 = Empty1 { ..e1 }; let e22: Empty2 = Empty2 { ..e2 }; let e33: Empty3 = Empty3 { ..e3 }; let e77: Empty7 = Empty7 { ..e7 }; } fn xcrate() { let e1: XEmpty1 = XEmpty1 {}; let e2: XEmpty2 = XEmpty2 {}; let e2: XEmpty2 = XEmpty2; let e3: XE = XE::XEmpty3 {}; let e4: XE = XE::XEmpty4 {}; let e4: XE = XE::XEmpty4; let e6: XE = XE::XEmpty6 {}; let e6: XE = XE::XEmpty6(); let ctor6: fn() -> XE = XE::XEmpty6; let e7: XEmpty7 = XEmpty7 {}; let e7: XEmpty7 = XEmpty7(); let ctor7: fn() -> XEmpty7 = XEmpty7; match e1 { XEmpty1 {} => {} } match e2 { XEmpty2 {} => {} } match e3 { XE::XEmpty3 {} => {} _ => {} } match e4 { XE::XEmpty4 {} => {} _ => {} } match e6 { XE::XEmpty6 {} => {} _ => {} } match e7 { XEmpty7 {} => {} } match e1 { XEmpty1 { .. } => {} } match e2 { XEmpty2 { .. } => {} } match e3 { XE::XEmpty3 { .. } => {} _ => {} } match e4 { XE::XEmpty4 { .. } => {} _ => {} } match e6 { XE::XEmpty6 { .. } => {} _ => {} } match e7 { XEmpty7 { .. } => {} } match e2 { XEmpty2 => {} } match e4 { XE::XEmpty4 => {} _ => {} } match e6 { XE::XEmpty6() => {} _ => {} } match e6 { XE::XEmpty6(..) => {} _ => {} } match e7 { XEmpty7() => {} } match e7 { XEmpty7(..) => {} } let e11: XEmpty1 = XEmpty1 { ..e1 }; let e22: XEmpty2 = XEmpty2 { ..e2 }; let e77: XEmpty7 = XEmpty7 { ..e7 }; } fn main() { local(); xcrate(); }