From: Daniel Jasper Date: Thu, 18 Jul 2013 14:46:07 +0000 (+0000) Subject: clang-format: Fix bad line break with pointers to members. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5e2169f94fca20bbfda317c222b156751a431c13;p=clang clang-format: Fix bad line break with pointers to members. Before: void f() { (a->* aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)(aaaa, bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb); } After: void f() { (a->*aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)( aaaa, bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb); } Also add missing test case. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186583 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Format/TokenAnnotator.cpp b/lib/Format/TokenAnnotator.cpp index 97be71c277..3199cd9d1f 100644 --- a/lib/Format/TokenAnnotator.cpp +++ b/lib/Format/TokenAnnotator.cpp @@ -1267,7 +1267,7 @@ bool TokenAnnotator::canBreakBefore(const AnnotatedLine &Line, Left.Previous->is(tok::kw___attribute)) return false; if (Left.is(tok::l_paren) && (Left.Previous->Type == TT_BinaryOperator || - Left.Previous->is(tok::r_paren))) + Left.Previous->Type == TT_CastRParen)) return false; } diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index 05119f37cb..ecdb7216ba 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -3335,6 +3335,10 @@ TEST_F(FormatTest, UnderstandsPointersToMembers) { " ((*a).*f)();\n" " a.*x;\n" "}"); + verifyFormat("void f() {\n" + " (a->*aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)(\n" + " aaaa, bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb);\n" + "}"); FormatStyle Style = getLLVMStyle(); Style.PointerBindsToType = true; verifyFormat("typedef bool* (Class::*Member)() const;", Style); @@ -3633,6 +3637,11 @@ TEST_F(FormatTest, FormatsCasts) { verifyFormat("my_int a = (my_int)++ a;"); verifyFormat("my_int a = (my_int) + 2;"); + // Don't break after a cast's + verifyFormat("int aaaaaaaaaaaaaaaaaaaaaaaaaaa =\n" + " (aaaaaaaaaaaaaaaaaaaaaaaaaa *)(aaaaaaaaaaaaaaaaaaaaaa +\n" + " bbbbbbbbbbbbbbbbbbbbbb);"); + // These are not casts. verifyFormat("void f(int *) {}"); verifyFormat("f(foo)->b;");