about summary refs log tree commit diff
path: root/tests/ui/inline-const
diff options
context:
space:
mode:
authorOli Scherer <git-spam-no-reply9815368754983@oli-obk.de>2023-09-18 15:30:07 +0000
committerOli Scherer <git-spam-no-reply9815368754983@oli-obk.de>2023-09-21 09:00:22 +0000
commit9c762b58ba9f46e806f7e07b80ef59b45de87471 (patch)
tree8e23c38a45fc374a378ea01e411e852924479eff /tests/ui/inline-const
parent44e199bf300a79df302a5b068dba0c39d9a12c0f (diff)
downloadrust-9c762b58ba9f46e806f7e07b80ef59b45de87471.tar.gz
rust-9c762b58ba9f46e806f7e07b80ef59b45de87471.zip
Prevent promotion of const fn calls in inline consts
Diffstat (limited to 'tests/ui/inline-const')
-rw-r--r--tests/ui/inline-const/promotion.rs3
-rw-r--r--tests/ui/inline-const/promotion.stderr14
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`.