summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Jasper <djasper@google.com>2014-10-17 14:37:40 +0000
committerDaniel Jasper <djasper@google.com>2014-10-17 14:37:40 +0000
commitda07a72928c58204a4234cd8f69203424a970856 (patch)
treef155a89bd416f8641544740ba73dfe969bd29bfb
parent238692beb90235464e82247d3d7fb5a387eeb5c2 (diff)
downloadbcm5719-llvm-da07a72928c58204a4234cd8f69203424a970856.tar.gz
bcm5719-llvm-da07a72928c58204a4234cd8f69203424a970856.zip
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)) {} llvm-svn: 220043
-rw-r--r--clang/lib/Format/FormatToken.h3
-rw-r--r--clang/lib/Format/TokenAnnotator.cpp2
-rw-r--r--clang/unittests/Format/FormatTest.cpp2
3 files changed, 5 insertions, 2 deletions
diff --git a/clang/lib/Format/FormatToken.h b/clang/lib/Format/FormatToken.h
index 38f157776f3..dc2c8a466ef 100644
--- a/clang/lib/Format/FormatToken.h
+++ b/clang/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/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp
index 14382021b52..7e589c7a649 100644
--- a/clang/lib/Format/TokenAnnotator.cpp
+++ b/clang/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/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp
index aebfef6fbea..b669795534d 100644
--- a/clang/unittests/Format/FormatTest.cpp
+++ b/clang/unittests/Format/FormatTest.cpp
@@ -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(); }");
OpenPOWER on IntegriCloud