1
Fork 0

librustc: De-@mut the parse session

This commit is contained in:
Patrick Walton 2013-12-27 11:56:29 -08:00
parent f553701da6
commit 3aa19a6b86
8 changed files with 48 additions and 49 deletions

View file

@ -204,7 +204,7 @@ pub struct Session_ {
targ_cfg: @config,
opts: @options,
cstore: @metadata::cstore::CStore,
parse_sess: @mut ParseSess,
parse_sess: @ParseSess,
codemap: @codemap::CodeMap,
// For a library crate, this is always none
entry_fn: RefCell<Option<(NodeId, codemap::Span)>>,

View file

@ -1429,18 +1429,18 @@ fn decode_item_ast(par_doc: ebml::Doc) -> @ast::item {
#[cfg(test)]
trait fake_ext_ctxt {
fn cfg(&self) -> ast::CrateConfig;
fn parse_sess(&self) -> @mut parse::ParseSess;
fn parse_sess(&self) -> @parse::ParseSess;
fn call_site(&self) -> Span;
fn ident_of(&self, st: &str) -> ast::Ident;
}
#[cfg(test)]
type fake_session = @mut parse::ParseSess;
type fake_session = @parse::ParseSess;
#[cfg(test)]
impl fake_ext_ctxt for fake_session {
fn cfg(&self) -> ast::CrateConfig { ~[] }
fn parse_sess(&self) -> @mut parse::ParseSess { *self }
fn parse_sess(&self) -> @parse::ParseSess { *self }
fn call_site(&self) -> Span {
codemap::Span {
lo: codemap::BytePos(0),

View file

@ -284,7 +284,7 @@ pub fn syntax_expander_table() -> SyntaxEnv {
// when a macro expansion occurs, the resulting nodes have the backtrace()
// -> expn_info of their expansion context stored into their span.
pub struct ExtCtxt {
parse_sess: @mut parse::ParseSess,
parse_sess: @parse::ParseSess,
cfg: ast::CrateConfig,
backtrace: Option<@ExpnInfo>,
@ -293,7 +293,7 @@ pub struct ExtCtxt {
}
impl ExtCtxt {
pub fn new(parse_sess: @mut parse::ParseSess, cfg: ast::CrateConfig)
pub fn new(parse_sess: @parse::ParseSess, cfg: ast::CrateConfig)
-> ExtCtxt {
ExtCtxt {
parse_sess: parse_sess,
@ -320,7 +320,7 @@ impl ExtCtxt {
}
pub fn codemap(&self) -> @CodeMap { self.parse_sess.cm }
pub fn parse_sess(&self) -> @mut parse::ParseSess { self.parse_sess }
pub fn parse_sess(&self) -> @parse::ParseSess { self.parse_sess }
pub fn cfg(&self) -> ast::CrateConfig { self.cfg.clone() }
pub fn call_site(&self) -> Span {
match self.backtrace {

View file

@ -889,7 +889,7 @@ impl ast_fold for Injector {
// add a bunch of macros as though they were placed at the head of the
// program (ick). This should run before cfg stripping.
pub fn inject_std_macros(parse_sess: @mut parse::ParseSess,
pub fn inject_std_macros(parse_sess: @parse::ParseSess,
cfg: ast::CrateConfig,
c: Crate)
-> Crate {
@ -939,7 +939,7 @@ impl<'a> ast_fold for MacroExpander<'a> {
}
}
pub fn expand_crate(parse_sess: @mut parse::ParseSess,
pub fn expand_crate(parse_sess: @parse::ParseSess,
cfg: ast::CrateConfig,
c: Crate) -> Crate {
let mut cx = ExtCtxt::new(parse_sess, cfg.clone());

View file

@ -188,9 +188,9 @@ pub enum named_match {
pub type earley_item = ~MatcherPos;
pub fn nameize(p_s: @mut ParseSess, ms: &[matcher], res: &[@named_match])
pub fn nameize(p_s: @ParseSess, ms: &[matcher], res: &[@named_match])
-> HashMap<Ident,@named_match> {
fn n_rec(p_s: @mut ParseSess, m: &matcher, res: &[@named_match],
fn n_rec(p_s: @ParseSess, m: &matcher, res: &[@named_match],
ret_val: &mut HashMap<Ident, @named_match>) {
match *m {
codemap::Spanned {node: match_tok(_), .. } => (),
@ -222,7 +222,7 @@ pub enum parse_result {
}
pub fn parse_or_else(
sess: @mut ParseSess,
sess: @ParseSess,
cfg: ast::CrateConfig,
rdr: @mut reader,
ms: ~[matcher]
@ -243,12 +243,11 @@ pub fn token_name_eq(t1 : &Token, t2 : &Token) -> bool {
}
}
pub fn parse(
sess: @mut ParseSess,
cfg: ast::CrateConfig,
rdr: @mut reader,
ms: &[matcher]
) -> parse_result {
pub fn parse(sess: @ParseSess,
cfg: ast::CrateConfig,
rdr: @mut reader,
ms: &[matcher])
-> parse_result {
let mut cur_eis = ~[];
cur_eis.push(initial_matcher_pos(ms.to_owned(), None, rdr.peek().sp.lo));

View file

@ -47,9 +47,9 @@ pub struct ParseSess {
included_mod_stack: RefCell<~[Path]>,
}
pub fn new_parse_sess(demitter: Option<@Emitter>) -> @mut ParseSess {
pub fn new_parse_sess(demitter: Option<@Emitter>) -> @ParseSess {
let cm = @CodeMap::new();
@mut ParseSess {
@ParseSess {
cm: cm,
span_diagnostic: mk_span_handler(mk_handler(demitter), cm),
included_mod_stack: RefCell::new(~[]),
@ -58,8 +58,8 @@ pub fn new_parse_sess(demitter: Option<@Emitter>) -> @mut ParseSess {
pub fn new_parse_sess_special_handler(sh: @mut SpanHandler,
cm: @codemap::CodeMap)
-> @mut ParseSess {
@mut ParseSess {
-> @ParseSess {
@ParseSess {
cm: cm,
span_diagnostic: sh,
included_mod_stack: RefCell::new(~[]),
@ -74,7 +74,7 @@ pub fn new_parse_sess_special_handler(sh: @mut SpanHandler,
pub fn parse_crate_from_file(
input: &Path,
cfg: ast::CrateConfig,
sess: @mut ParseSess
sess: @ParseSess
) -> ast::Crate {
new_parser_from_file(sess, /*bad*/ cfg.clone(), input).parse_crate_mod()
// why is there no p.abort_if_errors here?
@ -83,7 +83,7 @@ pub fn parse_crate_from_file(
pub fn parse_crate_attrs_from_file(
input: &Path,
cfg: ast::CrateConfig,
sess: @mut ParseSess
sess: @ParseSess
) -> ~[ast::Attribute] {
let mut parser = new_parser_from_file(sess, cfg, input);
let (inner, _) = parser.parse_inner_attrs_and_next();
@ -94,7 +94,7 @@ pub fn parse_crate_from_source_str(
name: @str,
source: @str,
cfg: ast::CrateConfig,
sess: @mut ParseSess
sess: @ParseSess
) -> ast::Crate {
let mut p = new_parser_from_source_str(sess,
/*bad*/ cfg.clone(),
@ -107,7 +107,7 @@ pub fn parse_crate_attrs_from_source_str(
name: @str,
source: @str,
cfg: ast::CrateConfig,
sess: @mut ParseSess
sess: @ParseSess
) -> ~[ast::Attribute] {
let mut p = new_parser_from_source_str(sess,
/*bad*/ cfg.clone(),
@ -121,7 +121,7 @@ pub fn parse_expr_from_source_str(
name: @str,
source: @str,
cfg: ast::CrateConfig,
sess: @mut ParseSess
sess: @ParseSess
) -> @ast::Expr {
let mut p = new_parser_from_source_str(sess, cfg, name, source);
maybe_aborted(p.parse_expr(), p)
@ -132,7 +132,7 @@ pub fn parse_item_from_source_str(
source: @str,
cfg: ast::CrateConfig,
attrs: ~[ast::Attribute],
sess: @mut ParseSess
sess: @ParseSess
) -> Option<@ast::item> {
let mut p = new_parser_from_source_str(sess, cfg, name, source);
maybe_aborted(p.parse_item(attrs),p)
@ -142,7 +142,7 @@ pub fn parse_meta_from_source_str(
name: @str,
source: @str,
cfg: ast::CrateConfig,
sess: @mut ParseSess
sess: @ParseSess
) -> @ast::MetaItem {
let mut p = new_parser_from_source_str(sess, cfg, name, source);
maybe_aborted(p.parse_meta_item(),p)
@ -153,7 +153,7 @@ pub fn parse_stmt_from_source_str(
source: @str,
cfg: ast::CrateConfig,
attrs: ~[ast::Attribute],
sess: @mut ParseSess
sess: @ParseSess
) -> @ast::Stmt {
let mut p = new_parser_from_source_str(
sess,
@ -168,7 +168,7 @@ pub fn parse_tts_from_source_str(
name: @str,
source: @str,
cfg: ast::CrateConfig,
sess: @mut ParseSess
sess: @ParseSess
) -> ~[ast::token_tree] {
let mut p = new_parser_from_source_str(
sess,
@ -192,7 +192,7 @@ pub fn parse_from_source_str<T>(
ss: codemap::FileSubstr,
source: @str,
cfg: ast::CrateConfig,
sess: @mut ParseSess)
sess: @ParseSess)
-> T {
let mut p = new_parser_from_source_substr(sess, cfg, name, ss, source);
let r = f(&mut p);
@ -203,7 +203,7 @@ pub fn parse_from_source_str<T>(
}
// Create a new parser from a source string
pub fn new_parser_from_source_str(sess: @mut ParseSess,
pub fn new_parser_from_source_str(sess: @ParseSess,
cfg: ast::CrateConfig,
name: @str,
source: @str)
@ -213,7 +213,7 @@ pub fn new_parser_from_source_str(sess: @mut ParseSess,
// Create a new parser from a source string where the origin
// is specified as a substring of another file.
pub fn new_parser_from_source_substr(sess: @mut ParseSess,
pub fn new_parser_from_source_substr(sess: @ParseSess,
cfg: ast::CrateConfig,
name: @str,
ss: codemap::FileSubstr,
@ -225,7 +225,7 @@ pub fn new_parser_from_source_substr(sess: @mut ParseSess,
/// Create a new parser, handling errors as appropriate
/// if the file doesn't exist
pub fn new_parser_from_file(
sess: @mut ParseSess,
sess: @ParseSess,
cfg: ast::CrateConfig,
path: &Path
) -> Parser {
@ -236,7 +236,7 @@ pub fn new_parser_from_file(
/// the file at the given path to the codemap, and return a parser.
/// On an error, use the given span as the source of the problem.
pub fn new_sub_parser_from_file(
sess: @mut ParseSess,
sess: @ParseSess,
cfg: ast::CrateConfig,
path: &Path,
sp: Span
@ -245,7 +245,7 @@ pub fn new_sub_parser_from_file(
}
/// Given a filemap and config, return a parser
pub fn filemap_to_parser(sess: @mut ParseSess,
pub fn filemap_to_parser(sess: @ParseSess,
filemap: @FileMap,
cfg: ast::CrateConfig) -> Parser {
tts_to_parser(sess,filemap_to_tts(sess,filemap),cfg)
@ -253,7 +253,7 @@ pub fn filemap_to_parser(sess: @mut ParseSess,
// must preserve old name for now, because quote! from the *existing*
// compiler expands into it
pub fn new_parser_from_tts(sess: @mut ParseSess,
pub fn new_parser_from_tts(sess: @ParseSess,
cfg: ast::CrateConfig,
tts: ~[ast::token_tree]) -> Parser {
tts_to_parser(sess,tts,cfg)
@ -264,7 +264,7 @@ pub fn new_parser_from_tts(sess: @mut ParseSess,
/// Given a session and a path and an optional span (for error reporting),
/// add the path to the session's codemap and return the new filemap.
pub fn file_to_filemap(sess: @mut ParseSess, path: &Path, spanopt: Option<Span>)
pub fn file_to_filemap(sess: @ParseSess, path: &Path, spanopt: Option<Span>)
-> @FileMap {
let err = |msg: &str| {
match spanopt {
@ -293,20 +293,20 @@ pub fn file_to_filemap(sess: @mut ParseSess, path: &Path, spanopt: Option<Span>)
// given a session and a string, add the string to
// the session's codemap and return the new filemap
pub fn string_to_filemap(sess: @mut ParseSess, source: @str, path: @str)
pub fn string_to_filemap(sess: @ParseSess, source: @str, path: @str)
-> @FileMap {
sess.cm.new_filemap(path, source)
}
// given a session and a string and a path and a FileSubStr, add
// the string to the CodeMap and return the new FileMap
pub fn substring_to_filemap(sess: @mut ParseSess, source: @str, path: @str,
pub fn substring_to_filemap(sess: @ParseSess, source: @str, path: @str,
filesubstr: FileSubstr) -> @FileMap {
sess.cm.new_filemap_w_substr(path,filesubstr,source)
}
// given a filemap, produce a sequence of token-trees
pub fn filemap_to_tts(sess: @mut ParseSess, filemap: @FileMap)
pub fn filemap_to_tts(sess: @ParseSess, filemap: @FileMap)
-> ~[ast::token_tree] {
// it appears to me that the cfg doesn't matter here... indeed,
// parsing tt's probably shouldn't require a parser at all.
@ -317,7 +317,7 @@ pub fn filemap_to_tts(sess: @mut ParseSess, filemap: @FileMap)
}
// given tts and cfg, produce a parser
pub fn tts_to_parser(sess: @mut ParseSess,
pub fn tts_to_parser(sess: @ParseSess,
tts: ~[ast::token_tree],
cfg: ast::CrateConfig) -> Parser {
let trdr = lexer::new_tt_reader(sess.span_diagnostic, None, tts);

View file

@ -286,8 +286,8 @@ struct ParsedItemsAndViewItems {
/* ident is handled by common.rs */
pub fn Parser(sess: @mut ParseSess, cfg: ast::CrateConfig, rdr: @mut reader)
-> Parser {
pub fn Parser(sess: @ParseSess, cfg: ast::CrateConfig, rdr: @mut reader)
-> Parser {
let tok0 = rdr.next_token();
let interner = get_ident_interner();
let span = tok0.sp;
@ -324,7 +324,7 @@ pub fn Parser(sess: @mut ParseSess, cfg: ast::CrateConfig, rdr: @mut reader)
}
pub struct Parser {
sess: @mut ParseSess,
sess: @ParseSess,
cfg: CrateConfig,
// the current token:
token: token::Token,

View file

@ -17,7 +17,7 @@ use parse::token;
// map a string to tts, using a made-up filename: return both the token_trees
// and the ParseSess
pub fn string_to_tts_and_sess (source_str : @str) -> (~[ast::token_tree],@mut ParseSess) {
pub fn string_to_tts_and_sess (source_str : @str) -> (~[ast::token_tree],@ParseSess) {
let ps = new_parse_sess(None);
(filemap_to_tts(ps,string_to_filemap(ps,source_str,@"bogofile")),ps)
}
@ -28,7 +28,7 @@ pub fn string_to_tts(source_str : @str) -> ~[ast::token_tree] {
tts
}
pub fn string_to_parser_and_sess(source_str: @str) -> (Parser,@mut ParseSess) {
pub fn string_to_parser_and_sess(source_str: @str) -> (Parser,@ParseSess) {
let ps = new_parse_sess(None);
(new_parser_from_source_str(ps,~[],@"bogofile",source_str),ps)
}
@ -54,7 +54,7 @@ pub fn string_to_crate (source_str : @str) -> ast::Crate {
}
// parse a string, return a crate and the ParseSess
pub fn string_to_crate_and_sess (source_str : @str) -> (ast::Crate,@mut ParseSess) {
pub fn string_to_crate_and_sess (source_str : @str) -> (ast::Crate,@ParseSess) {
let (mut p,ps) = string_to_parser_and_sess(source_str);
(p.parse_crate_mod(),ps)
}