Skip to content

Commit

Permalink
make sure that promoteds which fail to evaluate in dead const code be…
Browse files Browse the repository at this point in the history
…have correctly
  • Loading branch information
RalfJung committed Jan 4, 2021
1 parent ab5b9ae commit 92d1b39
Showing 1 changed file with 13 additions and 2 deletions.
15 changes: 13 additions & 2 deletions src/test/ui/consts/promotion.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,23 @@

fn foo(_: &'static [&'static str]) {}
fn bar(_: &'static [&'static str; 3]) {}
fn baz_i32(_: &'static i32) {}
fn baz_u32(_: &'static u32) {}
const fn baz_i32(_: &'static i32) {}
const fn baz_u32(_: &'static u32) {}

const fn fail() -> i32 { 1/0 }
const C: i32 = {
// Promoted that fails to evaluate in dead code -- this must work
// (for backwards compatibility reasons).
if false {
baz_i32(&fail());
}
42
};

fn main() {
foo(&["a", "b", "c"]);
bar(&["d", "e", "f"]);
assert_eq!(C, 42);

// make sure that these do not cause trouble despite overflowing
baz_u32(&(0-1));
Expand Down

0 comments on commit 92d1b39

Please sign in to comment.