about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/test/ui/consts/promoted_const_call.rs6
-rw-r--r--src/test/ui/consts/promoted_const_call.stderr22
-rw-r--r--src/test/ui/consts/promoted_const_call2.rs6
-rw-r--r--src/test/ui/consts/promoted_const_call2.stderr22
-rw-r--r--src/test/ui/consts/promoted_const_call3.rs12
-rw-r--r--src/test/ui/consts/promoted_const_call3.stderr44
6 files changed, 106 insertions, 6 deletions
diff --git a/src/test/ui/consts/promoted_const_call.rs b/src/test/ui/consts/promoted_const_call.rs
index 3034d3da95c..cd71939f561 100644
--- a/src/test/ui/consts/promoted_const_call.rs
+++ b/src/test/ui/consts/promoted_const_call.rs
@@ -9,4 +9,8 @@ pub const C: () = {
     //~| ERROR: temporary value dropped while borrowed
 };
 
-fn main() {}
+fn main() {
+    let _: &'static _ = &id(&Panic);
+    //~^ ERROR: temporary value dropped while borrowed
+    //~| ERROR: temporary value dropped while borrowed
+}
diff --git a/src/test/ui/consts/promoted_const_call.stderr b/src/test/ui/consts/promoted_const_call.stderr
index 32bb1941a7d..502b432587f 100644
--- a/src/test/ui/consts/promoted_const_call.stderr
+++ b/src/test/ui/consts/promoted_const_call.stderr
@@ -18,6 +18,26 @@ LL |     let _: &'static _ = &id(&Panic);
    |            |                 creates a temporary value which is freed while still in use
    |            type annotation requires that borrow lasts for `'static`
 
-error: aborting due to 2 previous errors
+error[E0716]: temporary value dropped while borrowed
+  --> $DIR/promoted_const_call.rs:13:26
+   |
+LL |     let _: &'static _ = &id(&Panic);
+   |            ----------    ^^^^^^^^^^ creates a temporary value which is freed while still in use
+   |            |
+   |            type annotation requires that borrow lasts for `'static`
+...
+LL | }
+   | - temporary value is freed at the end of this statement
+
+error[E0716]: temporary value dropped while borrowed
+  --> $DIR/promoted_const_call.rs:13:30
+   |
+LL |     let _: &'static _ = &id(&Panic);
+   |            ----------        ^^^^^ - temporary value is freed at the end of this statement
+   |            |                 |
+   |            |                 creates a temporary value which is freed while still in use
+   |            type annotation requires that borrow lasts for `'static`
+
+error: aborting due to 4 previous errors
 
 For more information about this error, try `rustc --explain E0716`.
diff --git a/src/test/ui/consts/promoted_const_call2.rs b/src/test/ui/consts/promoted_const_call2.rs
index 7be0bcdf9e9..f332cd18cea 100644
--- a/src/test/ui/consts/promoted_const_call2.rs
+++ b/src/test/ui/consts/promoted_const_call2.rs
@@ -7,4 +7,8 @@ pub const C: () = {
     //~| ERROR: destructor of `String` cannot be evaluated at compile-time
 };
 
-fn main() {}
+fn main() {
+    let _: &'static _ = &id(&String::new());
+    //~^ ERROR: temporary value dropped while borrowed
+    //~| ERROR: temporary value dropped while borrowed
+}
diff --git a/src/test/ui/consts/promoted_const_call2.stderr b/src/test/ui/consts/promoted_const_call2.stderr
index b93c0862a25..13d864ed3db 100644
--- a/src/test/ui/consts/promoted_const_call2.stderr
+++ b/src/test/ui/consts/promoted_const_call2.stderr
@@ -18,13 +18,33 @@ LL |     let _: &'static _ = &id(&String::new());
    |            |                 creates a temporary value which is freed while still in use
    |            type annotation requires that borrow lasts for `'static`
 
