diff options
| author | bors <bors@rust-lang.org> | 2014-12-01 01:56:52 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-12-01 01:56:52 +0000 |
| commit | 222a1eb7e80101de182142dc264cdcd81c894b2c (patch) | |
| tree | ce9742d88e232ad03013be79cba45dc87fce638f /src/libsyntax/parse | |
| parent | acad03a420186ee8f0c28626e59eee55664dd0b4 (diff) | |
| parent | 63553a10adc8b507edee1fce43f868d93628ce34 (diff) | |
| download | rust-222a1eb7e80101de182142dc264cdcd81c894b2c.tar.gz rust-222a1eb7e80101de182142dc264cdcd81c894b2c.zip | |
auto merge of #19418 : P1start/rust/unsafe-extern-trait, r=alexcrichton
Fixes #19398.
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 447f2a376e1..c76d9edf635 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -1296,13 +1296,14 @@ impl<'a> Parser<'a> { let lo = p.span.lo; let vis = p.parse_visibility(); + let style = p.parse_fn_style(); let abi = if p.eat_keyword(keywords::Extern) { p.parse_opt_abi().unwrap_or(abi::C) } else { abi::Rust }; + p.expect_keyword(keywords::Fn); - let style = p.parse_fn_style(); let ident = p.parse_ident(); let mut generics = p.parse_generics(); @@ -4458,12 +4459,13 @@ impl<'a> Parser<'a> { self.span.hi) }; (ast::MethMac(m), self.span.hi, attrs) } else { + let fn_style = self.parse_fn_style(); let abi = if self.eat_keyword(keywords::Extern) { self.parse_opt_abi().unwrap_or(abi::C) } else { abi::Rust }; - let fn_style = self.parse_fn_style(); + self.expect_keyword(keywords::Fn); let ident = self.parse_ident(); let mut generics = self.parse_generics(); let (explicit_self, decl) = self.parse_fn_decl_with_self(|p| { @@ -5009,14 +5011,13 @@ impl<'a> Parser<'a> { }) } - /// Parse safe/unsafe and fn + /// Parse unsafe or not fn parse_fn_style(&mut self) -> FnStyle { - if self.eat_keyword(keywords::Fn) { NormalFn } - else if self.eat_keyword(keywords::Unsafe) { - self.expect_keyword(keywords::Fn); + if self.eat_keyword(keywords::Unsafe) { UnsafeFn + } else { + NormalFn } - else { self.unexpected(); } } |
