]> granicus.if.org Git - clang/commitdiff
clang-format: Prefer breaking before trailing return arrows.
authorDaniel Jasper <djasper@google.com>
Fri, 17 Oct 2014 14:37:40 +0000 (14:37 +0000)
committerDaniel Jasper <djasper@google.com>
Fri, 17 Oct 2014 14:37:40 +0000 (14:37 +0000)
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

lib/Format/FormatToken.h
lib/Format/TokenAnnotator.cpp
unittests/Format/FormatTest.cpp

index 38f157776f325925368f08d028907319d12e7b95..dc2c8a466efe77ab588a6bb4cdfb6d6b6f4c23f0 100644 (file)
@@ -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 {
index 14382021b521058cbb5db4a35219453402b8347b..7e589c7a64963aa4f674e32aa1321f35093901a2 100644 (file)
@@ -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)) ||
index aebfef6fbea7c398cc2b2a09179c8b65da167292..b669795534dca0e46eecbca0b4cfe811585640b4 100644 (file)
@@ -3514,6 +3514,8 @@ TEST_F(FormatTest, TrailingReturnType) {
   verifyFormat("template <size_t Order, typename T>\n"
                "auto load_img(const std::string &filename)\n"
                "    -> alias::tensor<Order, T, mem::tag::cpu> {}");
+  verifyFormat("auto SomeFunction(A aaaaaaaaaaaaaaaaaaaaa) const\n"
+               "    -> decltype(f(aaaaaaaaaaaaaaaaaaaaa)) {}");
 
   // Not trailing return types.
   verifyFormat("void f() { auto a = b->c(); }");