2015-08-07 17:25:23 +00:00
|
|
|
// Along with the other tests in this series, illustrates the
|
|
|
|
// "projection gap": in this test, we know that `T::Foo: 'x`, and that
|
|
|
|
// is (naturally) enough to conclude that `T::Foo: 'x`.
|
|
|
|
|
2020-10-30 14:34:12 +00:00
|
|
|
//@ check-pass
|
2015-08-07 17:25:23 +00:00
|
|
|
#![allow(dead_code)]
|
|
|
|
#![allow(unused_variables)]
|
|
|
|
|
|
|
|
trait Trait1<'x> {
|
|
|
|
type Foo;
|
|
|
|
}
|
|
|
|
|
|
|
|
// calling this fn should trigger a check that the type argument
|
|
|
|
// supplied is well-formed.
|
|
|
|
fn wf<T>() { }
|
|
|
|
|
|
|
|
fn func<'x, T:Trait1<'x>>(t: &'x T::Foo)
|
|
|
|
{
|
|
|
|
wf::<&'x T::Foo>();
|
|
|
|
}
|
|
|
|
|
2018-10-31 12:08:01 +00:00
|
|
|
|
|
|
|
fn main() { }
|