| // This test ensures that `self` is semantically rejected | |
| // in contexts with `FnDecl` but outside of associated `fn`s. | |
| // FIXME(Centril): For now closures are an exception. | |
| fn main() {} | |
| fn free() { | |
| fn f1(self) {} | |
| //~^ ERROR `self` parameter is only allowed in associated functions | |
| fn f2(mut self) {} | |
| //~^ ERROR `self` parameter is only allowed in associated functions | |
| fn f3(&self) {} | |
| //~^ ERROR `self` parameter is only allowed in associated functions | |
| fn f4(&mut self) {} | |
| //~^ ERROR `self` parameter is only allowed in associated functions | |
| fn f5<'a>(&'a self) {} | |
| //~^ ERROR `self` parameter is only allowed in associated functions | |
| fn f6<'a>(&'a mut self) {} | |
| //~^ ERROR `self` parameter is only allowed in associated functions | |
| fn f7(self: u8) {} | |
| //~^ ERROR `self` parameter is only allowed in associated functions | |
| fn f8(mut self: u8) {} | |
| //~^ ERROR `self` parameter is only allowed in associated functions | |
| } | |
| extern "C" { | |
| fn f1(self); | |
| //~^ ERROR `self` parameter is only allowed in associated functions | |
| fn f2(mut self); | |
| //~^ ERROR `self` parameter is only allowed in associated functions | |
| //~| ERROR patterns aren't allowed in | |
| fn f3(&self); | |
| //~^ ERROR `self` parameter is only allowed in associated functions | |
| fn f4(&mut self); | |
| //~^ ERROR `self` parameter is only allowed in associated functions | |
| fn f5<'a>(&'a self); | |
| //~^ ERROR `self` parameter is only allowed in associated functions | |
| fn f6<'a>(&'a mut self); | |
| //~^ ERROR `self` parameter is only allowed in associated functions | |
| fn f7(self: u8); | |
| //~^ ERROR `self` parameter is only allowed in associated functions | |
| fn f8(mut self: u8); | |
| //~^ ERROR `self` parameter is only allowed in associated functions | |
| //~| ERROR patterns aren't allowed in | |
| } | |
| type X1 = fn(self); | |
| //~^ ERROR `self` parameter is only allowed in associated functions | |
| type X2 = fn(mut self); | |
| //~^ ERROR `self` parameter is only allowed in associated functions | |
| //~| ERROR patterns aren't allowed in | |
| type X3 = fn(&self); | |
| //~^ ERROR `self` parameter is only allowed in associated functions | |
| type X4 = fn(&mut self); | |
| //~^ ERROR `self` parameter is only allowed in associated functions | |
| type X5 = for<'a> fn(&'a self); | |
| //~^ ERROR `self` parameter is only allowed in associated functions | |
| type X6 = for<'a> fn(&'a mut self); | |
| //~^ ERROR `self` parameter is only allowed in associated functions | |
| type X7 = fn(self: u8); | |
| //~^ ERROR `self` parameter is only allowed in associated functions | |
| type X8 = fn(mut self: u8); | |
| //~^ ERROR `self` parameter is only allowed in associated functions | |
| //~| ERROR patterns aren't allowed in |