r188175 - clang-format: Improve stream-formatting.

Daniel Jasper djasper at google.com
Mon Aug 12 05:58:05 PDT 2013


Author: djasper
Date: Mon Aug 12 07:58:05 2013
New Revision: 188175

URL: http://llvm.org/viewvc/llvm-project?rev=188175&view=rev
Log:
clang-format: Improve stream-formatting.

Before:
  CHECK(controller->WriteProto(FLAGS_row_key, FLAGS_proto)) << "\""
                                                            << FLAGS_proto
                                                            << "\"";

After:
  SemaRef.Diag(Loc, diag::note_for_range_begin_end)
      << BEF << IsTemplate << Description << E->getType();

Modified:
    cfe/trunk/lib/Format/Format.cpp
    cfe/trunk/unittests/Format/FormatTest.cpp

Modified: cfe/trunk/lib/Format/Format.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/Format.cpp?rev=188175&r1=188174&r2=188175&view=diff
==============================================================================
--- cfe/trunk/lib/Format/Format.cpp (original)
+++ cfe/trunk/lib/Format/Format.cpp Mon Aug 12 07:58:05 2013
@@ -595,6 +595,12 @@ private:
     unsigned ContinuationIndent =
         std::max(State.Stack.back().LastSpace, State.Stack.back().Indent) + 4;
     if (Newline) {
+      // Breaking before the first "<<" is generally not desirable if the LHS is
+      // short.
+      if (Current.is(tok::lessless) && State.Stack.back().FirstLessLess == 0 &&
+          State.Column <= Style.ColumnLimit / 2)
+        ExtraPenalty += Style.PenaltyBreakFirstLessLess;
+
       State.Stack.back().ContainsLineBreak = true;
       if (Current.is(tok::r_brace)) {
         if (Current.BlockKind == BK_BracedInit)
@@ -705,10 +711,6 @@ private:
           State.Stack.back().BreakBeforeParameter = true;
       }
 
-      // Breaking before the first "<<" is generally not desirable.
-      if (Current.is(tok::lessless) && State.Stack.back().FirstLessLess == 0)
-        ExtraPenalty += Style.PenaltyBreakFirstLessLess;
-
     } else {
       if (Current.is(tok::equal) &&
           (RootToken->is(tok::kw_for) || State.ParenLevel == 0) &&

Modified: cfe/trunk/unittests/Format/FormatTest.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=188175&r1=188174&r2=188175&view=diff
==============================================================================
--- cfe/trunk/unittests/Format/FormatTest.cpp (original)
+++ cfe/trunk/unittests/Format/FormatTest.cpp Mon Aug 12 07:58:05 2013
@@ -3188,10 +3188,12 @@ TEST_F(FormatTest, AlignsPipes) {
                "             << aaaaaaaaaaaaaaaaaaaaaaaaaaaa;",
                getLLVMStyleWithColumns(70));
 
-  // But sometimes, breaking before the first "<<" is necessary.
+  // But sometimes, breaking before the first "<<" is desirable.
   verifyFormat("Diag(aaaaaaaaaaaaaaaaaaaaaaaaaaaaa, bbbbbbbbb)\n"
                "    << aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
                "    << aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;");
+  verifyFormat("SemaRef.Diag(Loc, diag::note_for_range_begin_end)\n"
+               "    << BEF << IsTemplate << Description << E->getType();");
 
   verifyFormat(
       "llvm::errs() << aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"





More information about the cfe-commits mailing list