diff --git a/src/grammar/verify.rs b/src/grammar/verify.rs index 10b8abfc7860..b9ff39547f3c 100644 --- a/src/grammar/verify.rs +++ b/src/grammar/verify.rs @@ -287,11 +287,9 @@ fn main() { let options = config::basic_options(); let session = session::build_session(options, None, syntax::diagnostics::registry::Registry::new(&[])); - let filemap = parse::string_to_filemap(&session.parse_sess, - code, - String::from_str("")); + let filemap = session.parse_sess.codemap().new_filemap(String::from_str(""), code); let mut lexer = lexer::StringReader::new(session.diagnostic(), filemap); - let ref cm = lexer.span_diagnostic.cm; + let cm = session.codemap(); // ANTLR let mut token_file = File::open(&Path::new(&args.next().unwrap())).unwrap(); diff --git a/src/librustc/session/mod.rs b/src/librustc/session/mod.rs index f7c0745bac18..87634886009e 100644 --- a/src/librustc/session/mod.rs +++ b/src/librustc/session/mod.rs @@ -231,7 +231,7 @@ impl Session { &self.parse_sess.span_diagnostic } pub fn codemap<'a>(&'a self) -> &'a codemap::CodeMap { - &self.parse_sess.span_diagnostic.cm + self.parse_sess.codemap() } // This exists to help with refactoring to eliminate impossible // cases later on diff --git a/src/librustdoc/html/highlight.rs b/src/librustdoc/html/highlight.rs index 61db84098377..e375ec3afc25 100644 --- a/src/librustdoc/html/highlight.rs +++ b/src/librustdoc/html/highlight.rs @@ -25,9 +25,7 @@ use syntax::parse; pub fn highlight(src: &str, class: Option<&str>, id: Option<&str>) -> String { debug!("highlighting: ================\n{}\n==============", src); let sess = parse::ParseSess::new(); - let fm = parse::string_to_filemap(&sess, - src.to_string(), - "".to_string()); + let fm = sess.codemap().new_filemap("".to_string(), src.to_string()); let mut out = Vec::new(); doit(&sess, @@ -62,7 +60,7 @@ fn doit(sess: &parse::ParseSess, mut lexer: lexer::StringReader, loop { let next = lexer.next_token(); - let snip = |sp| sess.span_diagnostic.cm.span_to_snippet(sp).unwrap(); + let snip = |sp| sess.codemap().span_to_snippet(sp).unwrap(); if next.tok == token::Eof { break } @@ -178,7 +176,7 @@ fn doit(sess: &parse::ParseSess, mut lexer: lexer::StringReader, // as mentioned above, use the original source code instead of // stringifying this token - let snip = sess.span_diagnostic.cm.span_to_snippet(next.sp).unwrap(); + let snip = sess.codemap().span_to_snippet(next.sp).unwrap(); if klass == "" { try!(write!(out, "{}", Escape(&snip))); } else { diff --git a/src/libsyntax/ext/base.rs b/src/libsyntax/ext/base.rs index 2ecefef51045..2d3c2e8223ae 100644 --- a/src/libsyntax/ext/base.rs +++ b/src/libsyntax/ext/base.rs @@ -648,7 +648,7 @@ impl<'a> ExtCtxt<'a> { parse::tts_to_parser(self.parse_sess, tts.to_vec(), self.cfg()) } - pub fn codemap(&self) -> &'a CodeMap { &self.parse_sess.span_diagnostic.cm } + pub fn codemap(&self) -> &'a CodeMap { self.parse_sess.codemap() } pub fn parse_sess(&self) -> &'a parse::ParseSess { self.parse_sess } pub fn cfg(&self) -> ast::CrateConfig { self.cfg.clone() } pub fn call_site(&self) -> Span { diff --git a/src/libsyntax/parse/mod.rs b/src/libsyntax/parse/mod.rs index 21253982e51d..0db83c6f1b13 100644 --- a/src/libsyntax/parse/mod.rs +++ b/src/libsyntax/parse/mod.rs @@ -58,6 +58,10 @@ impl ParseSess { included_mod_stack: RefCell::new(vec![]) } } + + pub fn codemap(&self) -> &CodeMap { + &self.span_diagnostic.cm + } } // a bunch of utility functions of the form parse__from_ @@ -170,7 +174,7 @@ pub fn new_parser_from_source_str<'a>(sess: &'a ParseSess, name: String, source: String) -> Parser<'a> { - filemap_to_parser(sess, string_to_filemap(sess, source, name), cfg) + filemap_to_parser(sess, sess.codemap().new_filemap(name, source), cfg) } /// Create a new parser, handling errors as appropriate @@ -234,8 +238,7 @@ pub fn file_to_filemap(sess: &ParseSess, path: &Path, spanopt: Option) }; match str::from_utf8(&bytes[..]).ok() { Some(s) => { - string_to_filemap(sess, s.to_string(), - path.to_str().unwrap().to_string()) + sess.codemap().new_filemap(path.to_str().unwrap().to_string(), s.to_string()) } None => { err(&format!("{:?} is not UTF-8 encoded", path.display())); @@ -244,13 +247,6 @@ pub fn file_to_filemap(sess: &ParseSess, path: &Path, spanopt: Option) } } -/// 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: &ParseSess, source: String, path: String) - -> Rc { - sess.span_diagnostic.cm.new_filemap(path, source) -} - /// Given a filemap, produce a sequence of token-trees pub fn filemap_to_tts(sess: &ParseSess, filemap: Rc) -> Vec { @@ -1104,7 +1100,7 @@ mod tests { let span = tts.iter().rev().next().unwrap().get_span(); - match sess.span_diagnostic.cm.span_to_snippet(span) { + match sess.codemap().span_to_snippet(span) { Ok(s) => assert_eq!(&s[..], "{ body }"), Err(_) => panic!("could not get snippet"), } diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 541ec16b415d..d890708d1234 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -4835,8 +4835,7 @@ impl<'a> Parser<'a> { outer_attrs: &[ast::Attribute], id_sp: Span) -> PResult<(ast::Item_, Vec )> { - let mut prefix = PathBuf::from(&self.sess.span_diagnostic.cm - .span_to_filename(self.span)); + let mut prefix = PathBuf::from(&self.sess.codemap().span_to_filename(self.span)); prefix.pop(); let mut dir_path = prefix; for part in &self.mod_path_stack { diff --git a/src/libsyntax/test.rs b/src/libsyntax/test.rs index a3cfb647853d..458e3f7f0bd9 100644 --- a/src/libsyntax/test.rs +++ b/src/libsyntax/test.rs @@ -301,7 +301,7 @@ fn ignored_span(cx: &TestCtxt, sp: Span) -> Span { allow_internal_unstable: true, } }; - let expn_id = cx.sess.span_diagnostic.cm.record_expansion(info); + let expn_id = cx.sess.codemap().record_expansion(info); let mut sp = sp; sp.expn_id = expn_id; return sp; diff --git a/src/libsyntax/util/parser_testing.rs b/src/libsyntax/util/parser_testing.rs index 1ecfe9c96f4c..6e6e2d181b9e 100644 --- a/src/libsyntax/util/parser_testing.rs +++ b/src/libsyntax/util/parser_testing.rs @@ -9,7 +9,7 @@ // except according to those terms. use ast; -use parse::{ParseSess,string_to_filemap,filemap_to_tts}; +use parse::{ParseSess,filemap_to_tts}; use parse::new_parser_from_source_str; use parse::parser::Parser; use parse::token; @@ -19,8 +19,7 @@ use str::char_at; /// Map a string to tts, using a made-up filename: pub fn string_to_tts(source_str: String) -> Vec { let ps = ParseSess::new(); - filemap_to_tts(&ps, - string_to_filemap(&ps, source_str, "bogofile".to_string())) + filemap_to_tts(&ps, ps.codemap().new_filemap("bogofile".to_string(), source_str)) } /// Map string to parser (via tts)