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; }
llvm-svn: 173252
This commit is contained in:
Daniel Jasper 2013-01-23 11:15:14 +00:00
parent 7d2e4c0389
commit b9c0908f7c
2 changed files with 4 additions and 1 deletions

View File

@ -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;

View File

@ -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;");