Skip to content

Commit

Permalink
parser: do not try to continue with unsafe on foreign fns
Browse files Browse the repository at this point in the history
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
  • Loading branch information
birkenfeld committed May 2, 2016
1 parent 855fb61 commit b75f81c
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 3 deletions.
2 changes: 1 addition & 1 deletion src/libsyntax/parse/parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6025,7 +6025,7 @@ impl<'a> Parser<'a> {
// FOREIGN STATIC ITEM
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
return Ok(Some(self.parse_item_foreign_fn(visibility, lo, attrs)?));
}
Expand Down
2 changes: 1 addition & 1 deletion src/test/parse-fail/extern-no-fn.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
// compile-flags: -Z parse-only

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() {
Expand Down
2 changes: 1 addition & 1 deletion src/test/parse-fail/removed-syntax-extern-const.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,5 @@

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

0 comments on commit b75f81c

Please sign in to comment.