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

David Blaikie via cfe-commits cfe-commits at lists.llvm.org
Mon Aug 24 08:46:19 PDT 2015


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)?


>
> 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/20150824/5dcfcb4a/attachment-0001.html>


More information about the cfe-commits mailing list