Skip to content

Commit ce1ec64

Browse files
committed
---
yaml --- r: 12132 b: refs/heads/master c: 45a7097 h: refs/heads/master v: v3
1 parent f80a7c5 commit ce1ec64

File tree

8 files changed

+68
-55
lines changed

8 files changed

+68
-55
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: a477aaba08dcb560163ffa940e34898c15d0eccc
2+
refs/heads/master: 45a709766c60869ebdcad776ef9c9804aee7f506
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 4a81779abd786ff22d71434c6d9a5917ea4cdfff
55
refs/heads/try: 2898dcc5d97da9427ac367542382b6239d9c0bbf

trunk/src/rustc/metadata/astencode.rs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -953,25 +953,22 @@ fn new_parse_sess() -> parser::parse_sess {
953953

954954
#[cfg(test)]
955955
iface fake_ext_ctxt {
956-
fn session() -> fake_session;
956+
fn cfg() -> ast::crate_cfg;
957+
fn parse_sess() -> parser::parse_sess;
957958
}
958959

959960
#[cfg(test)]
960-
type fake_options = {cfg: ast::crate_cfg};
961-
962-
#[cfg(test)]
963-
type fake_session = {opts: @fake_options,
964-
parse_sess: parser::parse_sess};
961+
type fake_session = ();
965962

966963
#[cfg(test)]
967964
impl of fake_ext_ctxt for fake_session {
968-
fn session() -> fake_session {self}
965+
fn cfg() -> ast::crate_cfg { [] }
966+
fn parse_sess() -> parser::parse_sess { new_parse_sess() }
969967
}
970968

971969
#[cfg(test)]
972970
fn mk_ctxt() -> fake_ext_ctxt {
973-
let opts : fake_options = {cfg: []};
974-
{opts: @opts, parse_sess: new_parse_sess()} as fake_ext_ctxt
971+
() as fake_ext_ctxt
975972
}
976973

977974
#[cfg(test)]

trunk/src/rustc/syntax/ext/auto_serialize.rs

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ node twice.
7070
7171
*/
7272
import base::*;
73-
import driver::session::session;
7473
import codemap::span;
7574
import std::map;
7675
import std::map::hashmap;
@@ -106,18 +105,16 @@ fn expand(cx: ext_ctxt,
106105
}
107106

108107
_ {
109-
cx.session().span_err(span, "#[auto_serialize] can only be \
110-
applied to type and enum \
111-
definitions");
108+
cx.span_err(span, "#[auto_serialize] can only be \
109+
applied to type and enum \
110+
definitions");
112111
[in_item]
113112
}
114113
}
115114
}
116115
}
117116

