diff options
-rw-r--r-- | lib/Format/Format.cpp | 4 | ||||
-rw-r--r-- | unittests/Format/FormatTest.cpp | 1 |
2 files changed, 4 insertions, 1 deletions
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;"); |