Skip to content

Commit d016145

Browse files
committed
---
yaml --- r: 16013 b: refs/heads/try c: 4c2bf8e h: refs/heads/master i: 16011: d69a84a v: v3
1 parent a7fa961 commit d016145

File tree

7 files changed

+2238
-2247
lines changed

7 files changed

+2238
-2247
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
refs/heads/master: 61b1875c16de39c166b0f4d54bba19f9c6777d1a
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 4a81779abd786ff22d71434c6d9a5917ea4cdfff
5-
refs/heads/try: a16cb376ac214d1cb07b88292a9f81587ac1bc1d
5+
refs/heads/try: 4c2bf8e4a73710db9430483028d268843f562d28
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105

branches/try/src/librustsyntax/ext/qquote.rs

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ impl of qq_helper for @ast::expr {
4949
}
5050
}
5151
fn mk_parse_fn(cx: ext_ctxt, sp: span) -> @ast::expr {
52-
mk_path(cx, sp, ["syntax", "parse", "parser", "parse_expr"])
52+
mk_path(cx, sp, ["syntax", "ext", "qquote", "parse_expr"])
5353
}
5454
fn get_fold_fn() -> str {"fold_expr"}
5555
}
@@ -90,7 +90,7 @@ impl of qq_helper for @ast::pat {
9090
fn visit(cx: aq_ctxt, v: vt<aq_ctxt>) {visit_pat(self, cx, v);}
9191
fn extract_mac() -> option<ast::mac_> {fail}
9292
fn mk_parse_fn(cx: ext_ctxt, sp: span) -> @ast::expr {
93-
mk_path(cx, sp, ["syntax", "parse", "parser", "parse_pat"])
93+
mk_path(cx, sp, ["syntax", "ext", "qquote", "parse_pat"])
9494
}
9595
fn get_fold_fn() -> str {"fold_pat"}
9696
}
@@ -154,29 +154,23 @@ fn expand_ast(ecx: ext_ctxt, _sp: span,
154154

155155
ret alt what {
156156
"crate" {finish(ecx, body, parse_crate)}
157-
"expr" {finish(ecx, body, parser::parse_expr)}
157+
"expr" {finish(ecx, body, parse_expr)}
158158
"ty" {finish(ecx, body, parse_ty)}
159159
"item" {finish(ecx, body, parse_item)}
160160
"stmt" {finish(ecx, body, parse_stmt)}
161-
"pat" {finish(ecx, body, parser::parse_pat)}
161+
"pat" {finish(ecx, body, parse_pat)}
162162
_ {ecx.span_fatal(_sp, "unsupported ast type")}
163163
};
164164
}
165165

166-
fn parse_crate(p: parser) -> @ast::crate {
167-
parser::parse_crate_mod(p, [])
168-
}
169-
170-
fn parse_ty(p: parser) -> @ast::ty {
171-
parser::parse_ty(p, false)
172-
}
173-
174-
fn parse_stmt(p: parser) -> @ast::stmt {
175-
parser::parse_stmt(p, [])
176-
}
166+
fn parse_crate(p: parser) -> @ast::crate { p.parse_crate_mod([]) }
167+
fn parse_ty(p: parser) -> @ast::ty { p.parse_ty(false) }
168+
fn parse_stmt(p: parser) -> @ast::stmt { p.parse_stmt([]) }
169+
fn parse_expr(p: parser) -> @ast::expr { p.parse_expr() }
170+
fn parse_pat(p: parser) -> @ast::pat { p.parse_pat() }
177171

