diff options
| author | Paul Stansifer <paul.stansifer@gmail.com> | 2012-07-30 17:56:53 -0700 |
|---|---|---|
| committer | Paul Stansifer <paul.stansifer@gmail.com> | 2012-07-30 18:38:15 -0700 |
| commit | e6af5eeaa2919abf94f805af488b44e68eea72c4 (patch) | |
| tree | 3cad289ec7423052b8b1b47f396daf3f862e2a7b /src/libsyntax | |
| parent | 3819b6b3d11c2ae8d9a368049d679d2a096569a0 (diff) | |
| download | rust-e6af5eeaa2919abf94f805af488b44e68eea72c4.tar.gz rust-e6af5eeaa2919abf94f805af488b44e68eea72c4.zip | |
Fix pretty-printing of consecutive idents.
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/print/pp.rs | 6 | ||||
| -rw-r--r-- | src/libsyntax/print/pprust.rs | 12 |
2 files changed, 12 insertions, 6 deletions
diff --git a/src/libsyntax/print/pp.rs b/src/libsyntax/print/pp.rs index d01a111364a..a2479ef1365 100644 --- a/src/libsyntax/print/pp.rs +++ b/src/libsyntax/print/pp.rs @@ -118,7 +118,8 @@ fn mk_printer(out: io::writer, linewidth: uint) -> printer { mut top: 0u, mut bottom: 0u, print_stack: dvec(), - mut pending_indentation: 0}) + mut pending_indentation: 0, + mut token_tree_last_was_ident: false}) } @@ -223,7 +224,8 @@ type printer_ = { // stack of blocks-in-progress being flushed by print print_stack: dvec<print_stack_elt>, // buffered indentation to avoid writing trailing whitespace - mut pending_indentation: int + mut pending_indentation: int, + mut token_tree_last_was_ident: bool }; enum printer { diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index 3c1252d3ddc..cf97bd7c692 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -622,12 +622,14 @@ fn print_tt(s: ps, tt: ast::token_tree) { for tts.each() |tt_elt| { print_tt(s, tt_elt); } } ast::tt_tok(_, tk) { - word(s.s, parse::token::to_str(*s.intr, tk)); alt tk { - // gotta keep them separated - parse::token::IDENT(*) { word(s.s, ~" ") } - _ {} + parse::token::IDENT(*) { // don't let idents run together + if s.s.token_tree_last_was_ident { word(s.s, ~" ") } + s.s.token_tree_last_was_ident = true; + } + _ { s.s.token_tree_last_was_ident = false; } } + word(s.s, parse::token::to_str(*s.intr, tk)); } ast::tt_seq(_, tts, sep, zerok) { word(s.s, ~"$("); @@ -638,9 +640,11 @@ fn print_tt(s: ps, tt: ast::token_tree) { none {} } word(s.s, if zerok { ~"*" } else { ~"+" }); + s.s.token_tree_last_was_ident = false; } ast::tt_nonterminal(_, name) { word(s.s, ~"$" + *name); + s.s.token_tree_last_was_ident = true; } } } |
