]> git.lizzy.rs Git - rust.git/blob - src/test/ui/parser/self-param-semantic-fail.rs
773cf922b4da917d0ac91cabe885f40e055672bf
[rust.git] / src / test / ui / parser / self-param-semantic-fail.rs
1 // This test ensures that `self` is semantically rejected
2 // in contexts with `FnDecl` but outside of associated `fn`s.
3 // FIXME(Centril): For now closures are an exception.
4
5 fn main() {}
6
7 fn free() {
8     fn f1(self) {}
9     //~^ ERROR `self` parameter only allowed in associated `fn`s
10     fn f2(mut self) {}
11     //~^ ERROR `self` parameter only allowed in associated `fn`s
12     fn f3(&self) {}
13     //~^ ERROR `self` parameter only allowed in associated `fn`s
14     fn f4(&mut self) {}
15     //~^ ERROR `self` parameter only allowed in associated `fn`s
16     fn f5<'a>(&'a self) {}
17     //~^ ERROR `self` parameter only allowed in associated `fn`s
18     fn f6<'a>(&'a mut self) {}
19     //~^ ERROR `self` parameter only allowed in associated `fn`s
20     fn f7(self: u8) {}
21     //~^ ERROR `self` parameter only allowed in associated `fn`s
22     fn f8(mut self: u8) {}
23     //~^ ERROR `self` parameter only allowed in associated `fn`s
24 }
25
26 extern {
27     fn f1(self);
28     //~^ ERROR `self` parameter only allowed in associated `fn`s
29     fn f2(mut self);
30     //~^ ERROR `self` parameter only allowed in associated `fn`s
31     //~| ERROR patterns aren't allowed in
32     fn f3(&self);
33     //~^ ERROR `self` parameter only allowed in associated `fn`s
34     fn f4(&mut self);
35     //~^ ERROR `self` parameter only allowed in associated `fn`s
36     fn f5<'a>(&'a self);
37     //~^ ERROR `self` parameter only allowed in associated `fn`s
38     fn f6<'a>(&'a mut self);
39     //~^ ERROR `self` parameter only allowed in associated `fn`s
40     fn f7(self: u8);
41     //~^ ERROR `self` parameter only allowed in associated `fn`s
42     fn f8(mut self: u8);
43     //~^ ERROR `self` parameter only allowed in associated `fn`s
44     //~| ERROR patterns aren't allowed in
45 }
46
47 type X1 = fn(self);
48 //~^ ERROR `self` parameter only allowed in associated `fn`s
49 type X2 = fn(mut self);
50 //~^ ERROR `self` parameter only allowed in associated `fn`s
51 //~| ERROR patterns aren't allowed in
52 type X3 = fn(&self);
53 //~^ ERROR `self` parameter only allowed in associated `fn`s
54 type X4 = fn(&mut self);
55 //~^ ERROR `self` parameter only allowed in associated `fn`s
56 type X5 = for<'a> fn(&'a self);
57 //~^ ERROR `self` parameter only allowed in associated `fn`s
58 type X6 = for<'a> fn(&'a mut self);
59 //~^ ERROR `self` parameter only allowed in associated `fn`s
60 type X7 = fn(self: u8);
61 //~^ ERROR `self` parameter only allowed in associated `fn`s
62 type X8 = fn(mut self: u8);
63 //~^ ERROR `self` parameter only allowed in associated `fn`s
64 //~| ERROR patterns aren't allowed in