about summary refs log tree commit diff
path: root/src/libsyntax/parse
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2014-03-22 16:06:51 -0700
committerbors <bors@rust-lang.org>2014-03-22 16:06:51 -0700
commite68550e7ac3d1fe8bdd58d1eb6dd12fe371f28b4 (patch)
treecfed18270238a2b2fd3828b59783cd01227b2482 /src/libsyntax/parse
parent6f430c44262cc4965ece75835204ef8b60b4d604 (diff)
parent7c3ed86e5a57b6cfa0872e15a478079a1871122f (diff)
downloadrust-e68550e7ac3d1fe8bdd58d1eb6dd12fe371f28b4.tar.gz
rust-e68550e7ac3d1fe8bdd58d1eb6dd12fe371f28b4.zip
auto merge of #13085 : edwardw/rust/saddest-cell, r=cmr
Diffstat (limited to 'src/libsyntax/parse')
-rw-r--r--src/libsyntax/parse/parser.rs17
1 files changed, 8 insertions, 9 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 1313225e22b..adf3ac0e17d 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -77,7 +77,6 @@ use parse::token;
 use parse::{new_sub_parser_from_file, ParseSess};
 use owned_slice::OwnedSlice;
 
-use std::cell::Cell;
 use collections::HashSet;
 use std::kinds::marker;
 use std::mem::replace;
@@ -2202,12 +2201,12 @@ impl<'a> Parser<'a> {
         // unification of Matcher's and TokenTree's would vastly improve
         // the interpolation of Matcher's
         maybe_whole!(self, NtMatchers);
-        let name_idx = @Cell::new(0u);
+        let mut name_idx = 0u;
         match self.token {
             token::LBRACE | token::LPAREN | token::LBRACKET => {
                 let other_delimiter = token::flip_delimiter(&self.token);
                 self.bump();
-                self.parse_matcher_subseq_upto(name_idx, &other_delimiter)
+                self.parse_matcher_subseq_upto(&mut name_idx, &other_delimiter)
             }
             _ => self.fatal("expected open delimiter")
         }
@@ -2217,7 +2216,7 @@ impl<'a> Parser<'a> {
     // Otherwise, `$( ( )` would be a valid Matcher, and `$( () )` would be
     // invalid. It's similar to common::parse_seq.
     pub fn parse_matcher_subseq_upto(&mut self,
-                                     name_idx: @Cell<uint>,
+                                     name_idx: &mut uint,
                                      ket: &token::Token)
                                      -> Vec<Matcher> {
         let mut ret_val = Vec::new();
@@ -2234,13 +2233,13 @@ impl<'a> Parser<'a> {
         return ret_val;
     }
 
-    pub fn parse_matcher(&mut self, name_idx: @Cell<uint>) -> Matcher {
+    pub fn parse_matcher(&mut self, name_idx: &mut uint) -> Matcher {
         let lo = self.span.lo;
 
         let m = if self.token == token::DOLLAR {
             self.bump();
             if self.token == token::LPAREN {
-                let name_idx_lo = name_idx.get();
+                let name_idx_lo = *name_idx;
                 self.bump();
                 let ms = self.parse_matcher_subseq_upto(name_idx,
                                                         &token::RPAREN);
@@ -2248,13 +2247,13 @@ impl<'a> Parser<'a> {
                     self.fatal("repetition body must be nonempty");
                 }
                 let (sep, zerok) = self.parse_sep_and_zerok();
-                MatchSeq(ms, sep, zerok, name_idx_lo, name_idx.get())
+                MatchSeq(ms, sep, zerok, name_idx_lo, *name_idx)
             } else {
                 let bound_to = self.parse_ident();
                 self.expect(&token::COLON);
                 let nt_name = self.parse_ident();
-                let m = MatchNonterminal(bound_to, nt_name, name_idx.get());
-                name_idx.set(name_idx.get() + 1u);
+                let m = MatchNonterminal(bound_to, nt_name, *name_idx);
+                *name_idx += 1;
                 m
             }
         } else {