about summary refs log tree commit diff
path: root/tests/ui/consts/const-block.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/consts/const-block.rs')
-rw-r--r--tests/ui/consts/const-block.rs45
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/ui/consts/const-block.rs b/tests/ui/consts/const-block.rs
new file mode 100644
index 00000000000..ec99c70f6e0
--- /dev/null
+++ b/tests/ui/consts/const-block.rs
@@ -0,0 +1,45 @@
+// run-pass
+#![allow(unused_braces)]
+#![allow(dead_code)]
+#![allow(unused_unsafe)]
+
+use std::marker::Sync;
+
+struct Foo {
+    a: usize,
+    b: *const ()
+}
+
+unsafe impl Sync for Foo {}
+
+fn foo<T>(a: T) -> T {
+    a
+}
+
+static BLOCK_INTEGRAL: usize = { 1 };
+static BLOCK_EXPLICIT_UNIT: () = { () };
+static BLOCK_IMPLICIT_UNIT: () = { };
+static BLOCK_FLOAT: f64 = { 1.0 };
+static BLOCK_ENUM: Option<usize> = { Some(100) };
+static BLOCK_STRUCT: Foo = { Foo { a: 12, b: std::ptr::null::<()>() } };
+static BLOCK_UNSAFE: usize = unsafe { 1000 };
+
+static BLOCK_FN_INFERRED: fn(usize) -> usize = { foo };
+
+static BLOCK_FN: fn(usize) -> usize = { foo::<usize> };
+
+static BLOCK_ENUM_CONSTRUCTOR: fn(usize) -> Option<usize> = { Some };
+
+pub fn main() {
+    assert_eq!(BLOCK_INTEGRAL, 1);
+    assert_eq!(BLOCK_EXPLICIT_UNIT, ());
+    assert_eq!(BLOCK_IMPLICIT_UNIT, ());
+    assert_eq!(BLOCK_FLOAT, 1.0_f64);
+    assert_eq!(BLOCK_STRUCT.a, 12);
+    assert_eq!(BLOCK_STRUCT.b, std::ptr::null::<()>());
+    assert_eq!(BLOCK_ENUM, Some(100));
+    assert_eq!(BLOCK_UNSAFE, 1000);
+    assert_eq!(BLOCK_FN_INFERRED(300), 300);
+    assert_eq!(BLOCK_FN(300), 300);
+    assert_eq!(BLOCK_ENUM_CONSTRUCTOR(200), Some(200));
+}