Skip to content

Commit

Permalink
Update UB test to fail during build with contant errors
Browse files Browse the repository at this point in the history
  • Loading branch information
canova committed Jul 18, 2020
1 parent c45e9c8 commit 6cd164f
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 5 deletions.
5 changes: 5 additions & 0 deletions src/test/ui/consts/const_unsafe_unreachable_ub.rs
@@ -1,3 +1,5 @@
// build-fail

#![feature(const_fn)]
#![feature(const_unreachable_unchecked)]

Expand All @@ -8,8 +10,11 @@ const unsafe fn foo(x: bool) -> bool {
}
}

#[warn(const_err)]
const BAR: bool = unsafe { foo(false) };

fn main() {
assert_eq!(BAR, true);
//~^ ERROR E0080
//~| ERROR erroneous constant
}
34 changes: 29 additions & 5 deletions src/test/ui/consts/const_unsafe_unreachable_ub.stderr
@@ -1,20 +1,44 @@
error: any use of this value will cause an error
warning: any use of this value will cause an error
--> $SRC_DIR/libcore/hint.rs:LL:COL
|
LL | unsafe { intrinsics::unreachable() }
| ^^^^^^^^^^^^^^^^^^^^^^^^^
| |
| entering unreachable code
| inside `std::hint::unreachable_unchecked` at $SRC_DIR/libcore/hint.rs:LL:COL
| inside `foo` at $DIR/const_unsafe_unreachable_ub.rs:7:18
| inside `BAR` at $DIR/const_unsafe_unreachable_ub.rs:11:28
| inside `foo` at $DIR/const_unsafe_unreachable_ub.rs:9:18
| inside `BAR` at $DIR/const_unsafe_unreachable_ub.rs:14:28
|
::: $DIR/const_unsafe_unreachable_ub.rs:11:1
::: $DIR/const_unsafe_unreachable_ub.rs:14:1
|
LL | const BAR: bool = unsafe { foo(false) };
| ----------------------------------------
|
note: the lint level is defined here
--> $DIR/const_unsafe_unreachable_ub.rs:13:8
|
LL | #[warn(const_err)]
| ^^^^^^^^^

error[E0080]: evaluation of constant expression failed
--> $DIR/const_unsafe_unreachable_ub.rs:17:3
|
LL | assert_eq!(BAR, true);
| ^^^^^^^^^^^---^^^^^^^^
| |
| referenced constant has errors
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: erroneous constant used
--> $DIR/const_unsafe_unreachable_ub.rs:17:3
|
LL | assert_eq!(BAR, true);
| ^^^^^^^^^^^^^^^^^^^^^^ referenced constant has errors
|
= note: `#[deny(const_err)]` on by default
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: aborting due to previous error
error: aborting due to 2 previous errors; 1 warning emitted

For more information about this error, try `rustc --explain E0080`.

0 comments on commit 6cd164f

Please sign in to comment.