// run-pass
// Tests that you can use a fn lifetime parameter as part of
// the value for a type parameter in a bound.


trait GetRef<'a> {
    fn get(&self) -> &'a isize;
}

#[derive(Copy, Clone)]
struct Box<'a> {
    t: &'a isize
}

impl<'a> GetRef<'a> for Box<'a> {
    fn get(&self) -> &'a isize {
        self.t
    }
}

impl<'a> Box<'a> {
    fn add<'b,G:GetRef<'b>>(&self, g2: G) -> isize {
        *self.t + *g2.get()
    }
}

pub fn main() {
    let b1 = Box { t: &3 };
    assert_eq!(b1.add(b1), 6);
}
