r195253 - Simplify fix proposed in r195240.

Daniel Jasper djasper at google.com
Wed Nov 20 06:54:39 PST 2013


Author: djasper
Date: Wed Nov 20 08:54:39 2013
New Revision: 195253

URL: http://llvm.org/viewvc/llvm-project?rev=195253&view=rev
Log:
Simplify fix proposed in r195240.

Modified:
    cfe/trunk/lib/Format/ContinuationIndenter.cpp
    cfe/trunk/lib/Format/ContinuationIndenter.h

Modified: cfe/trunk/lib/Format/ContinuationIndenter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/ContinuationIndenter.cpp?rev=195253&r1=195252&r2=195253&view=diff
==============================================================================
--- cfe/trunk/lib/Format/ContinuationIndenter.cpp (original)
+++ cfe/trunk/lib/Format/ContinuationIndenter.cpp Wed Nov 20 08:54:39 2013
@@ -224,14 +224,13 @@ unsigned ContinuationIndenter::addTokenT
   if (Newline)
     Penalty = addTokenOnNewLine(State, DryRun);
   else
-    Penalty = addTokenOnCurrentLine(State, DryRun, ExtraSpaces);
+    addTokenOnCurrentLine(State, DryRun, ExtraSpaces);
 
   return moveStateToNextToken(State, DryRun, Newline) + Penalty;
 }
 
-unsigned ContinuationIndenter::addTokenOnCurrentLine(LineState &State,
-                                                     bool DryRun,
-                                                     unsigned ExtraSpaces) {
+void ContinuationIndenter::addTokenOnCurrentLine(LineState &State, bool DryRun,
+                                                 unsigned ExtraSpaces) {
   FormatToken &Current = *State.NextToken;
   const FormatToken &Previous = *State.NextToken->Previous;
   if (Current.is(tok::equal) &&
@@ -250,15 +249,6 @@ unsigned ContinuationIndenter::addTokenO
       State.Stack.back().LastSpace = State.Stack.back().VariablePos;
   }
 
-  unsigned Penalty = 0;
-  // A break before a "<<" will get Style.PenaltyBreakFirstLessLess, so a
-  // continuation with "<<" has a smaller penalty in general.
-  // If the LHS is long, we don't want to penalize the break though, so we
-  // also add Style.PenaltyBreakFirstLessLess.
-  if (Current.is(tok::lessless) && State.Stack.back().FirstLessLess == 0 &&
-      State.Column > Style.ColumnLimit / 2)
-    Penalty += Style.PenaltyBreakFirstLessLess;
-
   unsigned Spaces = Current.SpacesRequiredBefore + ExtraSpaces;
 
   if (!DryRun)
@@ -317,7 +307,6 @@ unsigned ContinuationIndenter::addTokenO
         State.Stack[State.Stack.size() - 2].CallContinuation == 0)
       State.Stack.back().LastSpace = State.Column;
   }
-  return Penalty;
 }
 
 unsigned ContinuationIndenter::addTokenOnNewLine(LineState &State,
@@ -343,8 +332,11 @@ unsigned ContinuationIndenter::addTokenO
   Penalty += State.NextToken->SplitPenalty;
 
   // Breaking before the first "<<" is generally not desirable if the LHS is
-  // short (not breaking with a long LHS is penalized in addTokenOnCurrentLine).
-  if (Current.is(tok::lessless) && State.Stack.back().FirstLessLess == 0)
+  // short. Also always add the penalty if the LHS is split over mutliple lines
+  // to avoid unncessary line breaks that just work around this penalty.
+  if (Current.is(tok::lessless) && State.Stack.back().FirstLessLess == 0 &&
+      (State.Column <= Style.ColumnLimit / 2 ||
+       State.Stack.back().BreakBeforeParameter))
     Penalty += Style.PenaltyBreakFirstLessLess;
 
   if (Current.is(tok::l_brace) && Current.BlockKind == BK_Block) {

Modified: cfe/trunk/lib/Format/ContinuationIndenter.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/ContinuationIndenter.h?rev=195253&r1=195252&r2=195253&view=diff
==============================================================================
--- cfe/trunk/lib/Format/ContinuationIndenter.h (original)
+++ cfe/trunk/lib/Format/ContinuationIndenter.h Wed Nov 20 08:54:39 2013
@@ -91,8 +91,8 @@ private:
   ///
   /// If \p DryRun is \c false, also creates and stores the required
   /// \c Replacement.
-  unsigned addTokenOnCurrentLine(LineState &State, bool DryRun,
-                                 unsigned ExtraSpaces);
+  void addTokenOnCurrentLine(LineState &State, bool DryRun,
+                             unsigned ExtraSpaces);
 
   /// \brief Appends the next token to \p State and updates information
   /// necessary for indentation.





More information about the cfe-commits mailing list