Always eat up mut when parsing general args, fixes #7483

This commit is contained in:
John Barker 2013-07-07 22:26:15 -04:00
parent 62bb843e32
commit eaaf3f67ab
2 changed files with 19 additions and 2 deletions

View File

@ -1074,10 +1074,9 @@ impl Parser {
// This version of parse arg doesn't necessarily require
// identifier names.
pub fn parse_arg_general(&self, require_name: bool) -> arg {
let mut is_mutbl = false;
let mut is_mutbl = self.eat_keyword(keywords::Mut);
let pat = if require_name || self.is_named_argument() {
self.parse_arg_mode();
is_mutbl = self.eat_keyword(keywords::Mut);
let pat = self.parse_pat();
if is_mutbl && !ast_util::pat_is_ident(pat) {
@ -1087,6 +1086,7 @@ impl Parser {
self.expect(&token::COLON);
pat
} else {
is_mutbl = false;
ast_util::ident_to_pat(self.get_id(),
*self.last_span,
special_idents::invalid)

View File

@ -0,0 +1,17 @@
// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
#[allow(default_methods)];
trait Foo {
fn foo(mut v: int) { v = 1; }
}
fn main() {}