diff options
| author | John Hodge <tpg@mutabah.net> | 2015-10-03 23:42:22 +0800 |
|---|---|---|
| committer | John Hodge <tpg@mutabah.net> | 2015-10-03 23:42:22 +0800 |
| commit | 4c88bf2885d91f9aa0c4aeab619542a50a278f33 (patch) | |
| tree | caf992685a58b865a5b188faf3a5a47942d7fc17 /src/libsyntax | |
| parent | 0369304feb732f0bc89e19e9f09cb3ec9d94fe9a (diff) | |
| download | rust-4c88bf2885d91f9aa0c4aeab619542a50a278f33.tar.gz rust-4c88bf2885d91f9aa0c4aeab619542a50a278f33.zip | |
Implement original version of RFC#1245
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index f47dfeb1d34..20c0e79f1d8 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -4380,11 +4380,11 @@ impl<'a> Parser<'a> { /// - `extern fn` /// - etc pub fn parse_fn_front_matter(&mut self) -> PResult<(ast::Constness, ast::Unsafety, abi::Abi)> { + let unsafety = try!(self.parse_unsafety()); let is_const_fn = try!(self.eat_keyword(keywords::Const)); let (constness, unsafety, abi) = if is_const_fn { - (Constness::Const, Unsafety::Normal, abi::Rust) + (Constness::Const, unsafety, abi::Rust) } else { - let unsafety = try!(self.parse_unsafety()); let abi = if try!(self.eat_keyword(keywords::Extern)) { try!(self.parse_opt_abi()).unwrap_or(abi::C) } else { @@ -5399,9 +5399,14 @@ impl<'a> Parser<'a> { } else { abi::Rust }; + let constness = if abi == abi::Rust && try!(self.eat_keyword(keywords::Const) ){ + Constness::Const + } else { + Constness::NotConst + }; try!(self.expect_keyword(keywords::Fn)); let (ident, item_, extra_attrs) = - try!(self.parse_item_fn(Unsafety::Unsafe, Constness::NotConst, abi)); + try!(self.parse_item_fn(Unsafety::Unsafe, constness, abi)); let last_span = self.last_span; let item = self.mk_item(lo, last_span.hi, |
