about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorVishnunarayan K I <appukuttancr@gmail.com>2020-12-01 20:12:22 +0530
committerVishnunarayan K I <appukuttancr@gmail.com>2020-12-01 20:12:22 +0530
commita6c4cbd46a087de58b59063fca936efff31e212c (patch)
treeffdeb4801ced9cfb665aa27c9d730fa88ba34f2c /src/test
parentb5b811aab49837e5fca93f41c9ac9fe9354f746f (diff)
review comment and one more test
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient.rs6
-rw-r--r--src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient.stderr8
-rw-r--r--src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient_fail.rs20
3 files changed, 23 insertions, 11 deletions
diff --git a/src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient.rs b/src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient.rs
index 7cfe4734c1d..de7fb65f685 100644
--- a/src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient.rs
+++ b/src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient.rs
@@ -1,11 +1,11 @@
+// run-pass
 #![feature(core_intrinsics)]
 #![feature(const_heap)]
 #![feature(const_raw_ptr_deref)]
 #![feature(const_mut_refs)]
 use std::intrinsics;
 
-const FOO: *const i32 = foo();
-//~^ error: untyped pointers are not allowed in constant
+const FOO: &i32 = foo();
 
 const fn foo() -> &'static i32 {
     let t = unsafe {
@@ -16,5 +16,5 @@ const fn foo() -> &'static i32 {
     unsafe { &*t }
 }
 fn main() {
-    assert_eq!(unsafe { *FOO }, 20)
+    assert_eq!(*FOO, 20)
 }
diff --git a/src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient.stderr b/src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient.stderr
deleted file mode 100644
index cabd39dde31..00000000000
--- a/src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient.stderr
+++ /dev/null
@@ -1,8 +0,0 @@
-error: untyped pointers are not allowed in constant
-  --> $DIR/alloc_intrinsic_nontransient.rs:7:1
-   |
-LL | const FOO: *const i32 = foo();
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error: aborting due to previous error
-
diff --git a/src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient_fail.rs b/src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient_fail.rs
new file mode 100644
index 00000000000..de7fb65f685
--- /dev/null
+++ b/src/test/ui/consts/const-eval/heap/alloc_intrinsic_nontransient_fail.rs
@@ -0,0 +1,20 @@
+// run-pass
+#![feature(core_intrinsics)]
+#![feature(const_heap)]
+#![feature(const_raw_ptr_deref)]
+#![feature(const_mut_refs)]
+use std::intrinsics;
+
+const FOO: &i32 = foo();
+
+const fn foo() -> &'static i32 {
+    let t = unsafe {
+        let i = intrinsics::const_allocate(4, 4) as * mut i32;
+        *i = 20;
+        i
+    };
+    unsafe { &*t }
+}
+fn main() {
+    assert_eq!(*FOO, 20)
+}