+error[E0716]: temporary value dropped while borrowed
+  --> $DIR/promoted_const_call2.rs:11:26
+   |
+LL |     let _: &'static _ = &id(&String::new());
+   |            ----------    ^^^^^^^^^^^^^^^^^^ creates a temporary value which is freed while still in use
+   |            |
+   |            type annotation requires that borrow lasts for `'static`
+...
+LL | }
+   | - temporary value is freed at the end of this statement
+
+error[E0716]: temporary value dropped while borrowed
+  --> $DIR/promoted_const_call2.rs:11:30
+   |
+LL |     let _: &'static _ = &id(&String::new());
+   |            ----------        ^^^^^^^^^^^^^ - temporary value is freed at the end of this statement
+   |            |                 |
+   |            |                 creates a temporary value which is freed while still in use
+   |            type annotation requires that borrow lasts for `'static`
+
 error[E0493]: destructor of `String` cannot be evaluated at compile-time
   --> $DIR/promoted_const_call2.rs:4:30
    |
 LL |     let _: &'static _ = &id(&String::new());
    |                              ^^^^^^^^^^^^^ the destructor for this type cannot be evaluated in constants
 
-error: aborting due to 3 previous errors
+error: aborting due to 5 previous errors
 
 Some errors have detailed explanations: E0493, E0716.
 For more information about an error, try `rustc --explain E0493`.
diff --git a/src/test/ui/consts/promoted_const_call3.rs b/src/test/ui/consts/promoted_const_call3.rs
index 05381c751ee..6d68a2de70e 100644
--- a/src/test/ui/consts/promoted_const_call3.rs
+++ b/src/test/ui/consts/promoted_const_call3.rs
@@ -13,4 +13,14 @@ pub const C: () = {
     //~^ ERROR: temporary value dropped while borrowed
 };
 
-fn main() {}
+fn main() {
+    let _: &'static _ = &String::new();
+    //~^ ERROR: temporary value dropped while borrowed
+
+    let _: &'static _ = &id(&String::new());
+    //~^ ERROR: temporary value dropped while borrowed
+    //~| ERROR: temporary value dropped while borrowed
+
+    let _: &'static _ = &std::mem::ManuallyDrop::new(String::new());
+    //~^ ERROR: temporary value dropped while borrowed
+}
diff --git a/src/test/ui/consts/promoted_const_call3.stderr b/src/test/ui/consts/promoted_const_call3.stderr
index f6b4b26d21f..af17457a10a 100644
--- a/src/test/ui/consts/promoted_const_call3.stderr
+++ b/src/test/ui/consts/promoted_const_call3.stderr
@@ -57,7 +57,49 @@ LL |
 LL | };
    | - temporary value is freed at the end of this statement
 
-error: aborting due to 6 previous errors
+error[E0716]: temporary value dropped while borrowed
+  --> $DIR/promoted_const_call3.rs:17:26
+   |
+LL |     let _: &'static _ = &String::new();
+   |            ----------    ^^^^^^^^^^^^^ creates a temporary value which is freed while still in use
+   |            |
+   |            type annotation requires that borrow lasts for `'static`
+...
+LL | }
+   | - temporary value is freed at the end of this statement
+
+error[E0716]: temporary value dropped while borrowed
+  --> $DIR/promoted_const_call3.rs:20:26
+   |
+LL |     let _: &'static _ = &id(&String::new());
+   |            ----------    ^^^^^^^^^^^^^^^^^^ creates a temporary value which is freed while still in use
+   |            |
+   |            type annotation requires that borrow lasts for `'static`
+...
+LL | }
+   | - temporary value is freed at the end of this statement
+
+error[E0716]: temporary value dropped while borrowed
+  --> $DIR/promoted_const_call3.rs:20:30
+   |
+LL |     let _: &'static _ = &id(&String::new());
+   |            ----------        ^^^^^^^^^^^^^ - temporary value is freed at the end of this statement
+   |            |                 |
+   |            |                 creates a temporary value which is freed while still in use
+   |            type annotation requires that borrow lasts for `'static`
+
+error[E0716]: temporary value dropped while borrowed
+  --> $DIR/promoted_const_call3.rs:24:26
+   |
+LL |     let _: &'static _ = &std::mem::ManuallyDrop::new(String::new());
+   |            ----------    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 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 10 previous errors
 
 Some errors have detailed explanations: E0493, E0716.
 For more information about an error, try `rustc --explain E0493`.