rust: Remove extensions' dependency on the session
This commit is contained in:
parent
2142c5ebbb
commit
ba3292d3be
3 changed files with 10 additions and 12 deletions
|
@ -121,7 +121,8 @@ fn compile_upto(sess: session, cfg: ast::crate_cfg,
|
|||
bind front::test::modify_for_testing(sess, crate));
|
||||
crate =
|
||||
time(time_passes, "expansion",
|
||||
bind syntax::ext::expand::expand_crate(sess, crate));
|
||||
bind syntax::ext::expand::expand_crate(
|
||||
sess.parse_sess, sess.opts.cfg, crate));
|
||||
|
||||
if upto == cu_expand { ret {crate: crate, tcx: none}; }
|
||||
|
||||
|
|
|
@ -45,7 +45,6 @@ fn syntax_expander_table() -> hashmap<str, syntax_extension> {
|
|||
}
|
||||
|
||||
iface ext_ctxt {
|
||||
fn session() -> driver::session::session;
|
||||
fn codemap() -> codemap;
|
||||
fn parse_sess() -> parser::parse_sess;
|
||||
fn cfg() -> ast::crate_cfg;
|
||||
|
@ -61,15 +60,12 @@ iface ext_ctxt {
|
|||
fn next_id() -> ast::node_id;
|
||||
}
|
||||
|
||||
fn mk_ctxt(session: driver::session::session,
|
||||
parse_sess: parser::parse_sess,
|
||||
fn mk_ctxt(parse_sess: parser::parse_sess,
|
||||
cfg: ast::crate_cfg) -> ext_ctxt {
|
||||
type ctxt_repr = {session: driver::session::session,
|
||||
parse_sess: parser::parse_sess,
|
||||
type ctxt_repr = {parse_sess: parser::parse_sess,
|
||||
cfg: ast::crate_cfg,
|
||||
mut backtrace: expn_info};
|
||||
impl of ext_ctxt for ctxt_repr {
|
||||
fn session() -> driver::session::session { self.session }
|
||||
fn codemap() -> codemap { self.parse_sess.cm }
|
||||
fn parse_sess() -> parser::parse_sess { self.parse_sess }
|
||||
fn cfg() -> ast::crate_cfg { self.cfg }
|
||||
|
@ -119,7 +115,6 @@ fn mk_ctxt(session: driver::session::session,
|
|||
}
|
||||
}
|
||||
let imp : ctxt_repr = {
|
||||
session: session,
|
||||
parse_sess: parse_sess,
|
||||
cfg: cfg,
|
||||
mut backtrace: none
|
||||
|
|
|
@ -9,6 +9,7 @@ import syntax::ast::{crate, expr_, expr_mac, mac_invoc};
|
|||
import syntax::fold::*;
|
||||
import syntax::ext::base::*;
|
||||
import syntax::ext::qquote::{qq_helper};
|
||||
import syntax::parse::parser;
|
||||
import syntax::parse::parser::parse_expr_from_source_str;
|
||||
|
||||
|
||||
|
@ -119,10 +120,11 @@ fn core_macros() -> str {
|
|||
}";
|
||||
}
|
||||
|
||||
fn expand_crate(sess: session::session, c: @crate) -> @crate {
|
||||
fn expand_crate(parse_sess: parser::parse_sess,
|
||||
cfg: ast::crate_cfg, c: @crate) -> @crate {
|
||||
let exts = syntax_expander_table();
|
||||
let afp = default_ast_fold();
|
||||
let cx: ext_ctxt = mk_ctxt(sess, sess.parse_sess, sess.opts.cfg);
|
||||
let cx: ext_ctxt = mk_ctxt(parse_sess, cfg);
|
||||
let f_pre =
|
||||
{fold_expr: bind expand_expr(exts, cx, _, _, _, afp.fold_expr),
|
||||
fold_mod: bind expand_mod_items(exts, cx, _, _, afp.fold_mod),
|
||||
|
@ -131,8 +133,8 @@ fn expand_crate(sess: session::session, c: @crate) -> @crate {
|
|||
let f = make_fold(f_pre);
|
||||
let cm = parse_expr_from_source_str("<core-macros>",
|
||||
@core_macros(),
|
||||
sess.opts.cfg,
|
||||
sess.parse_sess);
|
||||
cfg,
|
||||
parse_sess);
|
||||
|
||||
// This is run for its side-effects on the expander env,
|
||||
// as it registers all the core macros as expanders.
|
||||
|
|
Loading…
Reference in a new issue