#[cfg(test)]
fn mk_ctxt() -> parse::ParseSess {
- parse::new_parse_sess()
+ parse::ParseSess::new()
}
#[cfg(test)]
parse::parse_meta_from_source_str("cfgspec".to_string(),
s.to_string(),
Vec::new(),
- &parse::new_parse_sess())
+ &parse::ParseSess::new())
}).collect::<ast::CrateConfig>()
}
let codemap = codemap::CodeMap::new();
let diagnostic_handler =
- diagnostic::default_handler(sopts.color, Some(registry), can_print_warnings);
+ diagnostic::Handler::new(sopts.color, Some(registry), can_print_warnings);
let span_diagnostic_handler =
- diagnostic::mk_span_handler(diagnostic_handler, codemap);
+ diagnostic::SpanHandler::new(diagnostic_handler, codemap);
build_session_(sopts, local_crate_source_file, span_diagnostic_handler)
}
}
};
let target_cfg = config::build_target_config(&sopts, &span_diagnostic);
- let p_s = parse::new_parse_sess_special_handler(span_diagnostic);
+ let p_s = parse::ParseSess::with_span_handler(span_diagnostic);
let default_sysroot = match sopts.maybe_sysroot {
Some(_) => None,
None => Some(filesearch::get_or_default_sysroot())
// this is 1. ugly, 2. error prone.
- let handler = diagnostic::default_handler(diagnostic::Auto, None, true);
+ let handler = diagnostic::Handler::new(diagnostic::Auto, None, true);
let get_req_field = |name: &str| {
match obj.find(name)
let codemap =
CodeMap::new();
let diagnostic_handler =
- diagnostic::mk_handler(true, emitter);
+ diagnostic::Handler::with_emitter(true, emitter);
let span_diagnostic_handler =
- diagnostic::mk_span_handler(diagnostic_handler, codemap);
+ diagnostic::SpanHandler::new(diagnostic_handler, codemap);
let sess = session::build_session_(options, None, span_diagnostic_handler);
rustc_lint::register_builtins(&mut sess.lint_store.borrow_mut(), Some(&sess));
use util::common::path2cstr;
use syntax::codemap;
use syntax::diagnostic;
-use syntax::diagnostic::{Emitter, Handler, Level, mk_handler};
+use syntax::diagnostic::{Emitter, Handler, Level};
use std::ffi::{CStr, CString};
use std::fs;
futures.push(rx);
thread::Builder::new().name(format!("codegen-{}", i)).spawn(move || {
- let diag_handler = mk_handler(true, box diag_emitter);
+ let diag_handler = Handler::with_emitter(true, box diag_emitter);
// Must construct cgcx inside the proc because it has non-Send
// fields.
};
let codemap = codemap::CodeMap::new();
- let diagnostic_handler = diagnostic::default_handler(diagnostic::Auto, None, true);
+ let diagnostic_handler = diagnostic::Handler::new(diagnostic::Auto, None, true);
let span_diagnostic_handler =
- diagnostic::mk_span_handler(diagnostic_handler, codemap);
+ diagnostic::SpanHandler::new(diagnostic_handler, codemap);
let sess = session::build_session_(sessopts, cpath,
span_diagnostic_handler);
/// Highlights some source code, returning the HTML output.
pub fn highlight(src: &str, class: Option<&str>, id: Option<&str>) -> String {
debug!("highlighting: ================\n{}\n==============", src);
- let sess = parse::new_parse_sess();
+ let sess = parse::ParseSess::new();
let fm = parse::string_to_filemap(&sess,
src.to_string(),
"<stdin>".to_string());
};
let codemap = CodeMap::new();
- let diagnostic_handler = diagnostic::default_handler(diagnostic::Auto, None, true);
+ let diagnostic_handler = diagnostic::Handler::new(diagnostic::Auto, None, true);
let span_diagnostic_handler =
- diagnostic::mk_span_handler(diagnostic_handler, codemap);
+ diagnostic::SpanHandler::new(diagnostic_handler, codemap);
let sess = session::build_session_(sessopts,
Some(input_path.clone()),
// it with a sink that is also passed to rustc itself. When this function
// returns the output of the sink is copied onto the output of our own thread.
//
- // The basic idea is to not use a default_handler() for rustc, and then also
+ // The basic idea is to not use a default Handler for rustc, and then also
// not print things by default to the actual stderr.
struct Sink(Arc<Mutex<Vec<u8>>>);
impl Write for Sink {
// Compile the code
let codemap = CodeMap::new();
- let diagnostic_handler = diagnostic::mk_handler(true, box emitter);
+ let diagnostic_handler = diagnostic::Handler::with_emitter(true, box emitter);
let span_diagnostic_handler =
- diagnostic::mk_span_handler(diagnostic_handler, codemap);
+ diagnostic::SpanHandler::new(diagnostic_handler, codemap);
let sess = session::build_session_(sessopts,
None,
}
impl SpanHandler {
+ pub fn new(handler: Handler, cm: codemap::CodeMap) -> SpanHandler {
+ SpanHandler {
+ handler: handler,
+ cm: cm,
+ }
+ }
pub fn span_fatal(&self, sp: Span, msg: &str) -> FatalError {
self.handler.emit(Some((&self.cm, sp)), msg, Fatal);
return FatalError;
}
impl Handler {
+ pub fn new(color_config: ColorConfig,
+ registry: Option<diagnostics::registry::Registry>,
+ can_emit_warnings: bool) -> Handler {
+ let emitter = Box::new(EmitterWriter::stderr(color_config, registry));
+ Handler::with_emitter(can_emit_warnings, emitter)
+ }
+ pub fn with_emitter(can_emit_warnings: bool, e: Box<Emitter + Send>) -> Handler {
+ Handler {
+ err_count: Cell::new(0),
+ emit: RefCell::new(e),
+ can_emit_warnings: can_emit_warnings
+ }
+ }
pub fn fatal(&self, msg: &str) -> ! {
self.emit.borrow_mut().emit(None, msg, None, Fatal);
panic!(FatalError);
}
}
-pub fn mk_span_handler(handler: Handler, cm: codemap::CodeMap) -> SpanHandler {
- SpanHandler {
- handler: handler,
- cm: cm,
- }
-}
-
-pub fn default_handler(color_config: ColorConfig,
- registry: Option<diagnostics::registry::Registry>,
- can_emit_warnings: bool) -> Handler {
- mk_handler(can_emit_warnings, Box::new(EmitterWriter::stderr(color_config, registry)))
-}
-
-pub fn mk_handler(can_emit_warnings: bool, e: Box<Emitter + Send>) -> Handler {
- Handler {
- err_count: Cell::new(0),
- emit: RefCell::new(e),
- can_emit_warnings: can_emit_warnings
- }
-}
-
#[derive(Copy, PartialEq, Clone, Debug)]
pub enum Level {
Bug,
#[test] fn macros_cant_escape_fns_test () {
let src = "fn bogus() {macro_rules! z (() => (3+4));}\
fn inty() -> i32 { z!() }".to_string();
- let sess = parse::new_parse_sess();
+ let sess = parse::ParseSess::new();
let crate_ast = parse::parse_crate_from_source_str(
"<test>".to_string(),
src,
#[test] fn macros_cant_escape_mods_test () {
let src = "mod foo {macro_rules! z (() => (3+4));}\
fn inty() -> i32 { z!() }".to_string();
- let sess = parse::new_parse_sess();
+ let sess = parse::ParseSess::new();
let crate_ast = parse::parse_crate_from_source_str(
"<test>".to_string(),
src,
#[test] fn macros_can_escape_flattened_mods_test () {
let src = "#[macro_use] mod foo {macro_rules! z (() => (3+4));}\
fn inty() -> i32 { z!() }".to_string();
- let sess = parse::new_parse_sess();
+ let sess = parse::ParseSess::new();
let crate_ast = parse::parse_crate_from_source_str(
"<test>".to_string(),
src,
}
fn expand_crate_str(crate_str: String) -> ast::Crate {
- let ps = parse::new_parse_sess();
+ let ps = parse::ParseSess::new();
let crate_ast = panictry!(string_to_parser(&ps, crate_str).parse_crate_mod());
// the cfg argument actually does matter, here...
expand_crate(&ps,test_ecfg(),vec!(),vec!(),crate_ast)
fn mk_sh() -> diagnostic::SpanHandler {
// FIXME (#22405): Replace `Box::new` with `box` here when/if possible.
let emitter = diagnostic::EmitterWriter::new(Box::new(io::sink()), None);
- let handler = diagnostic::mk_handler(true, Box::new(emitter));
- diagnostic::mk_span_handler(handler, CodeMap::new())
+ let handler = diagnostic::Handler::with_emitter(true, Box::new(emitter));
+ diagnostic::SpanHandler::new(handler, CodeMap::new())
}
// open a string reader for the given string
use ast;
use codemap::{Span, CodeMap, FileMap};
-use diagnostic::{SpanHandler, mk_span_handler, default_handler, Auto, FatalError};
+use diagnostic::{SpanHandler, Handler, Auto, FatalError};
use parse::attr::ParserAttr;
use parse::parser::Parser;
use ptr::P;
included_mod_stack: RefCell<Vec<PathBuf>>,
}
-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()),
+impl ParseSess {
+ pub fn new() -> ParseSess {
+ let handler = SpanHandler::new(Handler::new(Auto, None, true), CodeMap::new());
+ ParseSess::with_span_handler(handler)
}
-}
-pub fn new_parse_sess_special_handler(sh: SpanHandler) -> ParseSess {
- ParseSess {
- span_diagnostic: sh,
- included_mod_stack: RefCell::new(Vec::new()),
+ pub fn with_span_handler(sh: SpanHandler) -> ParseSess {
+ ParseSess {
+ span_diagnostic: sh,
+ included_mod_stack: RefCell::new(vec![])
+ }
}
}
}
#[test] fn parse_ident_pat () {
- let sess = new_parse_sess();
+ let sess = ParseSess::new();
let mut parser = string_to_parser(&sess, "b".to_string());
assert!(panictry!(parser.parse_pat_nopanic())
== P(ast::Pat{
}
#[test] fn crlf_doc_comments() {
- let sess = new_parse_sess();
+ let sess = ParseSess::new();
let name = "<source>".to_string();
let source = "/// doc comment\r\nfn foo() {}".to_string();
#[test]
fn ttdelim_span() {
- let sess = parse::new_parse_sess();
+ let sess = ParseSess::new();
let expr = parse::parse_expr_from_source_str("foo".to_string(),
"foo!( fn main() { body } )".to_string(), vec![], &sess);
// except according to those terms.
use ast;
-use parse::new_parse_sess;
use parse::{ParseSess,string_to_filemap,filemap_to_tts};
use parse::new_parser_from_source_str;
use parse::parser::Parser;
/// Map a string to tts, using a made-up filename:
pub fn string_to_tts(source_str: String) -> Vec<ast::TokenTree> {
- let ps = new_parse_sess();
+ let ps = ParseSess::new();
filemap_to_tts(&ps,
string_to_filemap(&ps, source_str, "bogofile".to_string()))
}
fn with_error_checking_parse<T, F>(s: String, f: F) -> T where
F: FnOnce(&mut Parser) -> T,
{
- let ps = new_parse_sess();
+ let ps = ParseSess::new();
let mut p = string_to_parser(&ps, s);
let x = f(&mut p);
p.abort_if_errors();
pub fn string_to_pat(source_str: String) -> P<ast::Pat> {
// Binding `sess` and `parser` works around dropck-injected
// region-inference issues; see #25212, #22323, #22321.
- let sess = new_parse_sess();
+ let sess = ParseSess::new();
let mut parser = string_to_parser(&sess, source_str);
parser.parse_pat()
}
use syntax::print::pprust;
fn main() {
- let ps = syntax::parse::new_parse_sess();
+ let ps = syntax::parse::ParseSess::new();
let mut cx = syntax::ext::base::ExtCtxt::new(
&ps, vec![],
syntax::ext::expand::ExpansionConfig::default("qquote".to_string()));
use syntax::print::pprust;
fn main() {
- let ps = syntax::parse::new_parse_sess();
+ let ps = syntax::parse::ParseSess::new();
let mut cx = syntax::ext::base::ExtCtxt::new(
&ps, vec![],
syntax::ext::expand::ExpansionConfig::default("qquote".to_string()));
use syntax::print::pprust::*;
fn main() {
- let ps = syntax::parse::new_parse_sess();
+ let ps = syntax::parse::ParseSess::new();
let mut cx = syntax::ext::base::ExtCtxt::new(
&ps, vec![],
syntax::ext::expand::ExpansionConfig::default("qquote".to_string()));