1
Fork 0

parser: do not try to continue with unsafe on foreign fns

The changed line makes it look like `unsafe` is allowed, but the
first statement of `parse_item_foreign_fn` is:

`self.expect_keyword(keywords::Fn)?;`

So we get the strange "expected one of `fn`, `pub`, `static`, or
`unsafe`, found `unsafe`".

Fixes: #27361
This commit is contained in:
Georg Brandl 2016-05-02 08:45:38 +02:00
parent 855fb61922
commit b75f81c9b3
3 changed files with 3 additions and 3 deletions

View file

@ -6025,7 +6025,7 @@ impl<'a> Parser<'a> {
// FOREIGN STATIC ITEM // FOREIGN STATIC ITEM
return Ok(Some(self.parse_item_foreign_static(visibility, lo, attrs)?)); return Ok(Some(self.parse_item_foreign_static(visibility, lo, attrs)?));
} }
if self.check_keyword(keywords::Fn) || self.check_keyword(keywords::Unsafe) { if self.check_keyword(keywords::Fn) {
// FOREIGN FUNCTION ITEM // FOREIGN FUNCTION ITEM
return Ok(Some(self.parse_item_foreign_fn(visibility, lo, attrs)?)); return Ok(Some(self.parse_item_foreign_fn(visibility, lo, attrs)?));
} }

View file

@ -11,7 +11,7 @@
// compile-flags: -Z parse-only // compile-flags: -Z parse-only
extern { extern {
f(); //~ ERROR expected one of `fn`, `pub`, `static`, `unsafe`, or `}`, found `f` f(); //~ ERROR expected one of `fn`, `pub`, `static`, or `}`, found `f`
} }
fn main() { fn main() {

View file

@ -12,5 +12,5 @@
extern { extern {
const i: isize; const i: isize;
//~^ ERROR expected one of `fn`, `pub`, `static`, `unsafe`, or `}`, found `const` //~^ ERROR expected one of `fn`, `pub`, `static`, or `}`, found `const`
} }