================
Comment at: lib/Format/FormatToken.h:379
@@ +378,3 @@
+    /// \brief The total length in number of lines.
+    unsigned TotalLength;
+
----------------
Manuel Klimek wrote:
> I'd probably call that LineCount or something else with Line in it then...
Done.

================
Comment at: lib/Format/FormatToken.cpp:39
@@ +38,3 @@
+    return 0;
+  unsigned RemainingColumns = Style.ColumnLimit - State.Stack.back().Indent;
+  const ColumnFormat *Format = getColumnFormat(RemainingColumns);
----------------
Manuel Klimek wrote:
> So 'RemainingColumns' is in characters, but 'Column' below is in "entries"?
Changed to RemainingCharacters.

================
Comment at: lib/Format/FormatToken.cpp:76
@@ +75,3 @@
+  FormatToken *ItemBegin = Token->Next;
+  SmallVector<bool, 6> MustBreakBeforeItem;
+  SmallVector<unsigned, 6> ItemLengthsInLastColumn;
----------------
Manuel Klimek wrote:
> Has the magic number '6' any meaning?
No. Any hint on how to pick these?

================
Comment at: lib/Format/FormatToken.cpp:105
@@ +104,3 @@
+    bool HasRowWithSufficientColumns = false;
+    for (unsigned i = 0, e = ItemLengths.size(), Column = 0; i != e; ++i) {
+      if (MustBreakBeforeItem[i] || Column == Columns) {
----------------
Manuel Klimek wrote:
> Pulling out Columns would make this line idiomatic and easier to read for me.
Done (if I understood correctly).

================
Comment at: lib/Format/FormatToken.cpp:87-88
@@ +86,4 @@
+                           : Commas[i];
+    ItemLengths.push_back(ItemEnd->TotalLength - ItemBegin->TotalLength +
+                          ItemBegin->CodePointCount);
+    if (ItemEnd->Next && !ItemEnd->Next->HasUnescapedNewline &&
----------------
Manuel Klimek wrote:
> This needs comments - why does subtracting two different token's length give 
> anything useful?
Read the documentation of TotalLength .. This is used in several places.

================
Comment at: lib/Format/TokenAnnotator.cpp:275
@@ -271,1 +274,3 @@
+        Left->Role.reset(new CommaSeparatedList(Style));
+      Left->getRoleAs<CommaSeparatedList>()->CommaFound(Current);
     } else if (Left->ParameterCount == 0 && Current->isNot(tok::comment)) {
----------------
Manuel Klimek wrote:
> I'd much rather have an interface for Role that contains all the "events" 
> that can happen that are significant to roles, and use virtual methods.
What's the benefit? We already need to know that we are dealing with a 
CommaSeparatedList in order to create it appropriately..

I agree that there might be more generic concepts once we have more Roles and 
understand them.

================
Comment at: lib/Format/FormatToken.cpp:49-67
@@ +48,21 @@
+    unsigned Spaces = State.NextToken->SpacesRequiredBefore;
+    if (Item < Commas.size() && State.NextToken->Previous == Commas[Item]) {
+      if (!State.NextToken->isTrailingComment()) {
+        Spaces += Format->ColumnSizes[Column] - ItemLengths[Item];
+        ++Column;
+      }
+      ++Item;
+      if (Column == Format->Columns) {
+        Column = 0;
+        NewLine = true;
+      }
+    }
+    if (State.NextToken->MustBreakBefore) {
+      Column = 0;
+      NewLine = true;
+    }
+    if (NewLine)
+      Penalty += State.NextToken->SplitPenalty;
+    Spaces -= State.NextToken->SpacesRequiredBefore;
+    Penalty += Indenter->addTokenToState(State, NewLine, DryRun, Spaces);
+  }
----------------
Manuel Klimek wrote:
> All this needs more comments on how this works...
Cleaned up implementation and added comments.

================
Comment at: lib/Format/FormatToken.cpp:85
@@ +84,3 @@
+    const FormatToken *ItemEnd =
+        i == Commas.size() ? Token->MatchingParen->getPreviousNonComment()
+                           : Commas[i];
----------------
Manuel Klimek wrote:
> At a first glance this seems inbalanced: wouldn't ItemEnd be one to early in 
> for the last item?
This is actually correct. An item ends (for the purpose of column alignment at 
the "," or before the "}". Consider

  vector<int> a = { a,  b, c,
                    dd, e };

You do not want to take the "}" into account and align "c" relative to it.

However, I discovered a related bug, changed the implementation and added tests.


http://llvm-reviews.chandlerc.com/D1457
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to