r192062 - clang-format: Remove empty lines after visibility modifiers.
Daniel Jasper
djasper at google.com
Sun Oct 6 04:40:08 PDT 2013
Author: djasper
Date: Sun Oct 6 06:40:08 2013
New Revision: 192062
URL: http://llvm.org/viewvc/llvm-project?rev=192062&view=rev
Log:
clang-format: Remove empty lines after visibility modifiers.
Formatting:
class C {
public:
f();
};
Now leads to:
class C {
public:
f();
};
Modified:
cfe/trunk/lib/Format/Format.cpp
cfe/trunk/unittests/Format/FormatTest.cpp
Modified: cfe/trunk/lib/Format/Format.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/Format.cpp?rev=192062&r1=192061&r2=192062&view=diff
==============================================================================
--- cfe/trunk/lib/Format/Format.cpp (original)
+++ cfe/trunk/lib/Format/Format.cpp Sun Oct 6 06:40:08 2013
@@ -832,7 +832,7 @@ public:
std::vector<int> IndentForLevel;
bool PreviousLineWasTouched = false;
- const FormatToken *PreviousLineLastToken = 0;
+ const AnnotatedLine *PreviousLine = NULL;
bool FormatPPDirective = false;
for (SmallVectorImpl<AnnotatedLine *>::iterator I = AnnotatedLines.begin(),
E = AnnotatedLines.end();
@@ -872,7 +872,7 @@ public:
// Insert a break even if there is a structural error in case where
// we break apart a line consisting of multiple unwrapped lines.
(FirstTok->NewlinesBefore == 0 || !StructuralError)) {
- formatFirstToken(*TheLine.First, PreviousLineLastToken, Indent,
+ formatFirstToken(*TheLine.First, PreviousLine, Indent,
TheLine.InPPDirective);
} else {
Indent = LevelIndent = FirstTok->OriginalColumn;
@@ -914,7 +914,7 @@ public:
// Remove trailing whitespace of the previous line if it was
// touched.
if (PreviousLineWasTouched || touchesEmptyLineBefore(TheLine)) {
- formatFirstToken(*Tok, PreviousLineLastToken, LevelIndent,
+ formatFirstToken(*Tok, PreviousLine, LevelIndent,
TheLine.InPPDirective);
} else {
Whitespaces.addUntouchableToken(*Tok, TheLine.InPPDirective);
@@ -933,7 +933,7 @@ public:
// last token.
PreviousLineWasTouched = false;
}
- PreviousLineLastToken = TheLine.Last;
+ PreviousLine = *I;
}
return Whitespaces.generateReplacements();
}
@@ -1222,7 +1222,7 @@ private:
/// of the \c UnwrappedLine if there was no structural parsing error.
/// Returns the indent level of the \c UnwrappedLine.
void formatFirstToken(const FormatToken &RootToken,
- const FormatToken *PreviousToken, unsigned Indent,
+ const AnnotatedLine *PreviousLine, unsigned Indent,
bool InPPDirective) {
unsigned Newlines =
std::min(RootToken.NewlinesBefore, Style.MaxEmptyLinesToKeep + 1);
@@ -1235,10 +1235,14 @@ private:
Newlines = 1;
// Insert extra new line before access specifiers.
- if (PreviousToken && PreviousToken->isOneOf(tok::semi, tok::r_brace) &&
+ if (PreviousLine && PreviousLine->Last->isOneOf(tok::semi, tok::r_brace) &&
RootToken.isAccessSpecifier() && RootToken.NewlinesBefore == 1)
++Newlines;
+ // Remove empty lines after access specifiers.
+ if (PreviousLine && PreviousLine->First->isAccessSpecifier())
+ Newlines = std::min(1u, Newlines);
+
Whitespaces.replaceWhitespace(
RootToken, Newlines, Indent / Style.IndentWidth, Indent, Indent,
InPPDirective && !RootToken.HasUnescapedNewline);
Modified: cfe/trunk/unittests/Format/FormatTest.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=192062&r1=192061&r2=192062&view=diff
==============================================================================
--- cfe/trunk/unittests/Format/FormatTest.cpp (original)
+++ cfe/trunk/unittests/Format/FormatTest.cpp Sun Oct 6 06:40:08 2013
@@ -1492,6 +1492,18 @@ TEST_F(FormatTest, SeparatesLogicalBlock
"protected:\n"
"int h;\n"
"};"));
+ EXPECT_EQ("class A {\n"
+ "protected:\n"
+ "public:\n"
+ " void f();\n"
+ "};",
+ format("class A {\n"
+ "protected:\n"
+ "\n"
+ "public:\n"
+ "\n"
+ " void f();\n"
+ "};"));
}
TEST_F(FormatTest, FormatsClasses) {
More information about the cfe-commits
mailing list