clang-format: Fix expression parser not closing stuff at end of stmt.

Uncovered by a Java test case:

Before:
  public some.package.Type someFunction( // comment
      int parameter) {}

After:
  public some.package.Type someFunction( // comment
                          int parameter) {}

llvm-svn: 223228
This commit is contained in:
Daniel Jasper 2014-12-03 13:20:49 +00:00
parent afd188fee4
commit 8379107afe
2 changed files with 16 additions and 10 deletions

View File

@ -1147,16 +1147,7 @@ public:
(CurrentPrecedence != -1 && CurrentPrecedence < Precedence) ||
(CurrentPrecedence == prec::Conditional &&
Precedence == prec::Assignment && Current->is(tok::colon))) {
if (LatestOperator) {
LatestOperator->LastOperator = true;
if (Precedence == PrecedenceArrowAndPeriod) {
// Call expressions don't have a binary operator precedence.
addFakeParenthesis(Start, prec::Unknown);
} else {
addFakeParenthesis(Start, prec::Level(Precedence));
}
}
return;
break;
}
// Consume scopes: (), [], <> and {}
@ -1176,6 +1167,16 @@ public:
next(/*SkipPastLeadingComments=*/Precedence > 0);
}
}
if (LatestOperator && (Current || Precedence > 0)) {
LatestOperator->LastOperator = true;
if (Precedence == PrecedenceArrowAndPeriod) {
// Call expressions don't have a binary operator precedence.
addFakeParenthesis(Start, prec::Unknown);
} else {
addFakeParenthesis(Start, prec::Level(Precedence));
}
}
}
private:

View File

@ -84,6 +84,11 @@ TEST_F(FormatTestJava, Chromium) {
getChromiumStyle(FormatStyle::LK_Java));
}
TEST_F(FormatTestJava, QualifiedNames) {
verifyFormat("public some.package.Type someFunction( // comment\n"
" int parameter) {}");
}
TEST_F(FormatTestJava, ClassKeyword) {
verifyFormat("SomeClass.class.getName();");
verifyFormat("Class c = SomeClass.class;");