diff --git a/src/comp/pretty/pp.rs b/src/comp/pretty/pp.rs index 1933688c912..1d218beba27 100644 --- a/src/comp/pretty/pp.rs +++ b/src/comp/pretty/pp.rs @@ -442,6 +442,16 @@ obj printer(io::writer out, } } + fn top() -> print_stack_elt { + auto n = vec::len(print_stack); + let print_stack_elt top = + rec(offset=0, pbreak=broken(inconsistent));; + if (n != 0u) { + top = print_stack.(n - 1u); + } + ret top; + } + fn print(token x, int L) { log #fmt("print %s %d (remaining line space=%d)", tok_str(x), L, space); @@ -471,12 +481,7 @@ obj printer(io::writer out, case (BREAK(?b)) { - auto n = vec::len(print_stack); - let print_stack_elt top = - rec(offset=0, pbreak=broken(inconsistent));; - if (n != 0u) { - top = print_stack.(n - 1u); - } + auto top = self.top(); alt (top.pbreak) { case (fits) { @@ -552,6 +557,9 @@ fn word(printer p, str wrd) { fn huge_word(printer p, str wrd) { p.pretty_print(STRING(wrd, 0xffff)); } +fn zero_word(printer p, str wrd) { + p.pretty_print(STRING(wrd, 0)); +} fn spaces(printer p, uint n) { break_offset(p, n, 0); } fn zerobreak(printer p) { spaces(p, 0u); } fn space(printer p) { spaces(p, 1u); } diff --git a/src/comp/pretty/pprust.rs b/src/comp/pretty/pprust.rs index 8e0d70e27fe..44a3489d29b 100644 --- a/src/comp/pretty/pprust.rs +++ b/src/comp/pretty/pprust.rs @@ -18,6 +18,7 @@ import pp::cbox; import pp::ibox; import pp::word; import pp::huge_word; +import pp::zero_word; import pp::space; import pp::zerobreak; import pp::hardbreak; @@ -1191,14 +1192,21 @@ fn print_comment(&ps s, lexer::cmnt cmnt) { word(s.s, cmnt.lines.(0)); zerobreak(s.s); } - case (_) { + case (lexer::isolated) { + hardbreak(s.s); + for (str line in cmnt.lines) { + zero_word(s.s, line); + hardbreak(s.s); + } + } + case (lexer::trailing) { if (vec::len(cmnt.lines) == 1u) { - word(s.s, cmnt.lines.(0)); + zero_word(s.s, cmnt.lines.(0)); hardbreak(s.s); } else { ibox(s.s, 0u); for (str line in cmnt.lines) { - word(s.s, line); + zero_word(s.s, line); hardbreak(s.s); } end(s.s);