summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Jasper <djasper@google.com>2014-05-22 09:00:33 +0000
committerDaniel Jasper <djasper@google.com>2014-05-22 09:00:33 +0000
commit3948516a03ba3405e2578d27fcaf898e58dc88b5 (patch)
treeec4165433a4d0f0296e231614e95a83f801d6790
parent515ad8c490582d9b3b71274ed9255dc4a23c4610 (diff)
downloadbcm5719-llvm-3948516a03ba3405e2578d27fcaf898e58dc88b5.tar.gz
bcm5719-llvm-3948516a03ba3405e2578d27fcaf898e58dc88b5.zip
clang-format: Correctly identify multiplications in braces init lists.
Before: int i{a *b}; After: int i{a * b}; Also fix unrelated issue where braced init lists were counted as blocks and prevented single-line functions. llvm-svn: 209412
-rw-r--r--clang/lib/Format/Format.cpp2
-rw-r--r--clang/lib/Format/TokenAnnotator.cpp2
-rw-r--r--clang/unittests/Format/FormatTest.cpp5
3 files changed, 5 insertions, 4 deletions
diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp
index 03177e586ad..471af1d5393 100644
--- a/clang/lib/Format/Format.cpp
+++ b/clang/lib/Format/Format.cpp
@@ -690,7 +690,7 @@ private:
if (I[1]->Last->Type == TT_LineComment)
return 0;
do {
- if (Tok->isOneOf(tok::l_brace, tok::r_brace) &&
+ if (Tok->is(tok::l_brace) && Tok->BlockKind != BK_BracedInit &&
!Style.AllowShortBlocksOnASingleLine)
return 0;
Tok = Tok->Next;
diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp
index dca20d2d75d..f3d655ace5b 100644
--- a/clang/lib/Format/TokenAnnotator.cpp
+++ b/clang/lib/Format/TokenAnnotator.cpp
@@ -298,6 +298,8 @@ private:
ScopedContextCreator ContextCreator(*this, tok::l_brace, 1);
Contexts.back().ColonIsDictLiteral = true;
+ if (Left->BlockKind == BK_BracedInit)
+ Contexts.back().IsExpression = true;
while (CurrentToken) {
if (CurrentToken->is(tok::r_brace)) {
diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp
index 3dbada81f01..af0b5a1cb61 100644
--- a/clang/unittests/Format/FormatTest.cpp
+++ b/clang/unittests/Format/FormatTest.cpp
@@ -4694,6 +4694,7 @@ TEST_F(FormatTest, UnderstandsUsesOfStarAndAmp) {
verifyFormat("auto PointerBinding = [](const char *S) {};");
verifyFormat("typedef typeof(int(int, int)) *MyFunc;");
verifyIndependentOfContext("typedef void (*f)(int *a);");
+ verifyIndependentOfContext("int i{a * b};");
verifyIndependentOfContext("InvalidRegions[*R] = 0;");
@@ -7044,9 +7045,7 @@ TEST_F(FormatTest, DoNotCreateUnreasonableUnwrappedLines) {
TEST_F(FormatTest, DoNotPrematurelyEndUnwrappedLineForReturnStatements) {
verifyFormat(
- "void f() {\n"
- " return C{param1, param2}.SomeCall(param1, param2);\n"
- "}\n");
+ "void f() { return C{param1, param2}.SomeCall(param1, param2); }");
}
TEST_F(FormatTest, FormatsClosingBracesInEmptyNestedBlocks) {
OpenPOWER on IntegriCloud