// revisions: fn_once_bad_item fn_once_bad_sig fn_mut_bad_item fn_mut_bad_sig fn_bad_item fn_bad_sig #![feature(lang_items)] #![feature(no_core)] #![no_core] #[lang = "sized"] trait Sized {} #[cfg(any(fn_bad_item, fn_bad_sig))] #[lang = "fn"] trait MyFn { #[cfg(fn_bad_sig)] fn call(i: i32) -> i32 { 0 } #[cfg(fn_bad_item)] const call: i32 = 42; } #[cfg(any(fn_mut_bad_item, fn_mut_bad_sig))] #[lang = "fn_mut"] trait MyFnMut { #[cfg(fn_mut_bad_sig)] fn call_mut(i: i32) -> i32 { 0 } #[cfg(fn_mut_bad_item)] const call_mut: i32 = 42; } #[cfg(any(fn_once_bad_item, fn_once_bad_sig))] #[lang = "fn_once"] trait MyFnOnce { #[cfg(fn_once_bad_sig)] fn call_once(i: i32) -> i32 { 0 } #[cfg(fn_once_bad_item)] const call_once: i32 = 42; } fn main() { let a = || 42; a(); //~^ ERROR failed to find an overloaded call trait for closure call let mut i = 0; let mut b = || { }; b(); //~^ ERROR failed to find an overloaded call trait for closure call }