diff options
author | Daniel Jasper <djasper@google.com> | 2013-02-11 12:36:37 +0000 |
---|---|---|
committer | Daniel Jasper <djasper@google.com> | 2013-02-11 12:36:37 +0000 |
commit | 729a743b317d877df3978e88a4a247d2edbf2090 (patch) | |
tree | 11c14637dd8eb2e47b0a5a1c9005ce696bb7918d | |
parent | a28fc067e3ee8eb84368530e878ce094f39651d3 (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.cpp | 6 | ||||
-rw-r--r-- | lib/Format/TokenAnnotator.cpp | 10 | ||||
-rw-r--r-- | lib/Format/TokenAnnotator.h | 4 | ||||
-rw-r--r-- | unittests/Format/FormatTest.cpp | 3 |
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) { |