r200974 - clang-format: Fix column limit violation for merged lines in macros.

Daniel Jasper djasper at google.com
Tue Feb 11 02:14:49 PST 2014


On Sun, Feb 9, 2014 at 3:19 AM, Sean Silva <silvas at purdue.edu> wrote:

> +  unsigned
> +  LimitConsideringMacros(SmallVectorImpl<AnnotatedLine
> *>::const_iterator I,
> +                         SmallVectorImpl<AnnotatedLine *>::const_iterator
> E,
> +                         unsigned Limit) {
>
> Naming (do we not have a clang-tidy check for this yet?).
>

No. Although, a check local to a single translation unit would be easy to
write. However, renaming generally needs project-wide changes, which is not
implemented in clang-tidy (yet).

Fixed the spelling in r201138.

Also, can this be static?
>

Probably, but not worth a change at the moment as this needs some bigger
refactoring anyway.


>
> -- Sean Silva
>
>
> On Fri, Feb 7, 2014 at 8:45 AM, Daniel Jasper <djasper at google.com> wrote:
>
>> Author: djasper
>> Date: Fri Feb  7 07:45:27 2014
>> New Revision: 200974
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=200974&view=rev
>> Log:
>> clang-format: Fix column limit violation for merged lines in macros.
>>
>> Before (81 columns):
>>   #define A
>>         \
>>     void aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa() { return
>> aaaaaaaa; } \
>>     int i;
>>
>> After:
>>   #define A                                                    \
>>     void aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa() { \
>>       return aaaaaaaa;                                         \
>>     }                                                          \
>>     int i;
>>
>> 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=200974&r1=200973&r2=200974&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/lib/Format/Format.cpp (original)
>> +++ cfe/trunk/lib/Format/Format.cpp Fri Feb  7 07:45:27 2014
>> @@ -581,6 +581,7 @@ private:
>>      if (I[1]->InPPDirective != (*I)->InPPDirective ||
>>          (I[1]->InPPDirective && I[1]->First->HasUnescapedNewline))
>>        return 0;
>> +    Limit = LimitConsideringMacros(I + 1, E, Limit);
>>      AnnotatedLine &Line = **I;
>>      if (Line.Last->isNot(tok::r_paren))
>>        return 0;
>> @@ -624,6 +625,7 @@ private:
>>        // Check that we still have three lines and they fit into the
>> limit.
>>        if (I + 2 == E || I[2]->Type == LT_Invalid)
>>          return 0;
>> +      Limit = LimitConsideringMacros(I + 2, E, Limit);
>>
>>        if (!nextTwoLinesFitInto(I, Limit))
>>          return 0;
>> @@ -649,6 +651,19 @@ private:
>>      return 0;
>>    }
>>
>> +  /// Returns the modified column limit for \p I if it is inside a macro
>> and
>> +  /// needs a trailing '\'.
>> +  unsigned
>> +  LimitConsideringMacros(SmallVectorImpl<AnnotatedLine
>> *>::const_iterator I,
>> +                         SmallVectorImpl<AnnotatedLine
>> *>::const_iterator E,
>> +                         unsigned Limit) {
>> +    if (I[0]->InPPDirective && I + 1 != E &&
>> +        !I[1]->First->HasUnescapedNewline && !I[1]->First->is(tok::eof))
>> {
>> +      return Limit < 2 ? 0 : Limit - 2;
>> +    }
>> +    return Limit;
>> +  }
>> +
>>    bool nextTwoLinesFitInto(SmallVectorImpl<AnnotatedLine
>> *>::const_iterator I,
>>                             unsigned Limit) {
>>      return 1 + I[1]->Last->TotalLength + 1 + I[2]->Last->TotalLength <=
>> Limit;
>>
>> Modified: cfe/trunk/unittests/Format/FormatTest.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=200974&r1=200973&r2=200974&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/unittests/Format/FormatTest.cpp (original)
>> +++ cfe/trunk/unittests/Format/FormatTest.cpp Fri Feb  7 07:45:27 2014
>> @@ -5070,6 +5070,25 @@ TEST_F(FormatTest, PullTrivialFunctionDe
>>              "    : b(0) {\n"
>>              "}",
>>              format("A()\n:b(0)\n{\n}", DoNotMergeNoColumnLimit));
>> +
>> +  verifyFormat("#define A          \\\n"
>> +               "  void f() {       \\\n"
>> +               "    int i;         \\\n"
>> +               "  }",
>> +               getLLVMStyleWithColumns(20));
>> +  verifyFormat("#define A           \\\n"
>> +               "  void f() { int i; }",
>> +               getLLVMStyleWithColumns(21));
>> +  verifyFormat("#define A            \\\n"
>> +               "  void f() {         \\\n"
>> +               "    int i;           \\\n"
>> +               "  }                  \\\n"
>> +               "  int j;",
>> +               getLLVMStyleWithColumns(22));
>> +  verifyFormat("#define A             \\\n"
>> +               "  void f() { int i; } \\\n"
>> +               "  int j;",
>> +               getLLVMStyleWithColumns(23));
>>  }
>>
>>  TEST_F(FormatTest, UnderstandContextOfRecordTypeKeywords) {
>> @@ -5183,6 +5202,17 @@ TEST_F(FormatTest, MergeHandlingInTheFac
>>                 "  if (true) continue;\n"
>>                 "}",
>>                 ShortMergedIf);
>> +  ShortMergedIf.ColumnLimit = 29;
>> +  verifyFormat("#define A                   \\\n"
>> +               "  if (aaaaaaaaaa) return 1; \\\n"
>> +               "  return 2;",
>> +               ShortMergedIf);
>> +  ShortMergedIf.ColumnLimit = 28;
>> +  verifyFormat("#define A         \\\n"
>> +               "  if (aaaaaaaaaa) \\\n"
>> +               "    return 1;     \\\n"
>> +               "  return 2;",
>> +               ShortMergedIf);
>>  }
>>
>>  TEST_F(FormatTest, BlockCommentsInControlLoops) {
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140211/2776fec2/attachment.html>


More information about the cfe-commits mailing list