// Copyright 2015 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. // Regression test for #23827 #![feature(core, unboxed_closures)] pub struct Prototype { pub target: u32 } trait Component { fn apply(self, e: u32); } impl Fn<(C,)> for Prototype { extern "rust-call" fn call(&self, (comp,): (C,)) -> Prototype { comp.apply(self.target); *self } } impl FnMut<(C,)> for Prototype { extern "rust-call" fn call_mut(&mut self, (comp,): (C,)) -> Prototype { Fn::call(*&self, (comp,)) } } impl FnOnce<(C,)> for Prototype { //~^ ERROR E0046 //~| NOTE missing `Output` in implementation extern "rust-call" fn call_once(self, (comp,): (C,)) -> Prototype { Fn::call(&self, (comp,)) } } fn main() {}