// run-pass
#![allow(unused_variables)]
// Check that a trait is still object-safe (and usable) if it has
// generic methods so long as they require `Self : Sized`.


trait Counter {
    fn tick(&mut self) -> u32;
    fn with<F:FnOnce(u32)>(&self, f: F) where Self : Sized;
}

struct CCounter {
    c: u32
}

impl Counter for CCounter {
    fn tick(&mut self) -> u32 { self.c += 1; self.c }
    fn with<F:FnOnce(u32)>(&self, f: F) { f(self.c); }
}

fn tick1<C:Counter>(c: &mut C) {
    tick2(c);
    c.with(|i| ());
}

fn tick2(c: &mut dyn Counter) {
    tick3(c);
}

fn tick3<C:?Sized+Counter>(c: &mut C) {
    c.tick();
    c.tick();
}

fn main() {
    let mut c = CCounter { c: 0 };
    tick1(&mut c);
    assert_eq!(c.tick(), 3);
}
