diff options
| author | Brian Anderson <banderson@mozilla.com> | 2012-01-13 17:22:15 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-01-13 22:07:55 -0800 |
| commit | f4bd03b99837442c519e71625c9135a27f1dcc1b (patch) | |
| tree | f7fdb65fb24a7f222ddb1a25097edd87479c8e86 /src/comp/syntax/parse | |
| parent | e90701c546fbdfdccd12aea72f8c084642caef5f (diff) | |
| download | rust-f4bd03b99837442c519e71625c9135a27f1dcc1b.tar.gz rust-f4bd03b99837442c519e71625c9135a27f1dcc1b.zip | |
rustc: Replace the lexer's error handling with diagnostic impl
Diffstat (limited to 'src/comp/syntax/parse')
| -rw-r--r-- | src/comp/syntax/parse/lexer.rs | 20 | ||||
| -rw-r--r-- | src/comp/syntax/parse/parser.rs | 6 |
2 files changed, 18 insertions, 8 deletions
diff --git a/src/comp/syntax/parse/lexer.rs b/src/comp/syntax/parse/lexer.rs index cc0850d88b0..18fb155dc84 100644 --- a/src/comp/syntax/parse/lexer.rs +++ b/src/comp/syntax/parse/lexer.rs @@ -10,6 +10,7 @@ import driver::diagnostic; type reader = @{ cm: codemap::codemap, + diagnostic: diagnostic::handler, src: str, len: uint, mutable col: uint, @@ -48,14 +49,18 @@ impl reader for reader { } else { self.curr = -1 as char; } } fn err(m: str) { - diagnostic::emit_error( - some((self.cm, ast_util::mk_sp(self.chpos, self.chpos))), m); + self.diagnostic.span_err( + ast_util::mk_sp(self.chpos, self.chpos), + m); } } -fn new_reader(cm: codemap::codemap, src: str, filemap: codemap::filemap, +fn new_reader(cm: codemap::codemap, + diagnostic: diagnostic::handler, + src: str, filemap: codemap::filemap, itr: @interner::interner<str>) -> reader { - let r = @{cm: cm, src: src, len: str::byte_len(src), + let r = @{cm: cm, diagnostic: diagnostic, + src: src, len: str::byte_len(src), mutable col: 0u, mutable pos: 0u, mutable curr: -1 as char, mutable chpos: filemap.start_pos.ch, mutable strs: [], filemap: filemap, interner: itr}; @@ -666,12 +671,15 @@ fn is_lit(t: token::token) -> bool { type lit = {lit: str, pos: uint}; -fn gather_comments_and_literals(cm: codemap::codemap, path: str, +fn gather_comments_and_literals(cm: codemap::codemap, + diagnostic: diagnostic::handler, + path: str, srdr: io::reader) -> {cmnts: [cmnt], lits: [lit]} { let src = str::unsafe_from_bytes(srdr.read_whole_stream()); let itr = @interner::mk::<str>(str::hash, str::eq); - let rdr = new_reader(cm, src, codemap::new_filemap(path, 0u, 0u), itr); + let rdr = new_reader(cm, diagnostic, src, + codemap::new_filemap(path, 0u, 0u), itr); let comments: [cmnt] = []; let literals: [lit] = []; let first_read: bool = true; diff --git a/src/comp/syntax/parse/parser.rs b/src/comp/syntax/parse/parser.rs index deb96a131f0..30f2ab6d371 100644 --- a/src/comp/syntax/parse/parser.rs +++ b/src/comp/syntax/parse/parser.rs @@ -102,7 +102,8 @@ fn new_parser_from_file(sess: parse_sess, cfg: ast::crate_cfg, path: str, let filemap = codemap::new_filemap(path, chpos, byte_pos); sess.cm.files += [filemap]; let itr = @interner::mk(str::hash, str::eq); - let rdr = lexer::new_reader(sess.cm, src, filemap, itr); + let rdr = lexer::new_reader(sess.cm, sess.diagnostic, + src, filemap, itr); ret new_parser(sess, cfg, rdr, ftype); } @@ -112,7 +113,8 @@ fn new_parser_from_source_str(sess: parse_sess, cfg: ast::crate_cfg, let filemap = codemap::new_filemap(name, 0u, 0u); sess.cm.files += [filemap]; let itr = @interner::mk(str::hash, str::eq); - let rdr = lexer::new_reader(sess.cm, source, filemap, itr); + let rdr = lexer::new_reader(sess.cm, sess.diagnostic, + source, filemap, itr); ret new_parser(sess, cfg, rdr, ftype); } |
