aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Jasper <djasper@google.com>2013-02-11 12:36:37 +0000
committerDaniel Jasper <djasper@google.com>2013-02-11 12:36:37 +0000
commit729a743b317d877df3978e88a4a247d2edbf2090 (patch)
tree11c14637dd8eb2e47b0a5a1c9005ce696bb7918d
parenta28fc067e3ee8eb84368530e878ce094f39651d3 (diff)
Fix invalid formatting with spaces before trailing comments.
In google style, trailing comments are separated by two spaces. This patch fixes the counting of these spaces and prevents clang-format from creating a line with 81 columns. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174879 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Format/Format.cpp6
-rw-r--r--lib/Format/TokenAnnotator.cpp10
-rw-r--r--lib/Format/TokenAnnotator.h4
-rw-r--r--unittests/Format/FormatTest.cpp3
4 files changed, 14 insertions, 9 deletions
diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp
index a78b650dfa..ab71d59359 100644
--- a/lib/Format/Format.cpp
+++ b/lib/Format/Format.cpp
@@ -489,9 +489,7 @@ private:
(RootToken.is(tok::kw_for) || State.ParenLevel == 0))
State.VariablePos = State.Column - Previous.FormatTok.TokenLength;
- unsigned Spaces = State.NextToken->SpaceRequiredBefore ? 1 : 0;
- if (State.NextToken->Type == TT_LineComment)
- Spaces = Style.SpacesBeforeTrailingComments;
+ unsigned Spaces = State.NextToken->SpacesRequiredBefore;
if (!DryRun)
Whitespaces.replaceWhitespace(Current, 0, Spaces, State.Column, Style);
@@ -1099,7 +1097,7 @@ private:
AnnotatedToken *Tok = &(I + 1)->First;
if (Tok->Children.empty() && Tok->is(tok::r_brace) &&
!Tok->MustBreakBefore && Tok->TotalLength <= Limit) {
- Tok->SpaceRequiredBefore = false;
+ Tok->SpacesRequiredBefore = 0;
join(Line, *(I + 1));
I += 1;
} else {
diff --git a/lib/Format/TokenAnnotator.cpp b/lib/Format/TokenAnnotator.cpp
index aecc24ca9c..8f2e00ebfd 100644
--- a/lib/Format/TokenAnnotator.cpp
+++ b/lib/Format/TokenAnnotator.cpp
@@ -778,7 +778,7 @@ void TokenAnnotator::annotate(AnnotatedLine &Line) {
else if (Line.First.Type == TT_ObjCProperty)
Line.Type = LT_ObjCProperty;
- Line.First.SpaceRequiredBefore = true;
+ Line.First.SpacesRequiredBefore = 1;
Line.First.MustBreakBefore = Line.First.FormatTok.MustBreakBefore;
Line.First.CanBreakBefore = Line.First.MustBreakBefore;
@@ -790,7 +790,11 @@ void TokenAnnotator::calculateFormattingInformation(AnnotatedLine &Line) {
return;
AnnotatedToken *Current = &Line.First.Children[0];
while (Current != NULL) {
- Current->SpaceRequiredBefore = spaceRequiredBefore(Line, *Current);
+ if (Current->Type == TT_LineComment)
+ Current->SpacesRequiredBefore = Style.SpacesBeforeTrailingComments;
+ else
+ Current->SpacesRequiredBefore =
+ spaceRequiredBefore(Line, *Current) ? 1 : 0;
if (Current->FormatTok.MustBreakBefore) {
Current->MustBreakBefore = true;
@@ -814,7 +818,7 @@ void TokenAnnotator::calculateFormattingInformation(AnnotatedLine &Line) {
else
Current->TotalLength =
Current->Parent->TotalLength + Current->FormatTok.TokenLength +
- (Current->SpaceRequiredBefore ? 1 : 0);
+ Current->SpacesRequiredBefore;
// FIXME: Only calculate this if CanBreakBefore is true once static
// initializers etc. are sorted out.
// FIXME: Move magic numbers to a better place.
diff --git a/lib/Format/TokenAnnotator.h b/lib/Format/TokenAnnotator.h
index cc86bf8b85..c19b486c1c 100644
--- a/lib/Format/TokenAnnotator.h
+++ b/lib/Format/TokenAnnotator.h
@@ -68,7 +68,7 @@ enum LineType {
class AnnotatedToken {
public:
explicit AnnotatedToken(const FormatToken &FormatTok)
- : FormatTok(FormatTok), Type(TT_Unknown), SpaceRequiredBefore(false),
+ : FormatTok(FormatTok), Type(TT_Unknown), SpacesRequiredBefore(0),
CanBreakBefore(false), MustBreakBefore(false),
ClosesTemplateDeclaration(false), MatchingParen(NULL),
ParameterCount(1), BindingStrength(0), SplitPenalty(0),
@@ -87,7 +87,7 @@ public:
TokenType Type;
- bool SpaceRequiredBefore;
+ unsigned SpacesRequiredBefore;
bool CanBreakBefore;
bool MustBreakBefore;
diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp
index 83e4fc54e3..97445c56b1 100644
--- a/unittests/Format/FormatTest.cpp
+++ b/unittests/Format/FormatTest.cpp
@@ -493,6 +493,9 @@ TEST_F(FormatTest, UnderstandsSingleLineComments) {
" // B\n"
" \"aaaaa\",\n"
"};");
+ verifyGoogleFormat(
+ "aaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
+ " aaaaaaaaaaaaaaaaaaaaaa); // 81 cols with this comment");
}
TEST_F(FormatTest, UnderstandsMultiLineComments) {