about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRyan Cumming <etaoins@gmail.com>2018-01-27 14:18:18 +1100
committerRyan Cumming <etaoins@gmail.com>2018-01-27 14:26:14 +1100
commited7e4e1e27d21d47b93f756e615b5cb750275c3f (patch)
treed5a37587725c95c46c1cb6327bbe3e404015608b
parent75c79bdb0204271e09220c4c59239bb85772ee93 (diff)
downloadrust-ed7e4e1e27d21d47b93f756e615b5cb750275c3f.tar.gz
rust-ed7e4e1e27d21d47b93f756e615b5cb750275c3f.zip
Expand union test to include different types
-rw-r--r--src/test/run-pass/union/union-const-eval-field.rs33
1 files changed, 26 insertions, 7 deletions
diff --git a/src/test/run-pass/union/union-const-eval-field.rs b/src/test/run-pass/union/union-const-eval-field.rs
index a58b8bc34cd..f83f49f298b 100644
--- a/src/test/run-pass/union/union-const-eval-field.rs
+++ b/src/test/run-pass/union/union-const-eval-field.rs
@@ -10,17 +10,36 @@
 
 #![feature(const_fn)]
 
+type Field1 = i32;
+type Field2 = f32;
+type Field3 = i64;
+
 union DummyUnion {
-    field1: i32,
-    field2: i32,
+    field1: Field1,
+    field2: Field2,
+    field3: Field3,
+}
+
+const FLOAT1_AS_I32: i32 = 1065353216;
+const UNION: DummyUnion = DummyUnion { field1: FLOAT1_AS_I32 };
+
+const fn read_field1() -> Field1 {
+    const FIELD1: Field1 = unsafe { UNION.field1 };
+    FIELD1
+}
+
+const fn read_field2() -> Field2 {
+    const FIELD2: Field2 = unsafe { UNION.field2 };
+    FIELD2
 }
 
-const fn read_field() -> i32 {
-    const UNION: DummyUnion = DummyUnion { field1: 5 };
-    const FIELD: i32 = unsafe { UNION.field2 };
-    FIELD
+const fn read_field3() -> Field3 {
+    const FIELD3: Field3 = unsafe { UNION.field3 };
+    FIELD3
 }
 
 fn main() {
-    assert_eq!(read_field(), 5);
+    assert_eq!(read_field1(), FLOAT1_AS_I32);
+    assert_eq!(read_field2(), 1.0);
+    assert_eq!(read_field3(), unsafe { UNION.field3 });
 }