diff options
Diffstat (limited to 'tests/ui/inline-const')
| -rw-r--r-- | tests/ui/inline-const/promotion.rs | 3 | ||||
| -rw-r--r-- | tests/ui/inline-const/promotion.stderr | 14 |
2 files changed, 16 insertions, 1 deletions
diff --git a/tests/ui/inline-const/promotion.rs b/tests/ui/inline-const/promotion.rs index e211f46acf9..242959c6b51 100644 --- a/tests/ui/inline-const/promotion.rs +++ b/tests/ui/inline-const/promotion.rs @@ -1,8 +1,8 @@ #![feature(inline_const)] #![allow(arithmetic_overflow, unconditional_panic)] -// check-pass // The only way to have promoteds that fail is in `const fn` called from `const`/`static`. +// Make sure that in a `const` block, we do not promote such calls. const fn div_by_zero() -> i32 { 1 / 0 } @@ -15,6 +15,7 @@ fn main() { let v = const { if mk_false() { let _x: &'static i32 = &div_by_zero(); + //~^ ERROR: temporary value dropped while borrowed } 42 }; diff --git a/tests/ui/inline-const/promotion.stderr b/tests/ui/inline-const/promotion.stderr new file mode 100644 index 00000000000..795fc8f5921 --- /dev/null +++ b/tests/ui/inline-const/promotion.stderr @@ -0,0 +1,14 @@ +error[E0716]: temporary value dropped while borrowed + --> $DIR/promotion.rs:17:37 + | +LL | let _x: &'static i32 = &div_by_zero(); + | ------------ ^^^^^^^^^^^^^ creates a temporary value which is freed while still in use + | | + | type annotation requires that borrow lasts for `'static` +LL | +LL | } + | - temporary value is freed at the end of this statement + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0716`. |
