diff options
author | Daniel Jasper <djasper@google.com> | 2015-11-02 20:02:49 +0000 |
---|---|---|
committer | Daniel Jasper <djasper@google.com> | 2015-11-02 20:02:49 +0000 |
commit | f83834feb15845bb85cefa892efcad7ec3d07e2c (patch) | |
tree | ad726f1b3ccd1db05710bc0998bfeefc242de9cc | |
parent | 2297a9142e13f84cc7102ed722922ba21511d7b6 (diff) | |
download | bcm5719-llvm-f83834feb15845bb85cefa892efcad7ec3d07e2c.tar.gz bcm5719-llvm-f83834feb15845bb85cefa892efcad7ec3d07e2c.zip |
clang-format: Simplify and improve stop condition for formatting
unaffected lines with incorrect initial indent.
Starting from:
namespace {
int i; // There shouldn't be indentation here.
int j; // <- call clang-format on this line.
}
Before:
namespace {
int i;
int j;
}
After:
namespace {
int i;
int j;
}
llvm-svn: 251824
-rw-r--r-- | clang/lib/Format/UnwrappedLineFormatter.cpp | 5 | ||||
-rw-r--r-- | clang/unittests/Format/FormatTestSelective.cpp | 21 |
2 files changed, 22 insertions, 4 deletions
diff --git a/clang/lib/Format/UnwrappedLineFormatter.cpp b/clang/lib/Format/UnwrappedLineFormatter.cpp index 5b4f5d5b09c..04087e84871 100644 --- a/clang/lib/Format/UnwrappedLineFormatter.cpp +++ b/clang/lib/Format/UnwrappedLineFormatter.cpp @@ -815,8 +815,6 @@ UnwrappedLineFormatter::format(const SmallVectorImpl<AnnotatedLine *> &Lines, // The minimum level of consecutive lines that have been formatted. unsigned RangeMinLevel = UINT_MAX; - // The level of the previous line. - unsigned PreviousLineLevel = Lines.front()->Level; for (const AnnotatedLine *Line = Joiner.getNextMergedLine(DryRun, IndentTracker); @@ -830,8 +828,7 @@ UnwrappedLineFormatter::format(const SmallVectorImpl<AnnotatedLine *> &Lines, // remaining file if it currently missing a closing brace. bool ContinueFormatting = TheLine.Level > RangeMinLevel || - (TheLine.Level == RangeMinLevel && PreviousLineLevel <= TheLine.Level); - PreviousLineLevel = TheLine.Level; + (TheLine.Level == RangeMinLevel && !TheLine.startsWith(tok::r_brace)); bool FixIndentation = (FixBadIndentation || ContinueFormatting) && Indent != TheLine.First->OriginalColumn; diff --git a/clang/unittests/Format/FormatTestSelective.cpp b/clang/unittests/Format/FormatTestSelective.cpp index 9c4d1c3d2b0..d53d1c04292 100644 --- a/clang/unittests/Format/FormatTestSelective.cpp +++ b/clang/unittests/Format/FormatTestSelective.cpp @@ -273,6 +273,27 @@ TEST_F(FormatTestSelective, IndividualStatementsOfNestedBlocks) { 0, 0)); } +TEST_F(FormatTestSelective, WrongIndent) { + EXPECT_EQ("namespace {\n" + "int i;\n" + "int j;\n" + "}", + format("namespace {\n" + " int i;\n" // Format here. + " int j;\n" + "}", + 15, 0)); + EXPECT_EQ("namespace {\n" + " int i;\n" + " int j;\n" + "}", + format("namespace {\n" + " int i;\n" + " int j;\n" // Format here. + "}", + 24, 0)); +} + TEST_F(FormatTestSelective, AlwaysFormatsEntireMacroDefinitions) { Style.AlignEscapedNewlinesLeft = true; EXPECT_EQ("int i;\n" |