From: Daniel Jasper Date: Fri, 17 Oct 2014 14:37:40 +0000 (+0000) Subject: clang-format: Prefer breaking before trailing return arrows. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=365506d4dac5c10be41de9253d3358d5ada62cdb;p=clang clang-format: Prefer breaking before trailing return arrows. Before: auto SomeFunction( A aaaaaaaaaaaaaaaaaaaaa) const -> decltype(f(aaaaaaaaaaaaaaaaaaaaa)) {} After: auto SomeFunction(A aaaaaaaaaaaaaaaaaaaaa) const -> decltype(f(aaaaaaaaaaaaaaaaaaaaa)) {} git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220043 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Format/FormatToken.h b/lib/Format/FormatToken.h index 38f157776f..dc2c8a466e 100644 --- a/lib/Format/FormatToken.h +++ b/lib/Format/FormatToken.h @@ -325,7 +325,8 @@ struct FormatToken { /// \brief Returns \c true if this is a "." or "->" accessing a member. bool isMemberAccess() const { return isOneOf(tok::arrow, tok::period, tok::arrowstar) && - Type != TT_DesignatedInitializerPeriod; + Type != TT_DesignatedInitializerPeriod && + Type != TT_TrailingReturnArrow; } bool isUnaryOperator() const { diff --git a/lib/Format/TokenAnnotator.cpp b/lib/Format/TokenAnnotator.cpp index 14382021b5..7e589c7a64 100644 --- a/lib/Format/TokenAnnotator.cpp +++ b/lib/Format/TokenAnnotator.cpp @@ -1902,7 +1902,7 @@ bool TokenAnnotator::canBreakBefore(const AnnotatedLine &Line, return true; return Left.isOneOf(tok::comma, tok::coloncolon, tok::semi, tok::l_brace, tok::kw_class, tok::kw_struct) || - Right.isMemberAccess() || + Right.isMemberAccess() || Right.Type == TT_TrailingReturnArrow || Right.isOneOf(tok::lessless, tok::colon, tok::l_square, tok::at) || (Left.is(tok::r_paren) && Right.isOneOf(tok::identifier, tok::kw_const)) || diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index aebfef6fbe..b669795534 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -3514,6 +3514,8 @@ TEST_F(FormatTest, TrailingReturnType) { verifyFormat("template \n" "auto load_img(const std::string &filename)\n" " -> alias::tensor {}"); + verifyFormat("auto SomeFunction(A aaaaaaaaaaaaaaaaaaaaa) const\n" + " -> decltype(f(aaaaaaaaaaaaaaaaaaaaa)) {}"); // Not trailing return types. verifyFormat("void f() { auto a = b->c(); }");