libsyntax: De-`@mut` `name_idx`
This commit is contained in:
parent
449ebeea08
commit
4269f85d5b
|
@ -81,6 +81,7 @@ use parse::{new_sub_parser_from_file, ParseSess};
|
||||||
use opt_vec;
|
use opt_vec;
|
||||||
use opt_vec::OptVec;
|
use opt_vec::OptVec;
|
||||||
|
|
||||||
|
use std::cell::Cell;
|
||||||
use std::hashmap::HashSet;
|
use std::hashmap::HashSet;
|
||||||
use std::util;
|
use std::util;
|
||||||
use std::vec;
|
use std::vec;
|
||||||
|
@ -2185,7 +2186,7 @@ impl Parser {
|
||||||
// unification of matchers and token_trees would vastly improve
|
// unification of matchers and token_trees would vastly improve
|
||||||
// the interpolation of matchers
|
// the interpolation of matchers
|
||||||
maybe_whole!(self, nt_matchers);
|
maybe_whole!(self, nt_matchers);
|
||||||
let name_idx = @mut 0u;
|
let name_idx = @Cell::new(0u);
|
||||||
match self.token {
|
match self.token {
|
||||||
token::LBRACE | token::LPAREN | token::LBRACKET => {
|
token::LBRACE | token::LPAREN | token::LBRACKET => {
|
||||||
let other_delimiter = token::flip_delimiter(&self.token);
|
let other_delimiter = token::flip_delimiter(&self.token);
|
||||||
|
@ -2200,7 +2201,7 @@ impl Parser {
|
||||||
// Otherwise, `$( ( )` would be a valid matcher, and `$( () )` would be
|
// Otherwise, `$( ( )` would be a valid matcher, and `$( () )` would be
|
||||||
// invalid. It's similar to common::parse_seq.
|
// invalid. It's similar to common::parse_seq.
|
||||||
pub fn parse_matcher_subseq_upto(&mut self,
|
pub fn parse_matcher_subseq_upto(&mut self,
|
||||||
name_idx: @mut uint,
|
name_idx: @Cell<uint>,
|
||||||
ket: &token::Token)
|
ket: &token::Token)
|
||||||
-> ~[matcher] {
|
-> ~[matcher] {
|
||||||
let mut ret_val = ~[];
|
let mut ret_val = ~[];
|
||||||
|
@ -2217,13 +2218,13 @@ impl Parser {
|
||||||
return ret_val;
|
return ret_val;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn parse_matcher(&mut self, name_idx: @mut uint) -> matcher {
|
pub fn parse_matcher(&mut self, name_idx: @Cell<uint>) -> matcher {
|
||||||
let lo = self.span.lo;
|
let lo = self.span.lo;
|
||||||
|
|
||||||
let m = if self.token == token::DOLLAR {
|
let m = if self.token == token::DOLLAR {
|
||||||
self.bump();
|
self.bump();
|
||||||
if self.token == token::LPAREN {
|
if self.token == token::LPAREN {
|
||||||
let name_idx_lo = *name_idx;
|
let name_idx_lo = name_idx.get();
|
||||||
self.bump();
|
self.bump();
|
||||||
let ms = self.parse_matcher_subseq_upto(name_idx,
|
let ms = self.parse_matcher_subseq_upto(name_idx,
|
||||||
&token::RPAREN);
|
&token::RPAREN);
|
||||||
|
@ -2231,13 +2232,13 @@ impl Parser {
|
||||||
self.fatal("repetition body must be nonempty");
|
self.fatal("repetition body must be nonempty");
|
||||||
}
|
}
|
||||||
let (sep, zerok) = self.parse_sep_and_zerok();
|
let (sep, zerok) = self.parse_sep_and_zerok();
|
||||||
match_seq(ms, sep, zerok, name_idx_lo, *name_idx)
|
match_seq(ms, sep, zerok, name_idx_lo, name_idx.get())
|
||||||
} else {
|
} else {
|
||||||
let bound_to = self.parse_ident();
|
let bound_to = self.parse_ident();
|
||||||
self.expect(&token::COLON);
|
self.expect(&token::COLON);
|
||||||
let nt_name = self.parse_ident();
|
let nt_name = self.parse_ident();
|
||||||
let m = match_nonterminal(bound_to, nt_name, *name_idx);
|
let m = match_nonterminal(bound_to, nt_name, name_idx.get());
|
||||||
*name_idx += 1u;
|
name_idx.set(name_idx.get() + 1u);
|
||||||
m
|
m
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue