From 1676c6744643cf7169250fbba242d65eb73edd8a Mon Sep 17 00:00:00 2001
From: Graydon Hoare <graydon@mozilla.com>
Date: Mon, 30 May 2011 17:34:59 -0700
Subject: [PATCH] Tighten up comment rules a little more.

---
 src/comp/pretty/pp.rs     |  2 +-
 src/comp/pretty/pprust.rs | 42 +++++++++++++++++++--------------------
 2 files changed, 22 insertions(+), 22 deletions(-)

diff --git a/src/comp/pretty/pp.rs b/src/comp/pretty/pp.rs
index 98b002a904d..7f0004b1874 100644
--- a/src/comp/pretty/pp.rs
+++ b/src/comp/pretty/pp.rs
@@ -547,7 +547,7 @@ fn eof(printer p) { p.pretty_print(EOF); }
 fn word(printer p, str wrd) {
     p.pretty_print(STRING(wrd, str::char_len(wrd) as int));
 }
-fn word_and_eol(printer p, str wrd) {
+fn huge_word(printer p, str wrd) {
     p.pretty_print(STRING(wrd, 0xffff));
 }
 fn spaces(printer p, uint n) { break_offset(p, n, 0); }
diff --git a/src/comp/pretty/pprust.rs b/src/comp/pretty/pprust.rs
index 7128ffbe23a..5d06c28c3d4 100644
--- a/src/comp/pretty/pprust.rs
+++ b/src/comp/pretty/pprust.rs
@@ -17,7 +17,7 @@ import pp::box;
 import pp::cbox;
 import pp::ibox;
 import pp::word;
-import pp::word_and_eol;
+import pp::huge_word;
 import pp::space;
 import pp::zerobreak;
 import pp::hardbreak;
@@ -152,7 +152,8 @@ fn commasep_cmnt[IN](ps s, breaks b, vec[IN] elts, fn(ps, &IN) op,
         i += 1u;
         if (i < len) {
             word(s.s, ",");
-            if (!maybe_print_line_comment(s, get_span(elt))) {space(s.s);}
+            maybe_print_trailing_comment(s, get_span(elt));
+            space(s.s);
         }
     }
     end(s.s);
@@ -350,7 +351,7 @@ fn print_item(ps s, @ast::item item) {
                     pclose(s);
                 }
                 word(s.s, ";");
-                maybe_print_line_comment(s, v.span);
+                maybe_print_trailing_comment(s, v.span);
             }
             bclose(s, item.span);
         }
@@ -409,13 +410,13 @@ fn print_block(ps s, ast::block blk) {
           }
         }
         if (front::parser::stmt_ends_with_semi(st)) {word(s.s, ";");}
-        maybe_print_line_comment(s, st.span);
+        maybe_print_trailing_comment(s, st.span);
     }
     alt (blk.node.expr) {
         case (option::some[@ast::expr](?expr)) {
             space(s.s);
             print_expr(s, expr);
-            maybe_print_line_comment(s, expr.span);
+            maybe_print_trailing_comment(s, expr.span);
         }
         case (_) {}
     }
@@ -1105,19 +1106,17 @@ fn maybe_print_comment(ps s, uint pos) {
     }
 }
 
-fn maybe_print_line_comment(ps s, common::span span) -> bool {
+fn maybe_print_trailing_comment(ps s, common::span span) {
     auto cm;
     alt (s.cm) {
         case (option::some[codemap](?ccm)) {
             cm = ccm;
         }
-        case (_) {
-            ret false;
-        }
+        case (_) { ret; }
     }
     alt (next_comment(s)) {
         case (option::some[lexer::cmnt](?cmnt)) {
-            if (cmnt.style != lexer::trailing) { ret false; }
+            if (cmnt.style != lexer::trailing) { ret; }
 
             auto span_line = codemap::lookup_pos(cm, span.hi);
             auto comment_line = codemap::lookup_pos(cm, cmnt.pos);
@@ -1125,12 +1124,10 @@ fn maybe_print_line_comment(ps s, common::span span) -> bool {
                 word(s.s, " ");
                 print_comment(s, cmnt);
                 s.cur_cmnt += 1u;
-                ret true;
             }
         }
         case (_) {}
     }
-    ret false;
 }
 
 fn print_remaining_comments(ps s) {
@@ -1148,21 +1145,24 @@ fn print_remaining_comments(ps s) {
 fn print_comment(ps s, lexer::cmnt cmnt) {
     alt (cmnt.style) {
         case (lexer::isolated) {
-            zerobreak(s.s);
+            hardbreak(s.s);
             for (str line in cmnt.lines) {
-                word_and_eol(s.s, line);
+                huge_word(s.s, line);
                 zerobreak(s.s);
             }
-            zerobreak(s.s);
         }
         case (lexer::trailing) {
-            cbox(s.s, 0u);
-            for (str line in cmnt.lines) {
-                word_and_eol(s.s, line);
-                zerobreak(s.s);
+            if (vec::len(cmnt.lines) == 1u) {
+                word(s.s, cmnt.lines.(0));
+                hardbreak(s.s);
+            } else {
+                cbox(s.s, 0u);
+                for (str line in cmnt.lines) {
+                    huge_word(s.s, line);
+                    zerobreak(s.s);
+                }
+                end(s.s);
             }
-            end(s.s);
-            zerobreak(s.s);
         }
         case (lexer::mixed) {
             assert vec::len(cmnt.lines) == 1u;