r223228 - clang-format: Fix expression parser not closing stuff at end of stmt.
Daniel Jasper
djasper at google.com
Wed Dec 3 05:20:50 PST 2014
Author: djasper
Date: Wed Dec 3 07:20:49 2014
New Revision: 223228
URL: http://llvm.org/viewvc/llvm-project?rev=223228&view=rev
Log:
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) {}
Modified:
cfe/trunk/lib/Format/TokenAnnotator.cpp
cfe/trunk/unittests/Format/FormatTestJava.cpp
Modified: cfe/trunk/lib/Format/TokenAnnotator.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/TokenAnnotator.cpp?rev=223228&r1=223227&r2=223228&view=diff
==============================================================================
--- cfe/trunk/lib/Format/TokenAnnotator.cpp (original)
+++ cfe/trunk/lib/Format/TokenAnnotator.cpp Wed Dec 3 07:20:49 2014
@@ -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:
Modified: cfe/trunk/unittests/Format/FormatTestJava.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTestJava.cpp?rev=223228&r1=223227&r2=223228&view=diff
==============================================================================
--- cfe/trunk/unittests/Format/FormatTestJava.cpp (original)
+++ cfe/trunk/unittests/Format/FormatTestJava.cpp Wed Dec 3 07:20:49 2014
@@ -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;");
More information about the cfe-commits
mailing list