summary refs log tree commit diff
path: root/src/test/ui/c-variadic/variadic-ffi-4.nll.stderr
blob: 8b70b15fa6e50e8e7b8dcbe776908785e1e42d66 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
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 `core::ffi::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`

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 `core::ffi::VaListImpl<'1>`
   |                                     |
   |                                     lifetime `'f` defined here
LL |     ap
   |     ^^ returning this value requires that `'1` must outlive `'f`

error: lifetime may not live long enough
  --> $DIR/variadic-ffi-4.rs:12:5
   |
LL | pub unsafe extern "C" fn no_escape1(_: usize, ap: ...) -> VaListImpl<'static> {
   |                                               -- has type `core::ffi::VaListImpl<'1>`
LL |     ap
   |     ^^ returning this value requires that `'1` must outlive `'static`

error: lifetime may not live long enough
  --> $DIR/variadic-ffi-4.rs:16:33
   |
LL |     let _ = ap.with_copy(|ap| { ap });
   |                           ---   ^^ returning this value requires that `'1` must outlive `'2`
   |                           | |
   |                           | return type of closure is core::ffi::VaList<'2, '_>
   |                           has type `core::ffi::VaList<'1, '_>`

error: lifetime may not live long enough
  --> $DIR/variadic-ffi-4.rs:20:5
   |
LL | pub unsafe extern "C" fn no_escape3(_: usize, mut ap0: &mut VaListImpl, mut ap1: ...) {
   |                                               -------                   ------- has type `core::ffi::VaListImpl<'2>`
   |                                               |
   |                                               has type `&mut core::ffi::VaListImpl<'1>`
LL |     *ap0 = ap1;
   |     ^^^^ assignment requires that `'1` must outlive `'2`

error: lifetime may not live long enough
  --> $DIR/variadic-ffi-4.rs:20:5
   |
LL | pub unsafe extern "C" fn no_escape3(_: usize, mut ap0: &mut VaListImpl, mut ap1: ...) {
   |                                               -------                   ------- has type `core::ffi::VaListImpl<'2>`
   |                                               |
   |                                               has type `&mut core::ffi::VaListImpl<'1>`
LL |     *ap0 = ap1;
   |     ^^^^ assignment requires that `'2` must outlive `'1`

error: lifetime may not live long enough
  --> $DIR/variadic-ffi-4.rs:24:5
   |
LL | pub unsafe extern "C" fn no_escape4(_: usize, ap0: &mut VaListImpl, mut ap1: ...) {
   |                                               ---                   ------- has type `core::ffi::VaListImpl<'2>`
   |                                               |
   |                                               has type `&mut core::ffi::VaListImpl<'1>`
LL |     ap0 = &mut ap1;
   |     ^^^^^^^^^^^^^^ assignment requires that `'1` must outlive `'2`

error: lifetime may not live long enough
  --> $DIR/variadic-ffi-4.rs:24:5
   |
LL | pub unsafe extern "C" fn no_escape4(_: usize, ap0: &mut VaListImpl, mut ap1: ...) {
   |                                               ---                   ------- has type `core::ffi::VaListImpl<'2>`
   |                                               |
   |                                               has type `&mut core::ffi::VaListImpl<'1>`
LL |     ap0 = &mut ap1;
   |     ^^^^^^^^^^^^^^ assignment requires that `'2` must outlive `'1`

error[E0384]: cannot assign to immutable argument `ap0`
  --> $DIR/variadic-ffi-4.rs:24:5
   |
LL | pub unsafe extern "C" fn no_escape4(_: usize, ap0: &mut VaListImpl, mut ap1: ...) {
   |                                               --- help: make this binding mutable: `mut ap0`
LL |     ap0 = &mut ap1;
   |     ^^^^^^^^^^^^^^ cannot assign to immutable argument

error[E0597]: `ap1` does not live long enough
  --> $DIR/variadic-ffi-4.rs:24:11
   |
LL | pub unsafe extern "C" fn no_escape4(_: usize, ap0: &mut VaListImpl, mut ap1: ...) {
   |                                                    - let's call the lifetime of this reference `'1`
LL |     ap0 = &mut ap1;
   |     ------^^^^^^^^
   |     |     |
   |     |     borrowed value does not live long enough
   |     assignment requires that `ap1` is borrowed for `'1`
...
LL | }
   | - `ap1` dropped here while still borrowed

error: lifetime may not live long enough
  --> $DIR/variadic-ffi-4.rs:31:12
   |
LL | pub unsafe extern "C" fn no_escape5(_: usize, mut ap0: &mut VaListImpl, mut ap1: ...) {
   |                                               -------                   ------- has type `core::ffi::VaListImpl<'2>`
   |                                               |
   |                                               has type `&mut core::ffi::VaListImpl<'1>`
LL |     *ap0 = ap1.clone();
   |            ^^^^^^^^^^^ argument requires that `'1` must outlive `'2`

error: lifetime may not live long enough
  --> $DIR/variadic-ffi-4.rs:31:12
   |
LL | pub unsafe extern "C" fn no_escape5(_: usize, mut ap0: &mut VaListImpl, mut ap1: ...) {
   |                                               -------                   ------- has type `core::ffi::VaListImpl<'2>`
   |                                               |
   |                                               has type `&mut core::ffi::VaListImpl<'1>`
LL |     *ap0 = ap1.clone();
   |            ^^^^^^^^^^^ argument requires that `'2` must outlive `'1`

error: aborting due to 12 previous errors

Some errors have detailed explanations: E0384, E0597.
For more information about an error, try `rustc --explain E0384`.