summaryrefslogtreecommitdiffstats
path: root/tests/ui/c-variadic/variadic-ffi-4.stderr
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/c-variadic/variadic-ffi-4.stderr')
-rw-r--r--tests/ui/c-variadic/variadic-ffi-4.stderr150
1 files changed, 150 insertions, 0 deletions
diff --git a/tests/ui/c-variadic/variadic-ffi-4.stderr b/tests/ui/c-variadic/variadic-ffi-4.stderr
new file mode 100644
index 000000000..6f8e53298
--- /dev/null
+++ b/tests/ui/c-variadic/variadic-ffi-4.stderr
@@ -0,0 +1,150 @@
+error: lifetime may not live long enough
+ --> $DIR/variadic-ffi-4.rs:8:5
+ |
+LL | pub unsafe extern "C" fn no_escape0<'f>(_: usize, ap: ...) -> VaListImpl<'f> {
+ | -- -- has type `VaListImpl<'1>`
+ | |
+ | lifetime `'f` defined here
+LL | ap
+ | ^^ function was supposed to return data with lifetime `'1` but it is returning data with lifetime `'f`
+ |
+ = note: requirement occurs because of the type `VaListImpl<'_>`, which makes the generic argument `'_` invariant
+ = note: the struct `VaListImpl<'f>` is invariant over the parameter `'f`
+ = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
+
+error: lifetime may not live long enough
+ --> $DIR/variadic-ffi-4.rs:8:5
+ |
+LL | pub unsafe extern "C" fn no_escape0<'f>(_: usize, ap: ...) -> VaListImpl<'f> {
+ | -- -- has type `VaListImpl<'1>`
+ | |
+ | lifetime `'f` defined here
+LL | ap
+ | ^^ function was supposed to return data with lifetime `'f` but it is returning data with lifetime `'1`
+ |
+ = note: requirement occurs because of the type `VaListImpl<'_>`, which makes the generic argument `'_` invariant
+ = note: the struct `VaListImpl<'f>` is invariant over the parameter `'f`
+ = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
+
+error: lifetime may not live long enough
+ --> $DIR/variadic-ffi-4.rs:14:5
+ |
+LL | pub unsafe extern "C" fn no_escape1(_: usize, ap: ...) -> VaListImpl<'static> {
+ | -- has type `VaListImpl<'1>`
+LL | ap
+ | ^^ returning this value requires that `'1` must outlive `'static`
+ |
+ = note: requirement occurs because of the type `VaListImpl<'_>`, which makes the generic argument `'_` invariant
+ = note: the struct `VaListImpl<'f>` is invariant over the parameter `'f`
+ = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
+
+error: lifetime may not live long enough
+ --> $DIR/variadic-ffi-4.rs:18:31
+ |
+LL | let _ = ap.with_copy(|ap| ap);
+ | --- ^^ returning this value requires that `'1` must outlive `'2`
+ | | |
+ | | return type of closure is VaList<'2, '_>
+ | has type `VaList<'1, '_>`
+
+error: lifetime may not live long enough
+ --> $DIR/variadic-ffi-4.rs:22:5
+ |
+LL | pub unsafe extern "C" fn no_escape3(_: usize, mut ap0: &mut VaListImpl, mut ap1: ...) {
+ | ------- ------- has type `VaListImpl<'2>`
+ | |
+ | has type `&mut VaListImpl<'1>`
+LL | *ap0 = ap1;
+ | ^^^^ assignment requires that `'1` must outlive `'2`
+ |
+ = note: requirement occurs because of the type `VaListImpl<'_>`, which makes the generic argument `'_` invariant
+ = note: the struct `VaListImpl<'f>` is invariant over the parameter `'f`
+ = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
+
+error: lifetime may not live long enough
+ --> $DIR/variadic-ffi-4.rs:22:5
+ |
+LL | pub unsafe extern "C" fn no_escape3(_: usize, mut ap0: &mut VaListImpl, mut ap1: ...) {
+ | ------- ------- has type `VaListImpl<'2>`
+ | |
+ | has type `&mut VaListImpl<'1>`
+LL | *ap0 = ap1;
+ | ^^^^ assignment requires that `'2` must outlive `'1`
+ |
+ = note: requirement occurs because of the type `VaListImpl<'_>`, which makes the generic argument `'_` invariant
+ = note: the struct `VaListImpl<'f>` is invariant over the parameter `'f`
+ = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
+
+error: lifetime may not live long enough
+ --> $DIR/variadic-ffi-4.rs:28:5
+ |
+LL | pub unsafe extern "C" fn no_escape4(_: usize, mut ap0: &mut VaListImpl, mut ap1: ...) {
+ | ------- ------- has type `VaListImpl<'2>`
+ | |
+ | has type `&mut VaListImpl<'1>`
+LL | ap0 = &mut ap1;
+ | ^^^^^^^^^^^^^^ assignment requires that `'1` must outlive `'2`
+ |
+ = note: requirement occurs because of a mutable reference to `VaListImpl<'_>`
+ = note: mutable references are invariant over their type parameter
+ = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
+
+error: lifetime may not live long enough
+ --> $DIR/variadic-ffi-4.rs:28:5
+ |
+LL | pub unsafe extern "C" fn no_escape4(_: usize, mut ap0: &mut VaListImpl, mut ap1: ...) {
+ | ------- ------- has type `VaListImpl<'2>`
+ | |
+ | has type `&mut VaListImpl<'1>`
+LL | ap0 = &mut ap1;
+ | ^^^^^^^^^^^^^^ assignment requires that `'2` must outlive `'1`
+ |
+ = note: requirement occurs because of a mutable reference to `VaListImpl<'_>`
+ = note: mutable references are invariant over their type parameter
+ = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
+
+error[E0597]: `ap1` does not live long enough
+ --> $DIR/variadic-ffi-4.rs:28:11
+ |
+LL | pub unsafe extern "C" fn no_escape4(_: usize, mut ap0: &mut VaListImpl, mut ap1: ...) {
+ | - let's call the lifetime of this reference `'3`
+LL | ap0 = &mut ap1;
+ | ------^^^^^^^^
+ | | |
+ | | borrowed value does not live long enough
+ | assignment requires that `ap1` is borrowed for `'3`
+...
+LL | }
+ | - `ap1` dropped here while still borrowed
+
+error: lifetime may not live long enough
+ --> $DIR/variadic-ffi-4.rs:35:12
+ |
+LL | pub unsafe extern "C" fn no_escape5(_: usize, mut ap0: &mut VaListImpl, mut ap1: ...) {
+ | ------- ------- has type `VaListImpl<'2>`
+ | |
+ | has type `&mut VaListImpl<'1>`
+LL | *ap0 = ap1.clone();
+ | ^^^^^^^^^^^ argument requires that `'1` must outlive `'2`
+ |
+ = note: requirement occurs because of the type `VaListImpl<'_>`, which makes the generic argument `'_` invariant
+ = note: the struct `VaListImpl<'f>` is invariant over the parameter `'f`
+ = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
+
+error: lifetime may not live long enough
+ --> $DIR/variadic-ffi-4.rs:35:12
+ |
+LL | pub unsafe extern "C" fn no_escape5(_: usize, mut ap0: &mut VaListImpl, mut ap1: ...) {
+ | ------- ------- has type `VaListImpl<'2>`
+ | |
+ | has type `&mut VaListImpl<'1>`
+LL | *ap0 = ap1.clone();
+ | ^^^^^^^^^^^ argument requires that `'2` must outlive `'1`
+ |
+ = note: requirement occurs because of the type `VaListImpl<'_>`, which makes the generic argument `'_` invariant
+ = note: the struct `VaListImpl<'f>` is invariant over the parameter `'f`
+ = help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
+
+error: aborting due to 11 previous errors
+
+For more information about this error, try `rustc --explain E0597`.