summaryrefslogtreecommitdiffstats
path: root/tests/ui/lang-items/fn-fn_mut-call-ill-formed.rs
blob: 52bd8136d9c0c07719633b7524cd6a59865cbe2c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// Make sure that an error is reported if the `call` function of the
// `fn`/`fn_mut` lang item is grossly ill-formed.

#![feature(lang_items)]
#![feature(no_core)]
#![no_core]

#[lang = "fn"]
trait MyFn<T> {
    const call: i32 = 42;
    //~^ ERROR: `call` trait item in `fn` lang item must be a function
}

#[lang = "fn_mut"]
trait MyFnMut<T> {
    fn call(i: i32, j: i32) -> i32 { i + j }
    //~^ ERROR: first argument of `call` in `fn_mut` lang item must be a reference
}

fn main() {
    let a = || 42;
    a();

    let mut i = 0;
    let mut b = || { i += 1; };
    b();
}