about summary refs log tree commit diff
path: root/tests/ui/structs-enums/empty-struct-braces.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/structs-enums/empty-struct-braces.rs')
-rw-r--r--tests/ui/structs-enums/empty-struct-braces.rs213
1 files changed, 213 insertions, 0 deletions
diff --git a/tests/ui/structs-enums/empty-struct-braces.rs b/tests/ui/structs-enums/empty-struct-braces.rs
new file mode 100644
index 00000000000..0663687c958
--- /dev/null
+++ b/tests/ui/structs-enums/empty-struct-braces.rs
@@ -0,0 +1,213 @@
+// 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();
+}