diff options
| author | Eduard Burtescu <edy.burt@gmail.com> | 2015-05-13 23:00:17 +0300 |
|---|---|---|
| committer | Eduard Burtescu <edy.burt@gmail.com> | 2015-05-14 01:47:56 +0300 |
| commit | f786437bd223740d9767345731d458d10936f8d7 (patch) | |
| tree | 3c28b90b9d5489e6355392432fc0ff7ecb6892c4 /src/libsyntax | |
| parent | 6a045b9d1c3c6419d1e4f9cfcd1d81359d0859f8 (diff) | |
| download | rust-f786437bd223740d9767345731d458d10936f8d7.tar.gz rust-f786437bd223740d9767345731d458d10936f8d7.zip | |
syntax: refactor (Span)Handler and ParseSess constructors to be methods.
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/diagnostic.rs | 40 | ||||
| -rw-r--r-- | src/libsyntax/ext/expand.rs | 8 | ||||
| -rw-r--r-- | src/libsyntax/parse/lexer/mod.rs | 4 | ||||
| -rw-r--r-- | src/libsyntax/parse/mod.rs | 26 | ||||
| -rw-r--r-- | src/libsyntax/util/parser_testing.rs | 7 |
5 files changed, 41 insertions, 44 deletions
diff --git a/src/libsyntax/diagnostic.rs b/src/libsyntax/diagnostic.rs index 66ddd73101e..02ad00bc738 100644 --- a/src/libsyntax/diagnostic.rs +++ b/src/libsyntax/diagnostic.rs @@ -122,6 +122,12 @@ pub struct SpanHandler { } 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; @@ -187,6 +193,19 @@ pub struct Handler { } 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); @@ -254,27 +273,6 @@ impl Handler { } } -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, diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index fae0b56ce3d..484684a87f4 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -1684,7 +1684,7 @@ mod tests { #[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, @@ -1698,7 +1698,7 @@ mod tests { #[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, @@ -1710,7 +1710,7 @@ mod tests { #[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, @@ -1719,7 +1719,7 @@ mod tests { } 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) diff --git a/src/libsyntax/parse/lexer/mod.rs b/src/libsyntax/parse/lexer/mod.rs index 6b0674c9a41..9ced0d5d96e 100644 --- a/src/libsyntax/parse/lexer/mod.rs +++ b/src/libsyntax/parse/lexer/mod.rs @@ -1406,8 +1406,8 @@ mod tests { 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 diff --git a/src/libsyntax/parse/mod.rs b/src/libsyntax/parse/mod.rs index e207b197e83..21253982e51 100644 --- a/src/libsyntax/parse/mod.rs +++ b/src/libsyntax/parse/mod.rs @@ -12,7 +12,7 @@ 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; @@ -46,17 +46,17 @@ pub struct ParseSess { 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![]) + } } } @@ -886,7 +886,7 @@ mod tests { } #[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{ @@ -1067,7 +1067,7 @@ mod tests { } #[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(); @@ -1090,7 +1090,7 @@ mod tests { #[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); diff --git a/src/libsyntax/util/parser_testing.rs b/src/libsyntax/util/parser_testing.rs index 929f2a6abd6..1ecfe9c96f4 100644 --- a/src/libsyntax/util/parser_testing.rs +++ b/src/libsyntax/util/parser_testing.rs @@ -9,7 +9,6 @@ // 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; @@ -19,7 +18,7 @@ use str::char_at; /// 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())) } @@ -35,7 +34,7 @@ pub fn string_to_parser<'a>(ps: &'a ParseSess, source_str: String) -> Parser<'a> 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(); @@ -75,7 +74,7 @@ pub fn string_to_stmt(source_str : String) -> P<ast::Stmt> { 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() } |
