]>
Commit | Line | Data |
---|---|---|
b7449926 | 1 | // run-pass |
1bb2cb6e SL |
2 | // This tests for an ICE (and, if ignored, subsequent LLVM abort) when |
3 | // a lifetime-parametric fn is passed into a context whose expected | |
4 | // type has a differing lifetime parameterization. | |
5 | ||
6 | struct A<'a> { | |
7 | _a: &'a i32, | |
8 | } | |
9 | ||
10 | fn call<T>(s: T, functions: &Vec<for <'n> fn(&'n T)>) { | |
11 | for function in functions { | |
12 | function(&s); | |
13 | } | |
14 | } | |
15 | ||
16 | fn f(a: &A) { println!("a holds {}", a._a); } | |
17 | ||
18 | fn main() { | |
19 | let a = A { _a: &10 }; | |
20 | ||
21 | let vec: Vec<for <'u,'v> fn(&'u A<'v>)> = vec![f]; | |
22 | call(a, &vec); | |
23 | } |