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