summaryrefslogtreecommitdiffstats
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 000000000..0663687c9
--- /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();
+}