]> git.lizzy.rs Git - rust.git/blob - src/test/ui/nll/ty-outlives/projection-no-regions-fn.rs
Don't ICE on tuple struct ctor with incorrect arg count
[rust.git] / src / test / ui / nll / ty-outlives / projection-no-regions-fn.rs
1 // Copyright 2016 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
4 //
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
10
11 // compile-flags:-Zborrowck=mir -Zverbose
12
13 #![allow(warnings)]
14 #![feature(dyn_trait)]
15
16 trait Anything { }
17
18 impl<T> Anything for T { }
19
20 fn no_region<'a, T>(mut x: T) -> Box<dyn Anything + 'a>
21 where
22     T: Iterator,
23 {
24     Box::new(x.next())
25     //~^ WARNING not reporting region error due to nll
26     //~| the associated type `<T as std::iter::Iterator>::Item` may not live long enough
27 }
28
29 fn correct_region<'a, T>(mut x: T) -> Box<dyn Anything + 'a>
30 where
31     T: 'a + Iterator,
32 {
33     Box::new(x.next())
34 }
35
36 fn wrong_region<'a, 'b, T>(mut x: T) -> Box<dyn Anything + 'a>
37 where
38     T: 'b + Iterator,
39 {
40     Box::new(x.next())
41     //~^ WARNING not reporting region error due to nll
42     //~| the associated type `<T as std::iter::Iterator>::Item` may not live long enough
43 }
44
45 fn outlives_region<'a, 'b, T>(mut x: T) -> Box<dyn Anything + 'a>
46 where
47     T: 'b + Iterator,
48     'b: 'a,
49 {
50     Box::new(x.next())
51 }
52
53 fn main() {}