Skip to content

Commit 3ce0dc0

Browse files
committed
libsyntax: De-mut the parser. rs=demuting
1 parent cdb5e0d commit 3ce0dc0

File tree

10 files changed

+332
-333
lines changed

10 files changed

+332
-333
lines changed

src/libsyntax/ext/base.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ pub fn get_exprs_from_tts(cx: ext_ctxt, tts: ~[ast::token_tree])
339339
cx.cfg(),
340340
tts);
341341
let mut es = ~[];
342-
while p.token != token::EOF {
342+
while *p.token != token::EOF {
343343
if es.len() != 0 {
344344
p.eat(token::COMMA);
345345
}

src/libsyntax/ext/pipes/parse_proto.rs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ pub trait proto_parser {
2525

2626
pub impl proto_parser for parser::Parser {
2727
fn parse_proto(&self, id: ~str) -> protocol {
28-
let proto = protocol(id, self.span);
28+
let proto = protocol(id, *self.span);
2929

3030
self.parse_seq_to_before_end(token::EOF, SeqSep {
3131
sep: None,
@@ -40,7 +40,7 @@ pub impl proto_parser for parser::Parser {
4040
let name = *self.interner.get(id);
4141

4242
self.expect(token::COLON);
43-
let dir = match copy self.token {
43+
let dir = match *self.token {
4444
token::IDENT(n, _) => self.interner.get(n),
4545
_ => fail!()
4646
};
@@ -51,10 +51,11 @@ pub impl proto_parser for parser::Parser {
5151
_ => fail!()
5252
};
5353

54-
let typarms = if self.token == token::LT {
54+
let typarms = if *self.token == token::LT {
5555
self.parse_ty_params()
56-
}
57-
else { ~[] };
56+
} else {
57+
~[]
58+
};
5859

5960
let state = proto.add_state_poly(name, id, dir, typarms);
6061

@@ -69,7 +70,7 @@ pub impl proto_parser for parser::Parser {
6970
fn parse_message(&self, state: state) {
7071
let mname = *self.interner.get(self.parse_ident());
7172

72-
let args = if self.token == token::LPAREN {
73+
let args = if *self.token == token::LPAREN {
7374
self.parse_unspanned_seq(token::LPAREN,
7475
token::RPAREN, SeqSep {
7576
sep: Some(token::COMMA),
@@ -80,10 +81,10 @@ pub impl proto_parser for parser::Parser {
8081

8182
self.expect(token::RARROW);
8283

83-
let next = match copy self.token {
84+
let next = match *self.token {
8485
token::IDENT(_, _) => {
8586
let name = *self.interner.get(self.parse_ident());
86-
let ntys = if self.token == token::LT {
87+
let ntys = if *self.token == token::LT {
8788
self.parse_unspanned_seq(token::LT,
8889
token::GT, SeqSep {
8990
sep: Some(token::COMMA),
@@ -101,7 +102,7 @@ pub impl proto_parser for parser::Parser {
101102
_ => self.fatal(~"invalid next state")
102103
};
103104

104-
state.add_message(mname, copy self.span, args, next);
105+
state.add_message(mname, *self.span, args, next);
105106

106107
}
107108
}

src/libsyntax/ext/pipes/pipec.rs

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ pub trait gen_init {
4949
pub impl gen_send for message {
5050
fn gen_send(&mut self, cx: ext_ctxt, try: bool) -> @ast::item {
5151
debug!("pipec: gen_send");
52+
let name = self.name();
53+
let params = self.get_params();
54+
5255
match *self {
5356
message(ref _id, span, ref tys, this, Some(ref next_state)) => {
5457
debug!("pipec: next state exists");
@@ -67,7 +70,7 @@ pub impl gen_send for message {
6770
args_ast);
6871

6972
let mut body = ~"{\n";
70-
body += fmt!("use super::%s;\n", self.name());
73+
body += fmt!("use super::%s;\n", name);
7174

7275
if this.proto.is_bounded() {
7376
let (sp, rp) = match (this.dir, next.dir) {
@@ -96,7 +99,7 @@ pub impl gen_send for message {
9699
body += fmt!("let %s = ::pipes::entangle();\n", pat);
97100
}
98101
body += fmt!("let message = %s(%s);\n",
99-
self.name(),
102+
name,
100103
str::connect(vec::append_one(
101104
arg_names.map(|x| cx.str_of(*x)),
102105
~"s"), ~", "));
@@ -121,13 +124,12 @@ pub impl gen_send for message {
121124
rty = cx.ty_option(rty);
122125
}
123126

124-
let name = cx.ident_of(if try { ~"try_" + self.name()
125-
} else { self.name() } );
127+
let name = cx.ident_of(if try { ~"try_" + name } else { name } );
126128
127129
cx.item_fn_poly(name,
128130
args_ast,
129131
rty,
130-
self.get_params(),
132+
params,
131133
cx.expr_block(body))
132134
}
133135
@@ -156,10 +158,8 @@ pub impl gen_send for message {
156158
};
157159
158160
let mut body = ~"{ ";
159-
body += fmt!("use super::%s;\n", self.name());
160-
body += fmt!("let message = %s%s;\n",
161-
self.name(),
162-
message_args);
161+
body += fmt!("use super::%s;\n", name);
162+
body += fmt!("let message = %s%s;\n", name, message_args);
163163

164164
if !try {
165165
body += fmt!("::pipes::send(pipe, message);\n");
@@ -175,10 +175,7 @@ pub impl gen_send for message {
175175
176176
let body = cx.parse_expr(body);
177177
178-
let name = if try {
179-
~"try_" + self.name()
180-
}
181-
else { self.name() };
178+
let name = if try { ~"try_" + name } else { name };
182179
183180
cx.item_fn_poly(cx.ident_of(name),
184181
args_ast,
@@ -187,7 +184,7 @@ pub impl gen_send for message {
187184
} else {
188185
cx.ty_nil_ast_builder()
189186
},
190-
self.get_params(),
187+
params,
191188
cx.expr_block(body))
192189
}
193190
}

src/libsyntax/ext/quote.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -515,7 +515,7 @@ fn expand_tts(cx: ext_ctxt,
515515
// try removing it when enough of them are gone.
516516
517517
let p = parse::new_parser_from_tts(cx.parse_sess(), cx.cfg(), tts);
518-
p.quote_depth += 1u;
518+
*p.quote_depth += 1u;
519519
let tts = p.parse_all_token_trees();
520520
p.abort_if_errors();
521521

src/libsyntax/ext/tt/macro_parser.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -421,16 +421,16 @@ pub fn parse_nt(p: Parser, name: ~str) -> nonterminal {
421421
~"expr" => token::nt_expr(p.parse_expr()),
422422
~"ty" => token::nt_ty(p.parse_ty(false /* no need to disambiguate*/)),
423423
// this could be handled like a token, since it is one
424-
~"ident" => match copy p.token {
424+
~"ident" => match *p.token {
425425
token::IDENT(sn,b) => { p.bump(); token::nt_ident(sn,b) }
426426
_ => p.fatal(~"expected ident, found "
427-
+ token::to_str(p.reader.interner(), copy p.token))
427+
+ token::to_str(p.reader.interner(), *p.token))
428428
},
429429
~"path" => token::nt_path(p.parse_path_with_tps(false)),
430430
~"tt" => {
431-
p.quote_depth += 1u; //but in theory, non-quoted tts might be useful
431+
*p.quote_depth += 1u; //but in theory, non-quoted tts might be useful
432432
let res = token::nt_tt(@p.parse_token_tree());
433-
p.quote_depth -= 1u;
433+
*p.quote_depth -= 1u;
434434
res
435435
}
436436
~"matchers" => token::nt_matchers(p.parse_matchers()),

src/libsyntax/parse/attr.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ impl parser_attr for Parser {
3636
fn parse_outer_attributes() -> ~[ast::attribute] {
3737
let mut attrs: ~[ast::attribute] = ~[];
3838
loop {
39-
match copy self.token {
39+
match *self.token {
4040
token::POUND => {
4141
if self.look_ahead(1u) != token::LBRACKET {
4242
break;
@@ -86,14 +86,14 @@ impl parser_attr for Parser {
8686
let mut inner_attrs: ~[ast::attribute] = ~[];
8787
let mut next_outer_attrs: ~[ast::attribute] = ~[];
8888
loop {
89-
match copy self.token {
89+
match *self.token {
9090
token::POUND => {
9191
if self.look_ahead(1u) != token::LBRACKET {
9292
// This is an extension
9393
break;
9494
}
9595
let attr = self.parse_attribute(ast::attr_inner);
96-
if self.token == token::SEMI {
96+
if *self.token == token::SEMI {
9797
self.bump();
9898
inner_attrs += ~[attr];
9999
} else {
@@ -127,7 +127,7 @@ impl parser_attr for Parser {
127127
fn parse_meta_item() -> @ast::meta_item {
128128
let lo = self.span.lo;
129129
let name = self.id_to_str(self.parse_ident());
130-
match self.token {
130+
match *self.token {
131131
token::EQ => {
132132
self.bump();
133133
let lit = self.parse_lit();
@@ -153,7 +153,7 @@ impl parser_attr for Parser {
153153
}
154154

155155
fn parse_optional_meta() -> ~[@ast::meta_item] {
156-
match self.token {
156+
match *self.token {
157157
token::LPAREN => return self.parse_meta_seq(),
158158
_ => return ~[]
159159
}

src/libsyntax/parse/common.rs

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -53,38 +53,38 @@ pub fn token_to_str(reader: reader, ++token: token::Token) -> ~str {
5353
pub impl Parser {
5454
fn unexpected_last(t: token::Token) -> ! {
5555
self.span_fatal(
56-
copy self.last_span,
56+
*self.last_span,
5757
~"unexpected token: `" + token_to_str(self.reader, t) + ~"`");
5858
}
5959

6060
fn unexpected() -> ! {
6161
self.fatal(~"unexpected token: `"
62-
+ token_to_str(self.reader, self.token) + ~"`");
62+
+ token_to_str(self.reader, *self.token) + ~"`");
6363
}
6464

6565
// expect and consume the token t. Signal an error if
6666
// the next token is not t.
6767
fn expect(t: token::Token) {
68-
if self.token == t {
68+
if *self.token == t {
6969
self.bump();
7070
} else {
7171
let mut s: ~str = ~"expected `";
7272
s += token_to_str(self.reader, t);
7373
s += ~"` but found `";
74-
s += token_to_str(self.reader, self.token);
74+
s += token_to_str(self.reader, *self.token);
7575
self.fatal(s + ~"`");
7676
}
7777
}
7878

7979
fn parse_ident() -> ast::ident {
8080
self.check_strict_keywords();
8181
self.check_reserved_keywords();
82-
match copy self.token {
82+
match *self.token {
8383
token::IDENT(i, _) => { self.bump(); return i; }
8484
token::INTERPOLATED(token::nt_ident(*)) => { self.bug(
8585
~"ident interpolation not converted to real token"); }
8686
_ => { self.fatal(~"expected ident, found `"
87-
+ token_to_str(self.reader, self.token)
87+
+ token_to_str(self.reader, *self.token)
8888
+ ~"`"); }
8989
}
9090
}
@@ -104,7 +104,7 @@ pub impl Parser {
104104
// consume token 'tok' if it exists. Returns true if the given
105105
// token was present, false otherwise.
106106
fn eat(tok: token::Token) -> bool {
107-
return if self.token == tok { self.bump(); true } else { false };
107+
return if *self.token == tok { self.bump(); true } else { false };
108108
}
109109

110110
// Storing keywords as interned idents instead of strings would be nifty.
@@ -129,7 +129,7 @@ pub impl Parser {
129129
}
130130

131131
fn is_keyword(word: ~str) -> bool {
132-
self.token_is_keyword(word, self.token)
132+
self.token_is_keyword(word, *self.token)
133133
}
134134

135135
fn is_any_keyword(tok: token::Token) -> bool {
@@ -143,7 +143,7 @@ pub impl Parser {
143143

144144
fn eat_keyword(word: ~str) -> bool {
145145
self.require_keyword(word);
146-
let is_kw = match self.token {
146+
let is_kw = match *self.token {
147147
token::IDENT(sid, false) => (word == *self.id_to_str(sid)),
148148
_ => false
149149
};
@@ -155,7 +155,7 @@ pub impl Parser {
155155
self.require_keyword(word);
156156
if !self.eat_keyword(word) {
157157
self.fatal(~"expected `" + word + ~"`, found `" +
158-
token_to_str(self.reader, self.token) +
158+
token_to_str(self.reader, *self.token) +
159159
~"`");
160160
}
161161
}
@@ -165,9 +165,9 @@ pub impl Parser {
165165
}
166166

167167
fn check_strict_keywords() {
168-
match self.token {
168+
match *self.token {
169169
token::IDENT(_, false) => {
170-
let w = token_to_str(self.reader, self.token);
170+
let w = token_to_str(self.reader, *self.token);
171171
self.check_strict_keywords_(w);
172172
}
173173
_ => ()
@@ -185,9 +185,9 @@ pub impl Parser {
185185
}
186186

187187
fn check_reserved_keywords() {
188-
match self.token {
188+
match *self.token {
189189
token::IDENT(_, false) => {
190-
let w = token_to_str(self.reader, self.token);
190+
let w = token_to_str(self.reader, *self.token);
191191
self.check_reserved_keywords_(w);
192192
}
193193
_ => ()
@@ -203,17 +203,17 @@ pub impl Parser {
203203
// expect and consume a GT. if a >> is seen, replace it
204204
// with a single > and continue.
205205
fn expect_gt() {
206-
if self.token == token::GT {
206+
if *self.token == token::GT {
207207
self.bump();
208-
} else if self.token == token::BINOP(token::SHR) {
208+
} else if *self.token == token::BINOP(token::SHR) {
209209
self.replace_token(token::GT,
210210
self.span.lo + BytePos(1u),
211211
self.span.hi);
212212
} else {
213213
let mut s: ~str = ~"expected `";
214214
s += token_to_str(self.reader, token::GT);
215215
s += ~"`, found `";
216-
s += token_to_str(self.reader, self.token);
216+
s += token_to_str(self.reader, *self.token);
217217
s += ~"`";
218218
self.fatal(s);
219219
}
@@ -225,8 +225,8 @@ pub impl Parser {
225225
f: fn(Parser) -> T) -> ~[T] {
226226
let mut first = true;
227227
let mut v = ~[];
228-
while self.token != token::GT
229-
&& self.token != token::BINOP(token::SHR) {
228+
while *self.token != token::GT
229+
&& *self.token != token::BINOP(token::SHR) {
230230
match sep {
231231
Some(ref t) => {
232232
if first { first = false; }
@@ -276,15 +276,15 @@ pub impl Parser {
276276
f: fn(Parser) -> T) -> ~[T] {
277277
let mut first: bool = true;
278278
let mut v: ~[T] = ~[];
279-
while self.token != ket {
279+
while *self.token != ket {
280280
match sep.sep {
281281
Some(ref t) => {
282282
if first { first = false; }
283283
else { self.expect(*t); }
284284
}
285285
_ => ()
286286
}
287-
if sep.trailing_sep_allowed && self.token == ket { break; }
287+
if sep.trailing_sep_allowed && *self.token == ket { break; }
288288
v.push(f(self));
289289
}
290290
return v;
@@ -293,8 +293,8 @@ pub impl Parser {
293293
// parse a sequence, including the closing delimiter. The function
294294
// f must consume tokens until reaching the next separator or
295295
// closing bracket.
296-
fn parse_unspanned_seq<T:Copy>(bra: token::Token,
297-
ket: token::Token,
296+
fn parse_unspanned_seq<T:Copy>(+bra: token::Token,
297+
+ket: token::Token,
298298
sep: SeqSep,
299299
f: fn(Parser) -> T) -> ~[T] {
300300
self.expect(bra);

src/libsyntax/parse/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ pub fn parse_tts_from_source_str(name: ~str,
134134
sess: @mut ParseSess) -> ~[ast::token_tree] {
135135
let p = new_parser_from_source_str(sess, cfg, name,
136136
codemap::FssNone, source);
137-
p.quote_depth += 1u;
137+
*p.quote_depth += 1u;
138138
let r = p.parse_all_token_trees();
139139
p.abort_if_errors();
140140
return r;

0 commit comments

Comments
 (0)