about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRalf Jung <post@ralfj.de>2018-09-30 20:25:19 +0200
committerRalf Jung <post@ralfj.de>2018-09-30 20:28:00 +0200
commit4cbfc9398d93d9eb0b1178b129f80de9be5c8ef9 (patch)
tree2093c48548176925a8e04ffe76afd5c740468403
parent1397836380555850ec4c34419682e312e41a4e26 (diff)
downloadrust-4cbfc9398d93d9eb0b1178b129f80de9be5c8ef9.tar.gz
rust-4cbfc9398d93d9eb0b1178b129f80de9be5c8ef9.zip
also compile-fail test fn ptr comparison promotion
-rw-r--r--src/test/ui/consts/const-eval/promoted_raw_ptr_ops.nll.stderr15
-rw-r--r--src/test/ui/consts/const-eval/promoted_raw_ptr_ops.rs1
-rw-r--r--src/test/ui/consts/const-eval/promoted_raw_ptr_ops.stderr15
3 files changed, 27 insertions, 4 deletions
diff --git a/src/test/ui/consts/const-eval/promoted_raw_ptr_ops.nll.stderr b/src/test/ui/consts/const-eval/promoted_raw_ptr_ops.nll.stderr
index bc8a99f5548..f31d962852e 100644
--- a/src/test/ui/consts/const-eval/promoted_raw_ptr_ops.nll.stderr
+++ b/src/test/ui/consts/const-eval/promoted_raw_ptr_ops.nll.stderr
@@ -14,7 +14,7 @@ error[E0716]: temporary value dropped while borrowed
    |
 LL |     let y: &'static usize = &(&1 as *const i32 as usize + 1); //~ ERROR does not live long enough
    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ creates a temporary which is freed while still in use
-LL |     let z: &'static i32 = &(unsafe { *(42 as *const i32) }); //~ ERROR does not live long enough
+...
 LL | }
    | - temporary value is freed at the end of this statement
    |
@@ -25,11 +25,22 @@ error[E0716]: temporary value dropped while borrowed
    |
 LL |     let z: &'static i32 = &(unsafe { *(42 as *const i32) }); //~ ERROR does not live long enough
    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ creates a temporary which is freed while still in use
+LL |     let a: &'static bool = &(main as fn() == main as fn()); //~ ERROR does not live long enough
+LL | }
+   | - temporary value is freed at the end of this statement
+   |
+   = note: borrowed value must be valid for the static lifetime...
+
+error[E0716]: temporary value dropped while borrowed
+  --> $DIR/promoted_raw_ptr_ops.rs:18:29
+   |
+LL |     let a: &'static bool = &(main as fn() == main as fn()); //~ ERROR does not live long enough
+   |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ creates a temporary which is freed while still in use
 LL | }
    | - temporary value is freed at the end of this statement
    |
    = note: borrowed value must be valid for the static lifetime...
 
-error: aborting due to 3 previous errors
+error: aborting due to 4 previous errors
 
 For more information about this error, try `rustc --explain E0716`.
diff --git a/src/test/ui/consts/const-eval/promoted_raw_ptr_ops.rs b/src/test/ui/consts/const-eval/promoted_raw_ptr_ops.rs
index 3b437f69d8d..c915886ca25 100644
--- a/src/test/ui/consts/const-eval/promoted_raw_ptr_ops.rs
+++ b/src/test/ui/consts/const-eval/promoted_raw_ptr_ops.rs
@@ -15,4 +15,5 @@ fn main() {
     //~^ ERROR does not live long enough
     let y: &'static usize = &(&1 as *const i32 as usize + 1); //~ ERROR does not live long enough
     let z: &'static i32 = &(unsafe { *(42 as *const i32) }); //~ ERROR does not live long enough
+    let a: &'static bool = &(main as fn() == main as fn()); //~ ERROR does not live long enough
 }
diff --git a/src/test/ui/consts/const-eval/promoted_raw_ptr_ops.stderr b/src/test/ui/consts/const-eval/promoted_raw_ptr_ops.stderr
index 90c73c095fb..baf12c5ac59 100644
--- a/src/test/ui/consts/const-eval/promoted_raw_ptr_ops.stderr
+++ b/src/test/ui/consts/const-eval/promoted_raw_ptr_ops.stderr
@@ -14,7 +14,7 @@ error[E0597]: borrowed value does not live long enough
    |
 LL |     let y: &'static usize = &(&1 as *const i32 as usize + 1); //~ ERROR does not live long enough
    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ temporary value does not live long enough
-LL |     let z: &'static i32 = &(unsafe { *(42 as *const i32) }); //~ ERROR does not live long enough
+...
 LL | }
    | - temporary value only lives until here
    |
@@ -25,11 +25,22 @@ error[E0597]: borrowed value does not live long enough
    |
 LL |     let z: &'static i32 = &(unsafe { *(42 as *const i32) }); //~ ERROR does not live long enough
    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ temporary value does not live long enough
+LL |     let a: &'static bool = &(main as fn() == main as fn()); //~ ERROR does not live long enough
+LL | }
+   | - temporary value only lives until here
+   |
+   = note: borrowed value must be valid for the static lifetime...
+
+error[E0597]: borrowed value does not live long enough
+  --> $DIR/promoted_raw_ptr_ops.rs:18:29
+   |
+LL |     let a: &'static bool = &(main as fn() == main as fn()); //~ ERROR does not live long enough
+   |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ temporary value does not live long enough
 LL | }
    | - temporary value only lives until here
    |
    = note: borrowed value must be valid for the static lifetime...
 
-error: aborting due to 3 previous errors
+error: aborting due to 4 previous errors
 
 For more information about this error, try `rustc --explain E0597`.