blob: bd4533e0433ff8a4084dc1736c67b4bc22b883cd (
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
|
// Check that incorrect higher ranked subtyping
// causes an error.
struct Inv<'a>(fn(&'a ()) -> &'a ());
fn hr_subtype<'c>(f: for<'a, 'b> fn(Inv<'a>, Inv<'a>)) {
// ok
let _: for<'a> fn(Inv<'a>, Inv<'a>) = f;
let sub: for<'a> fn(Inv<'a>, Inv<'a>) = f;
// no
let _: for<'a, 'b> fn(Inv<'a>, Inv<'b>) = sub;
//~^ ERROR mismatched types
}
fn simple1<'c>(x: (&'c i32,)) {
let _x: (&'static i32,) = x;
}
fn simple2<'c>(x: (&'c i32,)) {
let _: (&'static i32,) = x;
}
fn main() {
hr_subtype(|_, _| {});
simple1((&3,));
simple2((&3,));
}
|