2 #![deny(explicit_outlives_requirements)]
5 // These examples should live in edition-lint-infer-outlives.rs, but are split
6 // into this separate file because they can't be `rustfix`'d (and thus, can't
7 // be part of a `run-rustfix` test file) until rust-lang-nursery/rustfix#141
13 struct TeeOutlivesAyIsDebugBee<'a, 'b, T: 'a + Debug + 'b> {
14 //~^ ERROR outlives requirements can be inferred
18 struct TeeWhereOutlivesAyIsDebugBee<'a, 'b, T> where T: 'a + Debug + 'b {
19 //~^ ERROR outlives requirements can be inferred
23 struct TeeYooOutlivesAyIsDebugBee<'a, 'b, T, U: 'a + Debug + 'b> {
24 //~^ ERROR outlives requirements can be inferred
29 struct TeeOutlivesAyYooBeeIsDebug<'a, 'b, T: 'a, U: 'b + Debug> {
30 //~^ ERROR outlives requirements can be inferred
35 struct TeeOutlivesAyYooIsDebugBee<'a, 'b, T: 'a, U: Debug + 'b> {
36 //~^ ERROR outlives requirements can be inferred
41 struct TeeOutlivesAyYooWhereBee<'a, 'b, T: 'a, U> where U: 'b {
42 //~^ ERROR outlives requirements can be inferred
47 struct TeeYooWhereOutlivesAyIsDebugBee<'a, 'b, T, U> where U: 'a + Debug + 'b {
48 //~^ ERROR outlives requirements can be inferred
53 struct TeeOutlivesAyYooWhereBeeIsDebug<'a, 'b, T: 'a, U> where U: 'b + Debug {
54 //~^ ERROR outlives requirements can be inferred
59 struct TeeOutlivesAyYooWhereIsDebugBee<'a, 'b, T: 'a, U> where U: Debug + 'b {
60 //~^ ERROR outlives requirements can be inferred
65 struct TeeWhereOutlivesAyYooWhereBeeIsDebug<'a, 'b, T, U> where T: 'a, U: 'b + Debug {
66 //~^ ERROR outlives requirements can be inferred
71 struct TeeWhereOutlivesAyYooWhereIsDebugBee<'a, 'b, T, U> where T: 'a, U: Debug + 'b {
72 //~^ ERROR outlives requirements can be inferred
77 struct BeeOutlivesAyTeeBee<'a, 'b: 'a, T: 'b> {
78 //~^ ERROR outlives requirements can be inferred
82 struct BeeOutlivesAyTeeAyBee<'a, 'b: 'a, T: 'a + 'b> {
83 //~^ ERROR outlives requirements can be inferred
87 struct BeeOutlivesAyTeeOutlivesAyIsDebugBee<'a, 'b: 'a, T: 'a + Debug + 'b> {
88 //~^ ERROR outlives requirements can be inferred
92 struct BeeWhereAyTeeWhereOutlivesAyIsDebugBee<'a, 'b, T> where 'b: 'a, T: 'a + Debug + 'b {
93 //~^ ERROR outlives requirements can be inferred
97 struct BeeOutlivesAyTeeYooOutlivesAyIsDebugBee<'a, 'b: 'a, T, U: 'a + Debug + 'b> {
98 //~^ ERROR outlives requirements can be inferred
103 struct BeeWhereAyTeeYooWhereOutlivesAyIsDebugBee<'a, 'b, T, U>
104 where U: 'a + Debug + 'b, 'b: 'a
105 //~^ ERROR outlives requirements can be inferred
115 struct TeeOutlivesAyIsDebugBee<'a, 'b, T: 'a + Debug + 'b>(&'a &'b T);
116 //~^ ERROR outlives requirements can be inferred
118 struct TeeWhereOutlivesAyIsDebugBee<'a, 'b, T>(&'a &'b T) where T: 'a + Debug + 'b;
119 //~^ ERROR outlives requirements can be inferred
121 struct TeeYooOutlivesAyIsDebugBee<'a, 'b, T, U: 'a + Debug + 'b>(T, &'a &'b U);
122 //~^ ERROR outlives requirements can be inferred
124 struct TeeOutlivesAyYooBeeIsDebug<'a, 'b, T: 'a, U: 'b + Debug>(&'a T, &'b U);
125 //~^ ERROR outlives requirements can be inferred
127 struct TeeOutlivesAyYooIsDebugBee<'a, 'b, T: 'a, U: Debug + 'b>(&'a T, &'b U);
128 //~^ ERROR outlives requirements can be inferred
130 struct TeeOutlivesAyYooWhereBee<'a, 'b, T: 'a, U>(&'a T, &'b U) where U: 'b;
131 //~^ ERROR outlives requirements can be inferred
133 struct TeeYooWhereOutlivesAyIsDebugBee<'a, 'b, T, U>(T, &'a &'b U) where U: 'a + Debug + 'b;
134 //~^ ERROR outlives requirements can be inferred
136 struct TeeOutlivesAyYooWhereBeeIsDebug<'a, 'b, T: 'a, U>(&'a T, &'b U) where U: 'b + Debug;
137 //~^ ERROR outlives requirements can be inferred
139 struct TeeOutlivesAyYooWhereIsDebugBee<'a, 'b, T: 'a, U>(&'a T, &'b U) where U: Debug + 'b;
140 //~^ ERROR outlives requirements can be inferred
142 struct TeeWhereAyYooWhereBeeIsDebug<'a, 'b, T, U>(&'a T, &'b U) where T: 'a, U: 'b + Debug;
143 //~^ ERROR outlives requirements can be inferred
145 struct TeeWhereAyYooWhereIsDebugBee<'a, 'b, T, U>(&'a T, &'b U) where T: 'a, U: Debug + 'b;
146 //~^ ERROR outlives requirements can be inferred
148 struct BeeOutlivesAyTeeBee<'a, 'b: 'a, T: 'b>(&'a &'b T);
149 //~^ ERROR outlives requirements can be inferred
151 struct BeeOutlivesAyTeeAyBee<'a, 'b: 'a, T: 'a + 'b>(&'a &'b T);
152 //~^ ERROR outlives requirements can be inferred
154 struct BeeOutlivesAyTeeOutlivesAyIsDebugBee<'a, 'b: 'a, T: 'a + Debug + 'b>(&'a &'b T);
155 //~^ ERROR outlives requirements can be inferred
157 struct BeeWhereAyTeeWhereAyIsDebugBee<'a, 'b, T>(&'a &'b T) where 'b: 'a, T: 'a + Debug + 'b;
158 //~^ ERROR outlives requirements can be inferred
160 struct BeeOutlivesAyTeeYooOutlivesAyIsDebugBee<'a, 'b: 'a, T, U: 'a + Debug + 'b>(T, &'a &'b U);
161 //~^ ERROR outlives requirements can be inferred
163 struct BeeWhereAyTeeYooWhereAyIsDebugBee<'a, 'b, T, U>(T, &'a &'b U)
164 where U: 'a + Debug + 'b, 'b: 'a;
165 //~^ ERROR outlives requirements can be inferred
171 enum TeeOutlivesAyIsDebugBee<'a, 'b, T: 'a + Debug + 'b> {
172 //~^ ERROR outlives requirements can be inferred
173 V { tee: &'a &'b T },
176 enum TeeWhereOutlivesAyIsDebugBee<'a, 'b, T> where T: 'a + Debug + 'b {
177 //~^ ERROR outlives requirements can be inferred
181 enum TeeYooOutlivesAyIsDebugBee<'a, 'b, T, U: 'a + Debug + 'b> {
182 //~^ ERROR outlives requirements can be inferred
187 enum TeeOutlivesAyYooBeeIsDebug<'a, 'b, T: 'a, U: 'b + Debug> {
188 //~^ ERROR outlives requirements can be inferred
189 V { tee: &'a T, yoo: &'b U },
193 enum TeeOutlivesAyYooIsDebugBee<'a, 'b, T: 'a, U: Debug + 'b> {
194 //~^ ERROR outlives requirements can be inferred
199 enum TeeOutlivesAyYooWhereBee<'a, 'b, T: 'a, U> where U: 'b {
200 //~^ ERROR outlives requirements can be inferred
205 enum TeeYooWhereOutlivesAyIsDebugBee<'a, 'b, T, U> where U: 'a + Debug + 'b {
206 //~^ ERROR outlives requirements can be inferred
207 V { tee: T, yoo: &'a &'b U },
211 enum TeeOutlivesAyYooWhereBeeIsDebug<'a, 'b, T: 'a, U> where U: 'b + Debug {
212 //~^ ERROR outlives requirements can be inferred
217 enum TeeOutlivesAyYooWhereIsDebugBee<'a, 'b, T: 'a, U> where U: Debug + 'b {
218 //~^ ERROR outlives requirements can be inferred
223 enum TeeWhereOutlivesAyYooWhereBeeIsDebug<'a, 'b, T, U> where T: 'a, U: 'b + Debug {
224 //~^ ERROR outlives requirements can be inferred
225 V { tee: &'a T, yoo: &'b U },
229 enum TeeWhereOutlivesAyYooWhereIsDebugBee<'a, 'b, T, U> where T: 'a, U: Debug + 'b {
230 //~^ ERROR outlives requirements can be inferred
235 enum BeeOutlivesAyTeeBee<'a, 'b: 'a, T: 'b> {
236 //~^ ERROR outlives requirements can be inferred
237 V { tee: &'a &'b T },
240 enum BeeOutlivesAyTeeAyBee<'a, 'b: 'a, T: 'a + 'b> {
241 //~^ ERROR outlives requirements can be inferred
242 V { tee: &'a &'b T },
246 enum BeeOutlivesAyTeeOutlivesAyIsDebugBee<'a, 'b: 'a, T: 'a + Debug + 'b> {
247 //~^ ERROR outlives requirements can be inferred
248 V { tee: &'a &'b T },
251 enum BeeWhereAyTeeWhereOutlivesAyIsDebugBee<'a, 'b, T> where 'b: 'a, T: 'a + Debug + 'b {
252 //~^ ERROR outlives requirements can be inferred
256 enum BeeOutlivesAyTeeYooOutlivesAyIsDebugBee<'a, 'b: 'a, T, U: 'a + Debug + 'b> {
257 //~^ ERROR outlives requirements can be inferred
262 enum BeeWhereAyTeeYooWhereOutlivesAyIsDebugBee<'a, 'b, T, U> where U: 'a + Debug + 'b, 'b: 'a {
263 //~^ ERROR outlives requirements can be inferred
264 V { tee: T, yoo: &'a &'b U },
271 union TeeOutlivesAyIsDebugBee<'a, 'b, T: 'a + Debug + 'b> {
272 //~^ ERROR outlives requirements can be inferred
276 union TeeWhereOutlivesAyIsDebugBee<'a, 'b, T> where T: 'a + Debug + 'b {
277 //~^ ERROR outlives requirements can be inferred
281 union TeeYooOutlivesAyIsDebugBee<'a, 'b, T, U: 'a + Debug + 'b> {
282 //~^ ERROR outlives requirements can be inferred
287 union TeeOutlivesAyYooBeeIsDebug<'a, 'b, T: 'a, U: 'b + Debug> {
288 //~^ ERROR outlives requirements can be inferred
293 union TeeOutlivesAyYooIsDebugBee<'a, 'b, T: 'a, U: Debug + 'b> {
294 //~^ ERROR outlives requirements can be inferred
299 union TeeOutlivesAyYooWhereBee<'a, 'b, T: 'a, U> where U: 'b {
300 //~^ ERROR outlives requirements can be inferred
305 union TeeYooWhereOutlivesAyIsDebugBee<'a, 'b, T, U> where U: 'a + Debug + 'b {
306 //~^ ERROR outlives requirements can be inferred
311 union TeeOutlivesAyYooWhereBeeIsDebug<'a, 'b, T: 'a, U> where U: 'b + Debug {
312 //~^ ERROR outlives requirements can be inferred
317 union TeeOutlivesAyYooWhereIsDebugBee<'a, 'b, T: 'a, U> where U: Debug + 'b {
318 //~^ ERROR outlives requirements can be inferred
323 union TeeWhereOutlivesAyYooWhereBeeIsDebug<'a, 'b, T, U> where T: 'a, U: 'b + Debug {
324 //~^ ERROR outlives requirements can be inferred
329 union TeeWhereOutlivesAyYooWhereIsDebugBee<'a, 'b, T, U> where T: 'a, U: Debug + 'b {
330 //~^ ERROR outlives requirements can be inferred
335 union BeeOutlivesAyTeeBee<'a, 'b: 'a, T: 'b> {
336 //~^ ERROR outlives requirements can be inferred
340 union BeeOutlivesAyTeeAyBee<'a, 'b: 'a, T: 'a + 'b> {
341 //~^ ERROR outlives requirements can be inferred
345 union BeeOutlivesAyTeeOutlivesAyIsDebugBee<'a, 'b: 'a, T: 'a + Debug + 'b> {
346 //~^ ERROR outlives requirements can be inferred
350 union BeeWhereAyTeeWhereOutlivesAyIsDebugBee<'a, 'b, T> where 'b: 'a, T: 'a + Debug + 'b {
351 //~^ ERROR outlives requirements can be inferred
355 union BeeOutlivesAyTeeYooOutlivesAyIsDebugBee<'a, 'b: 'a, T, U: 'a + Debug + 'b> {
356 //~^ ERROR outlives requirements can be inferred
361 union BeeWhereAyTeeYooWhereOutlivesAyIsDebugBee<'a, 'b, T, U> where U: 'a + Debug + 'b, 'b: 'a {
362 //~^ ERROR outlives requirements can be inferred