diff options
author | Daniel Jasper <djasper@google.com> | 2015-04-29 08:29:26 +0000 |
---|---|---|
committer | Daniel Jasper <djasper@google.com> | 2015-04-29 08:29:26 +0000 |
commit | eb45cb7cf9c56ea1c993dfcc59d9bf28057199e3 (patch) | |
tree | 61bba500ee44cb28b1c4b6357aa7172453d9a99a | |
parent | fda237d09fbe88371e1255acef92fe451201bedc (diff) | |
download | bcm5719-llvm-eb45cb7cf9c56ea1c993dfcc59d9bf28057199e3.tar.gz bcm5719-llvm-eb45cb7cf9c56ea1c993dfcc59d9bf28057199e3.zip |
clang-format: Fix selective indentaiton in nested blocks.
Buggy case:
someFunction(
[] {
// comment
int i; // invoke formatting here.
}, // force line break
aaa);
llvm-svn: 236091
-rw-r--r-- | clang/lib/Format/UnwrappedLineFormatter.cpp | 4 | ||||
-rw-r--r-- | clang/unittests/Format/FormatTest.cpp | 13 |
2 files changed, 16 insertions, 1 deletions
diff --git a/clang/lib/Format/UnwrappedLineFormatter.cpp b/clang/lib/Format/UnwrappedLineFormatter.cpp index f5120b9f2f3..dd65230cc40 100644 --- a/clang/lib/Format/UnwrappedLineFormatter.cpp +++ b/clang/lib/Format/UnwrappedLineFormatter.cpp @@ -461,7 +461,9 @@ UnwrappedLineFormatter::format(const SmallVectorImpl<AnnotatedLine *> &Lines, if (static_cast<int>(LevelIndent) - Offset >= 0) LevelIndent -= Offset; - if (Tok->isNot(tok::comment) && !TheLine.InPPDirective) + if ((Tok->isNot(tok::comment) || + IndentForLevel[TheLine.Level] == -1) && + !TheLine.InPPDirective) IndentForLevel[TheLine.Level] = LevelIndent; } else if (!DryRun) { Whitespaces->addUntouchableToken(*Tok, TheLine.InPPDirective); diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index b23778aaba8..46266adcac7 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -3262,6 +3262,19 @@ TEST_F(FormatTest, IndividualStatementsOfNestedBlocks) { " int a; //\n" "});", 0, 0, getLLVMStyle())); + EXPECT_EQ("someFunction(\n" + " [] {\n" + " // Only with this comment.\n" + " int i; // invoke formatting here.\n" + " }, // force line break\n" + " aaa);", + format("someFunction(\n" + " [] {\n" + " // Only with this comment.\n" + " int i; // invoke formatting here.\n" + " }, // force line break\n" + " aaa);", + 63, 1, getLLVMStyle())); } TEST_F(FormatTest, PutEmptyBlocksIntoOneLine) { |