// 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