diff options
| author | Vishnunarayan K I <appukuttancr@gmail.com> | 2020-12-01 20:12:22 +0530 |
|---|---|---|
| committer | Vishnunarayan K I <appukuttancr@gmail.com> | 2020-12-01 20:12:22 +0530 |
| commit | a6c4cbd46a087de58b59063fca936efff31e212c (patch) | |
| tree | ffdeb4801ced9cfb665aa27c9d730fa88ba34f2c /src/test | |
| parent | b5b811aab49837e5fca93f41c9ac9fe9354f746f (diff) | |
review comment and one more test
Diffstat (limited to 'src/test')
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) +} |
