diff options
| author | Graydon Hoare <graydon@mozilla.com> | 2011-07-25 14:04:38 -0700 |
|---|---|---|
| committer | Graydon Hoare <graydon@mozilla.com> | 2011-07-25 14:04:49 -0700 |
| commit | 552bff8a2155e9e404a3cd279a26a374188d65f7 (patch) | |
| tree | a5c387e899308e080e940b3367bd87bd2ddd149c /src/comp/syntax | |
| parent | 5749a2deac857e56b29ffb56b62dd383c3489eb3 (diff) | |
| download | rust-552bff8a2155e9e404a3cd279a26a374188d65f7.tar.gz rust-552bff8a2155e9e404a3cd279a26a374188d65f7.zip | |
Adjust pp interface to that printing a crate (an reproducing literals/comments) takes a reader, not just a filename. Fixes first big pp-fuzzer bug.
Diffstat (limited to 'src/comp/syntax')
| -rw-r--r-- | src/comp/syntax/parse/lexer.rs | 4 | ||||
| -rw-r--r-- | src/comp/syntax/print/pprust.rs | 8 |
2 files changed, 8 insertions, 4 deletions
diff --git a/src/comp/syntax/parse/lexer.rs b/src/comp/syntax/parse/lexer.rs index 799050bb083..9f9c2a1f269 100644 --- a/src/comp/syntax/parse/lexer.rs +++ b/src/comp/syntax/parse/lexer.rs @@ -736,9 +736,9 @@ fn is_lit(&token::token t) -> bool { type lit = rec(str lit, uint pos); -fn gather_comments_and_literals(&codemap::codemap cm, str path) +fn gather_comments_and_literals(&codemap::codemap cm, str path, + ioivec::reader srdr) -> rec(cmnt[] cmnts, lit[] lits) { - auto srdr = ioivec::file_reader(path); auto src = str::unsafe_from_bytes_ivec(srdr.read_whole_stream()); auto itr = @interner::mk[str](str::hash, str::eq); auto rdr = new_reader(cm, src, codemap::new_filemap(path, 0u, 0u), itr); diff --git a/src/comp/syntax/print/pprust.rs b/src/comp/syntax/print/pprust.rs index b3a915070a0..1a9a69d149e 100644 --- a/src/comp/syntax/print/pprust.rs +++ b/src/comp/syntax/print/pprust.rs @@ -73,10 +73,14 @@ const uint alt_indent_unit = 2u; const uint default_columns = 78u; -fn print_crate(&codemap cm, @ast::crate crate, str filename, +// Requires you to pass an input filename and reader so that +// it can scan the input text for comments and literals to +// copy forward. +fn print_crate(&codemap cm, @ast::crate crate, + str filename, ioivec::reader in, ioivec::writer out, &pp_ann ann) { let pp::breaks[] boxes = ~[]; - auto r = lexer::gather_comments_and_literals(cm, filename); + auto r = lexer::gather_comments_and_literals(cm, filename, in); auto s = @rec(s=pp::mk_printer(out, default_columns), cm=some(cm), |
