r245843 - clang-format: Make formatting of member function reference qualifiers

Daniel Jasper via cfe-commits cfe-commits at lists.llvm.org
Tue Aug 25 06:42:08 PDT 2015


Changed in r245934.

On Mon, Aug 24, 2015 at 5:48 PM, Daniel Jasper <djasper at google.com> wrote:

>
>
> On Mon, Aug 24, 2015 at 5:46 PM, David Blaikie <dblaikie at gmail.com> wrote:
>
>>
>>
>> On Mon, Aug 24, 2015 at 7:28 AM, Daniel Jasper via cfe-commits <
>> cfe-commits at lists.llvm.org> wrote:
>>
>>> Author: djasper
>>> Date: Mon Aug 24 09:28:08 2015
>>> New Revision: 245843
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=245843&view=rev
>>> Log:
>>> clang-format: Make formatting of member function reference qualifiers
>>> more consistent.
>>>
>>> Before:
>>>   SomeType MemberFunction(const Deleted &)&&;
>>>   SomeType MemberFunction(const Deleted &) && { ... }
>>>
>>> After:
>>>   SomeType MemberFunction(const Deleted &)&&;
>>>   SomeType MemberFunction(const Deleted &)&& { ... }
>>>
>>
>> I don't think that's the way most people write them - at least I tend to
>> write them with a space after the ')'? (for both rvalue and lvalue ref)
>> same way I would with 'const'.
>>
>> Any sense of how this is usually done (across LLVM or other codebases)?
>>
>
> You are probably right. But making this consistent is a good step either
> way ;-). I'll follow up with another commit ..
>
>
>>
>>
>>>
>>> Modified:
>>>     cfe/trunk/lib/Format/FormatToken.h
>>>     cfe/trunk/lib/Format/TokenAnnotator.cpp
>>>     cfe/trunk/unittests/Format/FormatTest.cpp
>>>
>>> Modified: cfe/trunk/lib/Format/FormatToken.h
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/FormatToken.h?rev=245843&r1=245842&r2=245843&view=diff
>>>
>>> ==============================================================================
>>> --- cfe/trunk/lib/Format/FormatToken.h (original)
>>> +++ cfe/trunk/lib/Format/FormatToken.h Mon Aug 24 09:28:08 2015
>>> @@ -525,6 +525,8 @@ private:
>>>  /// properly supported by Clang's lexer.
>>>  struct AdditionalKeywords {
>>>    AdditionalKeywords(IdentifierTable &IdentTable) {
>>> +    kw_final = &IdentTable.get("final");
>>> +    kw_override = &IdentTable.get("override");
>>>      kw_in = &IdentTable.get("in");
>>>      kw_CF_ENUM = &IdentTable.get("CF_ENUM");
>>>      kw_CF_OPTIONS = &IdentTable.get("CF_OPTIONS");
>>> @@ -538,7 +540,6 @@ struct AdditionalKeywords {
>>>
>>>      kw_abstract = &IdentTable.get("abstract");
>>>      kw_extends = &IdentTable.get("extends");
>>> -    kw_final = &IdentTable.get("final");
>>>      kw_implements = &IdentTable.get("implements");
>>>      kw_instanceof = &IdentTable.get("instanceof");
>>>      kw_interface = &IdentTable.get("interface");
>>> @@ -562,6 +563,8 @@ struct AdditionalKeywords {
>>>    }
>>>
>>>    // Context sensitive keywords.
>>> +  IdentifierInfo *kw_final;
>>> +  IdentifierInfo *kw_override;
>>>    IdentifierInfo *kw_in;
>>>    IdentifierInfo *kw_CF_ENUM;
>>>    IdentifierInfo *kw_CF_OPTIONS;
>>> @@ -578,7 +581,6 @@ struct AdditionalKeywords {
>>>    // Java keywords.
>>>    IdentifierInfo *kw_abstract;
>>>    IdentifierInfo *kw_extends;
>>> -  IdentifierInfo *kw_final;
>>>    IdentifierInfo *kw_implements;
>>>    IdentifierInfo *kw_instanceof;
>>>    IdentifierInfo *kw_interface;
>>>
>>> Modified: cfe/trunk/lib/Format/TokenAnnotator.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/TokenAnnotator.cpp?rev=245843&r1=245842&r2=245843&view=diff
>>>
>>> ==============================================================================
>>> --- cfe/trunk/lib/Format/TokenAnnotator.cpp (original)
>>> +++ cfe/trunk/lib/Format/TokenAnnotator.cpp Mon Aug 24 09:28:08 2015
>>> @@ -1139,9 +1139,11 @@ private:
>>>        return TT_UnaryOperator;
>>>
>>>      const FormatToken *NextToken = Tok.getNextNonComment();
>>> -    if (!NextToken || NextToken->is(tok::arrow) ||
>>> +    if (!NextToken ||
>>> +        NextToken->isOneOf(tok::arrow, Keywords.kw_final,
>>> +                           Keywords.kw_override) ||
>>>          (NextToken->is(tok::l_brace) &&
>>> !NextToken->getNextNonComment()))
>>> -      return TT_Unknown;
>>> +      return TT_PointerOrReference;
>>>
>>>      if (PrevToken->is(tok::coloncolon))
>>>        return TT_PointerOrReference;
>>> @@ -1855,7 +1857,9 @@ bool TokenAnnotator::spaceRequiredBetwee
>>>          !Line.IsMultiVariableDeclStmt)))
>>>      return true;
>>>    if (Left.is(TT_PointerOrReference))
>>> -    return Right.Tok.isLiteral() || Right.is(TT_BlockComment) ||
>>> +    return Right.Tok.isLiteral() ||
>>> +           Right.isOneOf(TT_BlockComment, Keywords.kw_final,
>>> +                         Keywords.kw_override) ||
>>>             (Right.is(tok::l_brace) && Right.BlockKind == BK_Block) ||
>>>             (!Right.isOneOf(TT_PointerOrReference,
>>> TT_ArraySubscriptLSquare,
>>>                             tok::l_paren) &&
>>>
>>> Modified: cfe/trunk/unittests/Format/FormatTest.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=245843&r1=245842&r2=245843&view=diff
>>>
>>> ==============================================================================
>>> --- cfe/trunk/unittests/Format/FormatTest.cpp (original)
>>> +++ cfe/trunk/unittests/Format/FormatTest.cpp Mon Aug 24 09:28:08 2015
>>> @@ -5326,6 +5326,9 @@ TEST_F(FormatTest, UnderstandsFunctionRe
>>>    verifyFormat("Deleted &operator=(const Deleted &)&&;");
>>>    verifyFormat("SomeType MemberFunction(const Deleted &)&;");
>>>    verifyFormat("SomeType MemberFunction(const Deleted &)&&;");
>>> +  verifyFormat("SomeType MemberFunction(const Deleted &)&& {}");
>>> +  verifyFormat("SomeType MemberFunction(const Deleted &)&& final {}");
>>> +  verifyFormat("SomeType MemberFunction(const Deleted &)&& override
>>> {}");
>>>
>>>    verifyGoogleFormat("Deleted& operator=(const Deleted&)& = default;");
>>>    verifyGoogleFormat("SomeType MemberFunction(const Deleted&)& =
>>> delete;");
>>> @@ -5583,11 +5586,11 @@ TEST_F(FormatTest, UnderstandsUsesOfStar
>>>
>>>    // Member function reference qualifiers aren't binary operators.
>>>    verifyFormat("string // break\n"
>>> -               "operator()() & {}");
>>> +               "operator()()& {}");
>>>    verifyFormat("string // break\n"
>>> -               "operator()() && {}");
>>> +               "operator()()&& {}");
>>>    verifyGoogleFormat("template <typename T>\n"
>>> -                     "auto x() & -> int {}");
>>> +                     "auto x()& -> int {}");
>>>  }
>>>
>>>  TEST_F(FormatTest, UnderstandsAttributes) {
>>>
>>>
>>> _______________________________________________
>>> cfe-commits mailing list
>>> cfe-commits at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150825/571c0ad6/attachment-0001.html>


More information about the cfe-commits mailing list