blob: 22b9dde8cbe5c9e1107d39a452b7dfe982ccccaf [file] [log] [blame]
// Regression test for #23827
#![feature(core, fn_traits, unboxed_closures)]
pub struct Prototype {
pub target: u32
}
trait Component {
fn apply(self, e: u32);
}
impl<C: Component> Fn<(C,)> for Prototype {
extern "rust-call" fn call(&self, (comp,): (C,)) -> Prototype {
comp.apply(self.target);
*self
}
}
impl<C: Component> FnMut<(C,)> for Prototype {
extern "rust-call" fn call_mut(&mut self, (comp,): (C,)) -> Prototype {
Fn::call(*&self, (comp,))
}
}
impl<C: Component> FnOnce<(C,)> for Prototype {
//~^ ERROR E0046
extern "rust-call" fn call_once(self, (comp,): (C,)) -> Prototype {
Fn::call(&self, (comp,))
}
}
fn main() {}