From: Daniel Jasper Date: Wed, 23 Jan 2013 11:15:14 +0000 (+0000) Subject: Fix regression in formatting pointer types. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=218b6dfaee321cec558e15d47b68155dd9f35684;p=clang Fix regression in formatting pointer types. We will need a more principled solution, but we should not leave this unfixed until we come up with one. Before: void f() { int * a; } After: void f() { int *a; } git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173252 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp index 90bcf6feb7..36bf53d9a7 100644 --- a/lib/Format/Format.cpp +++ b/lib/Format/Format.cpp @@ -1260,6 +1260,8 @@ private: if (getPrecedence(Current) == prec::Assignment || Current.is(tok::kw_return) || Current.is(tok::kw_throw)) IsRHS = true; + if (Current.is(tok::l_paren) && !Line.MustBeDeclaration) + IsRHS = true; if (Current.Type == TT_Unknown) { if (Current.is(tok::star) || Current.is(tok::amp)) { @@ -1370,7 +1372,7 @@ private: // It is very unlikely that we are going to find a pointer or reference type // definition on the RHS of an assignment. - if (IsRHS || !Line.MustBeDeclaration) + if (IsRHS) return TT_BinaryOperator; return TT_PointerOrReference; diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index 114359d04d..44f91c7fb0 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -1288,6 +1288,7 @@ TEST_F(FormatTest, UnderstandsUsesOfStarAndAmp) { verifyFormat("int a = *b;"); verifyFormat("int a = *b * c;"); verifyFormat("int a = b * *c;"); + verifyFormat("void f() { int *a = b * c; }"); verifyFormat("int main(int argc, char **argv) {}"); verifyFormat("return 10 * b;"); verifyFormat("return *b * *c;");