Skip to content

Commit d9c8428

Browse files
committed
libsyntax: Fix parsing of pub unsafe fn inside extern blocks. rs=bugfix
1 parent ab13beb commit d9c8428

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

src/libsyntax/parse/parser.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3652,7 +3652,8 @@ impl Parser {
36523652
visibility,
36533653
maybe_append(attrs, extra_attrs)));
36543654
} else if foreign_items_allowed &&
3655-
(self.is_keyword(~"fn") || self.is_keyword(~"pure")) {
3655+
(self.is_keyword(~"fn") || self.is_keyword(~"pure") ||
3656+
self.is_keyword(~"unsafe")) {
36563657
let item = self.parse_item_foreign_fn(attrs);
36573658
return iovi_foreign_item(item);
36583659
} else if items_allowed && self.is_keyword(~"unsafe")

src/test/run-pass/extern-pub.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
extern {
2+
pub unsafe fn vec_reserve_shared_actual(++t: *sys::TypeDesc,
3+
++v: **vec::raw::VecRepr,
4+
++n: libc::size_t);
5+
}
6+
7+
fn main() {
8+
}
9+
10+

0 commit comments

Comments
 (0)