118117
impl helpers for ext_ctxt {
119-
fn next_id() -> ast::node_id { self.session().next_node_id() }
120-
121118
fn helper_path(base_path: @ast::path,
122119
helper_name: str) -> @ast::path {
123120
let head = vec::init(base_path.node.idents);
@@ -347,7 +344,7 @@ fn ser_ty(cx: ext_ctxt, tps: ser_tps_map,
347344
}
348345

349346
ast::ty_bot {
350-
cx.session().span_err(
347+
cx.span_err(
351348
ty.span, #fmt["Cannot serialize bottom type"]);
352349
[]
353350
}
@@ -363,7 +360,7 @@ fn ser_ty(cx: ext_ctxt, tps: ser_tps_map,
363360
}
364361

365362
ast::ty_ptr(_) | ast::ty_rptr(_, _) {
366-
cx.session().span_err(
363+
cx.span_err(
367364
ty.span, #fmt["Cannot serialize pointer types"]);
368365
[]
369366
}
@@ -386,7 +383,7 @@ fn ser_ty(cx: ext_ctxt, tps: ser_tps_map,
386383
}
387384

388385
ast::ty_fn(_, _) {
389-
cx.session().span_err(
386+
cx.span_err(
390387
ty.span, #fmt["Cannot serialize function types"]);
391388
[]
392389
}
@@ -444,13 +441,13 @@ fn ser_ty(cx: ext_ctxt, tps: ser_tps_map,
444441
}
445442

446443
ast::ty_mac(_) {
447-
cx.session().span_err(
444+
cx.span_err(
448445
ty.span, #fmt["Cannot serialize macro types"]);
449446
[]
450447
}
451448

452449
ast::ty_infer {
453-
cx.session().span_err(
450+
cx.span_err(
454451
ty.span, #fmt["Cannot serialize inferred types"]);
455452
[]
456453
}

trunk/src/rustc/syntax/ext/base.rs

Lines changed: 34 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import std::map::hashmap;
2-
import driver::session::session;
3-
import codemap::{span, expn_info, expanded_from};
2+
import syntax::parse::parser;
3+
import driver::diagnostic::span_handler;
4+
import codemap::{codemap, span, expn_info, expanded_from};
45
import std::map::str_hash;
56

67
type syntax_expander_ =
@@ -44,7 +45,10 @@ fn syntax_expander_table() -> hashmap<str, syntax_extension> {
4445
}
4546

4647
iface ext_ctxt {
47-
fn session() -> session;
48+
fn session() -> driver::session::session;
49+
fn codemap() -> codemap;
50+
fn parse_sess() -> parser::parse_sess;
51+
fn cfg() -> ast::crate_cfg;
4852
fn print_backtrace();
4953
fn backtrace() -> expn_info;
5054
fn bt_push(ei: codemap::expn_info_);
@@ -57,11 +61,18 @@ iface ext_ctxt {
5761
fn next_id() -> ast::node_id;
5862
}
5963

60-
fn mk_ctxt(sess: session) -> ext_ctxt {
61-
type ctxt_repr = {sess: session,
64+
fn mk_ctxt(session: driver::session::session,
65+
parse_sess: parser::parse_sess,
66+
cfg: ast::crate_cfg) -> ext_ctxt {
67+
type ctxt_repr = {session: driver::session::session,
68+
parse_sess: parser::parse_sess,
69+
cfg: ast::crate_cfg,
6270
mutable backtrace: expn_info};
6371
impl of ext_ctxt for ctxt_repr {
64-
fn session() -> session { self.sess }
72+
fn session() -> driver::session::session { self.session }
73+
fn codemap() -> codemap { self.parse_sess.cm }
74+
fn parse_sess() -> parser::parse_sess { self.parse_sess }
75+
fn cfg() -> ast::crate_cfg { self.cfg }
6576
fn print_backtrace() { }
6677
fn backtrace() -> expn_info { self.backtrace }
6778
fn bt_push(ei: codemap::expn_info_) {
@@ -85,24 +96,34 @@ fn mk_ctxt(sess: session) -> ext_ctxt {
8596
}
8697
fn span_fatal(sp: span, msg: str) -> ! {
8798
self.print_backtrace();
88-
self.sess.span_fatal(sp, msg);
99+
self.parse_sess.span_diagnostic.span_fatal(sp, msg);
89100
}
90101
fn span_err(sp: span, msg: str) {
91102
self.print_backtrace();
92-
self.sess.span_err(sp, msg);
103+
self.parse_sess.span_diagnostic.span_err(sp, msg);
93104
}
94105
fn span_unimpl(sp: span, msg: str) -> ! {
95106
self.print_backtrace();
96-
self.sess.span_unimpl(sp, msg);
107+
self.parse_sess.span_diagnostic.span_unimpl(sp, msg);
97108
}
98109
fn span_bug(sp: span, msg: str) -> ! {
99110
self.print_backtrace();
100-
self.sess.span_bug(sp, msg);
111+
self.parse_sess.span_diagnostic.span_bug(sp, msg);
112+
}
113+
fn bug(msg: str) -> ! {
114+
self.print_backtrace();
115+
self.parse_sess.span_diagnostic.handler().bug(msg);
116+
}
117+
fn next_id() -> ast::node_id {
118+
ret parser::next_node_id(self.parse_sess);
101119
}
102-
fn bug(msg: str) -> ! { self.print_backtrace(); self.sess.bug(msg); }
103-
fn next_id() -> ast::node_id { ret self.sess.next_node_id(); }
104120
}
105-
let imp : ctxt_repr = {sess: sess, mutable backtrace: none};
121+
let imp : ctxt_repr = {
122+
session: session,
123+
parse_sess: parse_sess,
124+
cfg: cfg,
125+
mutable backtrace: none
126+
};
106127
ret imp as ext_ctxt
107128
}
108129

trunk/src/rustc/syntax/ext/expand.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ fn core_macros() -> str {
122122
fn expand_crate(sess: session::session, c: @crate) -> @crate {
123123
let exts = syntax_expander_table();
124124
let afp = default_ast_fold();
125-
let cx: ext_ctxt = mk_ctxt(sess);
125+
let cx: ext_ctxt = mk_ctxt(sess, sess.parse_sess, sess.opts.cfg);
126126
let f_pre =
127127
{fold_expr: bind expand_expr(exts, cx, _, _, _, afp.fold_expr),
128128
fold_mod: bind expand_mod_items(exts, cx, _, _, afp.fold_mod),

trunk/src/rustc/syntax/ext/qquote.rs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import driver::session;
2-
31
import syntax::ast::{crate, expr_, mac_invoc,
42
mac_aq, mac_var};
53
import syntax::fold::*;
@@ -191,13 +189,13 @@ fn finish<T: qq_helper>
191189
(ecx: ext_ctxt, body: ast::mac_body_, f: fn (p: parser) -> T)
192190
-> @ast::expr
193191
{
194-
let cm = ecx.session().parse_sess.cm;
192+
let cm = ecx.codemap();
195193
let str = @codemap::span_to_snippet(body.span, cm);
196194
#debug["qquote--str==%?", str];
197195
let fname = codemap::mk_substr_filename(cm, body.span);
198196
let node = parse_from_source_str
199197
(f, fname, codemap::fss_internal(body.span), str,
200-
ecx.session().opts.cfg, ecx.session().parse_sess);
198+
ecx.cfg(), ecx.parse_sess());
201199
let loc = codemap::lookup_char_pos(cm, body.span.lo);
202200

203201
let sp = node.span();
@@ -239,8 +237,13 @@ fn finish<T: qq_helper>
239237
}
240238

241239
let cx = ecx;
242-
let session_call = {||
243-
mk_call_(cx, sp, mk_access(cx, sp, ["ext_cx"], "session"), [])
240+
241+
let cfg_call = {||
242+
mk_call_(cx, sp, mk_access(cx, sp, ["ext_cx"], "cfg"), [])
243+
};
244+
245+
let parse_sess_call = {||
246+
mk_call_(cx, sp, mk_access(cx, sp, ["ext_cx"], "parse_sess"), [])
244247
};
245248

246249
let pcall = mk_call(cx,sp,
@@ -255,10 +258,8 @@ fn finish<T: qq_helper>
255258
mk_uint(cx,sp, loc.col)]),
256259
mk_unary(cx,sp, ast::box(ast::m_imm),
257260
mk_str(cx,sp, str2)),
258-
mk_access_(cx,sp,
259-
mk_access_(cx,sp, session_call(), "opts"),
260-
"cfg"),
261-
mk_access_(cx,sp, session_call(), "parse_sess")]
261+
cfg_call(),
262+
parse_sess_call()]
262263
);
263264
let mut rcall = pcall;
264265
if (g_len > 0u) {

trunk/src/rustc/syntax/ext/simplext.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ use std;
22

33
import codemap::span;
44
import std::map::{hashmap, str_hash};
5-
import driver::session::session;
65

76
import base::*;
87

@@ -478,7 +477,7 @@ fn p_t_s_rec(cx: ext_ctxt, m: matchable, s: selector, b: binders) {
478477
}
479478
}
480479
_ {
481-
cx.session().bug("undocumented invariant in p_t_s_rec");
480+
cx.bug("undocumented invariant in p_t_s_rec");
482481
}
483482
}
484483
}

trunk/src/test/run-pass/qquote.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,21 +26,19 @@ fn new_parse_sess() -> parser::parse_sess {
2626
}
2727

2828
iface fake_ext_ctxt {
29-
fn session() -> fake_session;
29+
fn cfg() -> ast::crate_cfg;
30+
fn parse_sess() -> parser::parse_sess;
3031
}
3132

32-
type fake_options = {cfg: ast::crate_cfg};
33-
34-
type fake_session = {opts: @fake_options,
35-
parse_sess: parser::parse_sess};
33+
type fake_session = ();
3634

3735
impl of fake_ext_ctxt for fake_session {
38-
fn session() -> fake_session {self}
36+
fn cfg() -> ast::crate_cfg { [] }
37+
fn parse_sess() -> parser::parse_sess { new_parse_sess() }
3938
}
4039

4140
fn mk_ctxt() -> fake_ext_ctxt {
42-
let opts : fake_options = {cfg: []};
43-
{opts: @opts, parse_sess: new_parse_sess()} as fake_ext_ctxt
41+
() as fake_ext_ctxt
4442
}
4543

4644

0 commit comments

Comments
 (0)