178172
fn parse_item(p: parser) -> @ast::item {
179-
alt parser::parse_item(p, [], ast::public) {
173+
alt p.parse_item([], ast::public) {
180174
some(item) { item }
181175
none { fail "parse_item: parsing an item failed"; }
182176
}

branches/try/src/librustsyntax/parse.rs

Lines changed: 8 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,11 @@ fn parse_crate_from_crate_file(input: str, cfg: ast::crate_cfg,
4646
let leading_attrs = attr::parse_inner_attrs_and_next(p);
4747
let crate_attrs = leading_attrs.inner;
4848
let first_cdir_attr = leading_attrs.next;
49-
let cdirs = parser::parse_crate_directives(
50-
p, token::EOF, first_cdir_attr);
49+
let cdirs = p.parse_crate_directives(token::EOF, first_cdir_attr);
5150
sess.chpos = p.reader.chpos;
5251
sess.byte_pos = sess.byte_pos + p.reader.pos;
5352
let cx =
54-
@{p: p,
55-
sess: sess,
53+
@{sess: sess,
5654
cfg: p.cfg};
5755
let (companionmod, _) = path::splitext(path::basename(input));
5856
let (m, attrs) = eval::eval_crate_directives_to_mod(
@@ -69,7 +67,7 @@ fn parse_crate_from_crate_file(input: str, cfg: ast::crate_cfg,
6967
fn parse_crate_from_source_file(input: str, cfg: ast::crate_cfg,
7068
sess: parse_sess) -> @ast::crate {
7169
let p = new_parser_from_file(sess, cfg, input, parser::SOURCE_FILE);
72-
let r = parser::parse_crate_mod(p, cfg);
70+
let r = p.parse_crate_mod(cfg);
7371
sess.chpos = p.reader.chpos;
7472
sess.byte_pos = sess.byte_pos + p.reader.pos;
7573
ret r;
@@ -79,7 +77,7 @@ fn parse_crate_from_source_str(name: str, source: @str, cfg: ast::crate_cfg,
7977
sess: parse_sess) -> @ast::crate {
8078
let p = new_parser_from_source_str(
8179
sess, cfg, name, codemap::fss_none, source);
82-
let r = parser::parse_crate_mod(p, cfg);
80+
let r = p.parse_crate_mod(cfg);
8381
sess.chpos = p.reader.chpos;
8482
sess.byte_pos = sess.byte_pos + p.reader.pos;
8583
ret r;
@@ -89,7 +87,7 @@ fn parse_expr_from_source_str(name: str, source: @str, cfg: ast::crate_cfg,
8987
sess: parse_sess) -> @ast::expr {
9088
let p = new_parser_from_source_str(
9189
sess, cfg, name, codemap::fss_none, source);
92-
let r = parser::parse_expr(p);
90+
let r = p.parse_expr();
9391
sess.chpos = p.reader.chpos;
9492
sess.byte_pos = sess.byte_pos + p.reader.pos;
9593
ret r;
@@ -100,7 +98,7 @@ fn parse_item_from_source_str(name: str, source: @str, cfg: ast::crate_cfg,
10098
sess: parse_sess) -> option<@ast::item> {
10199
let p = new_parser_from_source_str(
102100
sess, cfg, name, codemap::fss_none, source);
103-
let r = parser::parse_item(p, attrs, vis);
101+
let r = p.parse_item(attrs, vis);
104102
sess.chpos = p.reader.chpos;
105103
sess.byte_pos = sess.byte_pos + p.reader.pos;
106104
ret r;
@@ -130,23 +128,6 @@ fn next_node_id(sess: parse_sess) -> node_id {
130128
ret rv;
131129
}
132130

133-
fn new_parser(sess: parse_sess, cfg: ast::crate_cfg, rdr: lexer::reader,
134-
ftype: parser::file_type) -> parser {
135-
let tok0 = lexer::next_token(rdr);
136-
let span0 = ast_util::mk_sp(tok0.chpos, rdr.chpos);
137-
@{sess: sess,
138-
cfg: cfg,
139-
file_type: ftype,
140-
mut token: tok0.tok,
141-
mut span: span0,
142-
mut last_span: span0,
143-
buffer: dvec::dvec(),
144-
mut restriction: parser::UNRESTRICTED,
145-
reader: rdr,
146-
keywords: token::keyword_table(),
147-
restricted_keywords: token::restricted_keyword_table()}
148-
}
149-
150131
fn new_parser_from_source_str(sess: parse_sess, cfg: ast::crate_cfg,
151132
name: str, ss: codemap::file_substr,
152133
source: @str) -> parser {
@@ -157,7 +138,7 @@ fn new_parser_from_source_str(sess: parse_sess, cfg: ast::crate_cfg,
157138
let itr = @interner::mk(str::hash, str::eq);
158139
let rdr = lexer::new_reader(sess.span_diagnostic,
159140
filemap, itr);
160-
ret new_parser(sess, cfg, rdr, ftype);
141+
ret parser(sess, cfg, rdr, ftype);
161142
}
162143

163144
fn new_parser_from_file(sess: parse_sess, cfg: ast::crate_cfg, path: str,
@@ -177,5 +158,5 @@ fn new_parser_from_file(sess: parse_sess, cfg: ast::crate_cfg, path: str,
177158
sess.cm.files.push(filemap);
178159
let itr = @interner::mk(str::hash, str::eq);
179160
let rdr = lexer::new_reader(sess.span_diagnostic, filemap, itr);
180-
ret new_parser(sess, cfg, rdr, ftype);
161+
ret parser(sess, cfg, rdr, ftype);
181162
}

branches/try/src/librustsyntax/parse/attr.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ import common::{parse_seq,
44
seq_sep,
55
expect,
66
parse_ident};
7-
import parser::{parse_lit,
8-
parse_syntax_ext_naked};
97

108
export attr_or_ext;
119
export parse_outer_attributes;
@@ -31,7 +29,7 @@ fn parse_outer_attrs_or_ext(
3129
|| p.look_ahead(1u) == token::LBRACKET
3230
|| expect_item_next) {
3331
p.bump();
34-
ret some(right(parse_syntax_ext_naked(p, lo)));
32+
ret some(right(p.parse_syntax_ext_naked(lo)));
3533
} else { ret none; }
3634
} else { ret none; }
3735
}
@@ -97,7 +95,7 @@ fn parse_meta_item(p: parser) -> @ast::meta_item {
9795
alt p.token {
9896
token::EQ {
9997
p.bump();
100-
let lit = parse_lit(p);
98+
let lit = p.parse_lit();
10199
let mut hi = p.span.hi;
102100
ret @spanned(lo, hi, ast::meta_name_value(ident, lit));
103101
}
@@ -115,7 +113,7 @@ fn parse_meta_item(p: parser) -> @ast::meta_item {
115113

116114
fn parse_meta_seq(p: parser) -> [@ast::meta_item] {
117115
ret parse_seq(token::LPAREN, token::RPAREN, seq_sep(token::COMMA),
118-
parse_meta_item, p).node;
116+
p, {|p| parse_meta_item(p)}).node;
119117
}
120118

121119
fn parse_optional_meta(p: parser) -> [@ast::meta_item] {

branches/try/src/librustsyntax/parse/common.rs

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,7 @@ fn expect_gt(p: parser) {
126126
}
127127

128128
fn parse_seq_to_before_gt<T: copy>(sep: option<token::token>,
129-
f: fn(parser) -> T,
130-
p: parser) -> [T] {
129+
p: parser, f: fn(parser) -> T) -> [T] {
131130
let mut first = true;
132131
let mut v = [];
133132
while p.token != token::GT && p.token != token::BINOP(token::SHR) {
@@ -142,27 +141,26 @@ fn parse_seq_to_before_gt<T: copy>(sep: option<token::token>,
142141
}
143142

144143
fn parse_seq_to_gt<T: copy>(sep: option<token::token>,
145-
f: fn(parser) -> T, p: parser) -> [T] {
146-
let v = parse_seq_to_before_gt(sep, f, p);
144+
p: parser, f: fn(parser) -> T) -> [T] {
145+
let v = parse_seq_to_before_gt(sep, p, f);
147146
expect_gt(p);
148147

149148
ret v;
150149
}
151150

152151
fn parse_seq_lt_gt<T: copy>(sep: option<token::token>,
153-
f: fn(parser) -> T,
154-
p: parser) -> spanned<[T]> {
152+
p: parser, f: fn(parser) -> T) -> spanned<[T]> {
155153
let lo = p.span.lo;
156154
expect(p, token::LT);
157-
let result = parse_seq_to_before_gt::<T>(sep, f, p);
155+
let result = parse_seq_to_before_gt::<T>(sep, p, f);
158156
let hi = p.span.hi;
159157
expect_gt(p);
160158
ret spanned(lo, hi, result);
161159
}
162160

163-
fn parse_seq_to_end<T: copy>(ket: token::token, sep: seq_sep,
164-
f: fn(parser) -> T, p: parser) -> [T] {
165-
let val = parse_seq_to_before_end(ket, sep, f, p);
161+
fn parse_seq_to_end<T: copy>(ket: token::token, sep: seq_sep, p: parser,
162+
f: fn(parser) -> T) -> [T] {
163+
let val = parse_seq_to_before_end(ket, sep, p, f);
166164
p.bump();
167165
ret val;
168166
}
@@ -182,9 +180,8 @@ fn seq_sep_none() -> seq_sep {
182180
ret {sep: option::none, trailing_opt: false};
183181
}
184182

185-
fn parse_seq_to_before_end<T: copy>(ket: token::token,
186-
sep: seq_sep,
187-
f: fn(parser) -> T, p: parser) -> [T] {
183+
fn parse_seq_to_before_end<T: copy>(ket: token::token, sep: seq_sep,
184+
p: parser, f: fn(parser) -> T) -> [T] {
188185
let mut first: bool = true;
189186
let mut v: [T] = [];
190187
while p.token != ket {
@@ -198,12 +195,11 @@ fn parse_seq_to_before_end<T: copy>(ket: token::token,
198195
ret v;
199196
}
200197

201-
fn parse_seq<T: copy>(bra: token::token, ket: token::token,
202-
sep: seq_sep, f: fn(parser) -> T,
203-
p: parser) -> spanned<[T]> {
198+
fn parse_seq<T: copy>(bra: token::token, ket: token::token, sep: seq_sep,
199+
p: parser, f: fn(parser) -> T) -> spanned<[T]> {
204200
let lo = p.span.lo;
205201
expect(p, bra);
206-
let result = parse_seq_to_before_end::<T>(ket, sep, f, p);
202+
let result = parse_seq_to_before_end::<T>(ket, sep, p, f);
207203
let hi = p.span.hi;
208204
p.bump();
209205
ret spanned(lo, hi, result);

branches/try/src/librustsyntax/parse/eval.rs

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
1-
import parser::{parser,
2-
parse_mod_items, SOURCE_FILE};
1+
import parser::{parser, SOURCE_FILE};
32
import attr::parse_inner_attrs_and_next;
43

54
export eval_crate_directives_to_mod;
65

76
type ctx =
8-
@{p: parser,
9-
sess: parse::parse_sess,
7+
@{sess: parse::parse_sess,
108
cfg: ast::crate_cfg};
119

1210
fn eval_crate_directives(cx: ctx, cdirs: [@ast::crate_directive], prefix: str,
@@ -66,11 +64,10 @@ fn parse_companion_mod(cx: ctx, prefix: str, suffix: option<str>)
6664
#debug("looking for companion mod %s", modpath);
6765
if file_exists(modpath) {
6866
#debug("found companion mod");
69-
let p0 = new_parser_from_file(cx.sess, cx.cfg, modpath,
70-
SOURCE_FILE);
67+
let p0 = new_parser_from_file(cx.sess, cx.cfg, modpath, SOURCE_FILE);
7168
let inner_attrs = parse_inner_attrs_and_next(p0);
7269
let first_item_outer_attrs = inner_attrs.next;
73-
let m0 = parse_mod_items(p0, token::EOF, first_item_outer_attrs);
70+
let m0 = p0.parse_mod_items(token::EOF, first_item_outer_attrs);
7471
cx.sess.chpos = p0.reader.chpos;
7572
cx.sess.byte_pos = cx.sess.byte_pos + p0.reader.pos;
7673
ret (m0.view_items, m0.items, inner_attrs.inner);
@@ -103,11 +100,10 @@ fn eval_crate_directive(cx: ctx, cdir: @ast::crate_directive, prefix: str,
103100
let inner_attrs = parse_inner_attrs_and_next(p0);
104101
let mod_attrs = attrs + inner_attrs.inner;
105102
let first_item_outer_attrs = inner_attrs.next;
106-
let m0 = parse_mod_items(p0, token::EOF, first_item_outer_attrs);
103+
let m0 = p0.parse_mod_items(token::EOF, first_item_outer_attrs);
107104

108-
let i =
109-
parser::mk_item(p0, cdir.span.lo, cdir.span.hi, id,
110-
ast::item_mod(m0), ast::public, mod_attrs);
105+
let i = p0.mk_item(cdir.span.lo, cdir.span.hi, id,
106+
ast::item_mod(m0), ast::public, mod_attrs);
111107
// Thread defids, chpos and byte_pos through the parsers
112108
cx.sess.chpos = p0.reader.chpos;
113109
cx.sess.byte_pos = cx.sess.byte_pos + p0.reader.pos;

0 commit comments

Comments
 (0)