Skip to content

Commit ae16639

Browse files
committed
Slightly more aggressive about inserting whitespace. Getting frustrated with comments.
1 parent 649a7bf commit ae16639

File tree

2 files changed

+25
-9
lines changed

2 files changed

+25
-9
lines changed

src/comp/pretty/pp.rs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,16 @@ obj printer(io::writer out,
442442
}
443443
}
444444

445+
fn top() -> print_stack_elt {
446+
auto n = vec::len(print_stack);
447+
let print_stack_elt top =
448+
rec(offset=0, pbreak=broken(inconsistent));;
449+
if (n != 0u) {
450+
top = print_stack.(n - 1u);
451+
}
452+
ret top;
453+
}
454+
445455
fn print(token x, int L) {
446456
log #fmt("print %s %d (remaining line space=%d)",
447457
tok_str(x), L, space);
@@ -471,12 +481,7 @@ obj printer(io::writer out,
471481

472482
case (BREAK(?b)) {
473483

474-
auto n = vec::len(print_stack);
475-
let print_stack_elt top =
476-
rec(offset=0, pbreak=broken(inconsistent));;
477-
if (n != 0u) {
478-
top = print_stack.(n - 1u);
479-
}
484+
auto top = self.top();
480485

481486
alt (top.pbreak) {
482487
case (fits) {
@@ -552,6 +557,9 @@ fn word(printer p, str wrd) {
552557
fn huge_word(printer p, str wrd) {
553558
p.pretty_print(STRING(wrd, 0xffff));
554559
}
560+
fn zero_word(printer p, str wrd) {
561+
p.pretty_print(STRING(wrd, 0));
562+
}
555563
fn spaces(printer p, uint n) { break_offset(p, n, 0); }
556564
fn zerobreak(printer p) { spaces(p, 0u); }
557565
fn space(printer p) { spaces(p, 1u); }

src/comp/pretty/pprust.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import pp::cbox;
1818
import pp::ibox;
1919
import pp::word;
2020
import pp::huge_word;
21+
import pp::zero_word;
2122
import pp::space;
2223
import pp::zerobreak;
2324
import pp::hardbreak;
@@ -1191,14 +1192,21 @@ fn print_comment(&ps s, lexer::cmnt cmnt) {
11911192
word(s.s, cmnt.lines.(0));
11921193
zerobreak(s.s);
11931194
}
1194-
case (_) {
1195+
case (lexer::isolated) {
1196+
hardbreak(s.s);
1197+
for (str line in cmnt.lines) {
1198+
zero_word(s.s, line);
1199+
hardbreak(s.s);
1200+
}
1201+
}
1202+
case (lexer::trailing) {
11951203
if (vec::len(cmnt.lines) == 1u) {
1196-
word(s.s, cmnt.lines.(0));
1204+
zero_word(s.s, cmnt.lines.(0));
11971205
hardbreak(s.s);
11981206
} else {
11991207
ibox(s.s, 0u);
12001208
for (str line in cmnt.lines) {
1201-
word(s.s, line);
1209+
zero_word(s.s, line);
12021210
hardbreak(s.s);
12031211
}
12041212
end(s.s);

0 commit comments

Comments
 (0)