Move tracking of the next NodeId from syntax's ParseSess to rustc's Session.

This commit is contained in:
Eduard Burtescu 2015-05-13 16:45:50 +03:00
parent 222cd73b8a
commit 6a045b9d1c
2 changed files with 15 additions and 24 deletions

View file

@ -18,7 +18,7 @@ use parse::parser::Parser;
use ptr::P;
use str::char_at;
use std::cell::{Cell, RefCell};
use std::cell::RefCell;
use std::fs::File;
use std::io::Read;
use std::iter;
@ -44,14 +44,12 @@ pub struct ParseSess {
pub span_diagnostic: SpanHandler, // better be the same as the one in the reader!
/// Used to determine and report recursive mod inclusions
included_mod_stack: RefCell<Vec<PathBuf>>,
pub node_id: Cell<ast::NodeId>,
}
pub fn new_parse_sess() -> ParseSess {
ParseSess {
span_diagnostic: mk_span_handler(default_handler(Auto, None, true), CodeMap::new()),
included_mod_stack: RefCell::new(Vec::new()),
node_id: Cell::new(1),
}
}
@ -59,23 +57,6 @@ pub fn new_parse_sess_special_handler(sh: SpanHandler) -> ParseSess {
ParseSess {
span_diagnostic: sh,
included_mod_stack: RefCell::new(Vec::new()),
node_id: Cell::new(1),
}
}
impl ParseSess {
pub fn next_node_id(&self) -> ast::NodeId {
self.reserve_node_ids(1)
}
pub fn reserve_node_ids(&self, count: ast::NodeId) -> ast::NodeId {
let v = self.node_id.get();
match v.checked_add(count) {
Some(next) => { self.node_id.set(next); }
None => panic!("Input too large, ran out of node ids!")
}
v
}
}