// Test that we do not get a privacy error here. Initially, we did, | |
// because we inferred an outlives predciate of `<Foo<'a> as | |
// Private>::Out: 'a`, but the private trait is -- well -- private, | |
// and hence it was not something that a pub trait could refer to. | |
// | |
//@ run-pass | |
#![allow(dead_code)] | |
pub struct Foo<'a> { | |
field: Option<&'a <Foo<'a> as Private>::Out> | |
} | |
trait Private { | |
type Out: ?Sized; | |
} | |
impl<T: ?Sized> Private for T { type Out = Self; } | |
fn main() { } |