// run-pass

#![allow(dead_code)]
// If we use GEPi rather than GEP_tup_like when
// storing closure data (as we used to do), the u64 would
// overwrite the u16.

#![feature(box_syntax)]

struct Pair<A,B> {
    a: A, b: B
}

struct Invoker<A> {
    a: A,
    b: u16,
}

trait Invokable<A> {
    fn f(&self) -> (A, u16);
}

impl<A:Clone> Invokable<A> for Invoker<A> {
    fn f(&self) -> (A, u16) {
        (self.a.clone(), self.b)
    }
}

fn f<A:Clone + 'static>(a: A, b: u16) -> Box<dyn Invokable<A>+'static> {
    box Invoker {
        a: a,
        b: b,
    } as Box<dyn Invokable<A>+'static>
}

pub fn main() {
    let (a, b) = f(22_u64, 44u16).f();
    println!("a={} b={}", a, b);
    assert_eq!(a, 22u64);
    assert_eq!(b, 44u16);
}
