]> git.lizzy.rs Git - rust.git/blob - src/test/compile-fail/E0657.rs
Fix impl Trait Lifetime Handling
[rust.git] / src / test / compile-fail / E0657.rs
1 // Copyright 2017 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 #![allow(warnings)]
11 #![feature(conservative_impl_trait)]
12
13 trait Id<T> {}
14 trait Lt<'a> {}
15
16 impl<'a> Lt<'a> for () {}
17 impl<T> Id<T> for T {}
18
19 fn free_fn_capture_hrtb_in_impl_trait()
20     -> impl for<'a> Id<impl Lt<'a>>
21         //~^ ERROR `impl Trait` can only capture lifetimes bound at the fn or impl level [E0657]
22 {
23     ()
24 }
25
26 struct Foo;
27 impl Foo {
28     fn impl_fn_capture_hrtb_in_impl_trait()
29         -> impl for<'a> Id<impl Lt<'a>>
30             //~^ ERROR `impl Trait` can only capture lifetimes bound at the fn or impl level
31     {
32         ()
33     }
34 }
35
36 fn main() {}