rust/tests/ui/unboxed-closures/issue-30906.rs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

23 lines
508 B
Rust
Raw Normal View History

2019-11-14 02:56:36 -06:00
#![feature(fn_traits, unboxed_closures)]
fn test<F: for<'x> FnOnce<(&'x str,)>>(_: F) {}
struct Compose<F, G>(F, G);
impl<T, F, G> FnOnce<(T,)> for Compose<F, G>
where
F: FnOnce<(T,)>,
G: FnOnce<(F::Output,)>,
{
2019-11-14 02:56:36 -06:00
type Output = G::Output;
extern "rust-call" fn call_once(self, (x,): (T,)) -> G::Output {
(self.1)((self.0)(x))
}
}
fn bad<T>(f: fn(&'static str) -> T) {
test(Compose(f, |_| {}));
//~^ ERROR: implementation of `FnOnce` is not general enough
2019-11-14 02:56:36 -06:00
}
fn main() {}