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));
|
bind front::test::modify_for_testing(sess, crate));
|
||||||
crate =
|
crate =
|
||||||
time(time_passes, "expansion",
|
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}; }
|
if upto == cu_expand { ret {crate: crate, tcx: none}; }
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,6 @@ fn syntax_expander_table() -> hashmap<str, syntax_extension> {
|
||||||
}
|
}
|
||||||
|
|
||||||
iface ext_ctxt {
|
iface ext_ctxt {
|
||||||
fn session() -> driver::session::session;
|
|
||||||
fn codemap() -> codemap;
|
fn codemap() -> codemap;
|
||||||
fn parse_sess() -> parser::parse_sess;
|
fn parse_sess() -> parser::parse_sess;
|
||||||
fn cfg() -> ast::crate_cfg;
|
fn cfg() -> ast::crate_cfg;
|
||||||
|
@ -61,15 +60,12 @@ iface ext_ctxt {
|
||||||
fn next_id() -> ast::node_id;
|
fn next_id() -> ast::node_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn mk_ctxt(session: driver::session::session,
|
fn mk_ctxt(parse_sess: parser::parse_sess,
|
||||||
parse_sess: parser::parse_sess,
|
|
||||||
cfg: ast::crate_cfg) -> ext_ctxt {
|
cfg: ast::crate_cfg) -> ext_ctxt {
|
||||||
type ctxt_repr = {session: driver::session::session,
|
type ctxt_repr = {parse_sess: parser::parse_sess,
|
||||||
parse_sess: parser::parse_sess,
|
|
||||||
cfg: ast::crate_cfg,
|
cfg: ast::crate_cfg,
|
||||||
mut backtrace: expn_info};
|
mut backtrace: expn_info};
|
||||||
impl of ext_ctxt for ctxt_repr {
|
impl of ext_ctxt for ctxt_repr {
|
||||||
fn session() -> driver::session::session { self.session }
|
|
||||||
fn codemap() -> codemap { self.parse_sess.cm }
|
fn codemap() -> codemap { self.parse_sess.cm }
|
||||||
fn parse_sess() -> parser::parse_sess { self.parse_sess }
|
fn parse_sess() -> parser::parse_sess { self.parse_sess }
|
||||||
fn cfg() -> ast::crate_cfg { self.cfg }
|
fn cfg() -> ast::crate_cfg { self.cfg }
|
||||||
|
@ -119,7 +115,6 @@ fn mk_ctxt(session: driver::session::session,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let imp : ctxt_repr = {
|
let imp : ctxt_repr = {
|
||||||
session: session,
|
|
||||||
parse_sess: parse_sess,
|
parse_sess: parse_sess,
|
||||||
cfg: cfg,
|
cfg: cfg,
|
||||||
mut backtrace: none
|
mut backtrace: none
|
||||||
|
|
|
@ -9,6 +9,7 @@ import syntax::ast::{crate, expr_, expr_mac, mac_invoc};
|
||||||
import syntax::fold::*;
|
import syntax::fold::*;
|
||||||
import syntax::ext::base::*;
|
import syntax::ext::base::*;
|
||||||
import syntax::ext::qquote::{qq_helper};
|
import syntax::ext::qquote::{qq_helper};
|
||||||
|
import syntax::parse::parser;
|
||||||
import syntax::parse::parser::parse_expr_from_source_str;
|
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 exts = syntax_expander_table();
|
||||||
let afp = default_ast_fold();
|
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 =
|
let f_pre =
|
||||||
{fold_expr: bind expand_expr(exts, cx, _, _, _, afp.fold_expr),
|
{fold_expr: bind expand_expr(exts, cx, _, _, _, afp.fold_expr),
|
||||||
fold_mod: bind expand_mod_items(exts, cx, _, _, afp.fold_mod),
|
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 f = make_fold(f_pre);
|
||||||
let cm = parse_expr_from_source_str("<core-macros>",
|
let cm = parse_expr_from_source_str("<core-macros>",
|
||||||
@core_macros(),
|
@core_macros(),
|
||||||
sess.opts.cfg,
|
cfg,
|
||||||
sess.parse_sess);
|
parse_sess);
|
||||||
|
|
||||||
// This is run for its side-effects on the expander env,
|
// This is run for its side-effects on the expander env,
|
||||||
// as it registers all the core macros as expanders.
|
// as it registers all the core macros as expanders.
|
||||||
|
|
Loading…
Reference in a new issue