aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Jasper <djasper@google.com>2013-02-06 20:07:35 +0000
committerDaniel Jasper <djasper@google.com>2013-02-06 20:07:35 +0000
commit15417ef20e3cda668351c67cc580587913f6bee8 (patch)
treefc3dd629ec341ed4bd69348dc6d46f770cf1f9ec
parenteb54aa584dbe19c0f7c4a9a0010815a85423858b (diff)
Align trailing block comments like trailing line comments.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174537 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Format/Format.cpp15
-rw-r--r--unittests/Format/FormatTest.cpp7
2 files changed, 14 insertions, 8 deletions
diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp
index 3660b4ac03..4128785f63 100644
--- a/lib/Format/Format.cpp
+++ b/lib/Format/Format.cpp
@@ -80,6 +80,11 @@ FormatStyle getChromiumStyle() {
return ChromiumStyle;
}
+static bool isTrailingComment(const AnnotatedToken &Tok) {
+ return Tok.is(tok::comment) &&
+ (Tok.Children.empty() || Tok.Children[0].MustBreakBefore);
+}
+
/// \brief Manages the whitespaces around tokens and their replacements.
///
/// This includes special handling for certain constructs, e.g. the alignment of
@@ -99,8 +104,7 @@ public:
// Align line comments if they are trailing or if they continue other
// trailing comments.
- if (Tok.Type == TT_LineComment &&
- (Tok.Parent != NULL || !Comments.empty())) {
+ if (isTrailingComment(Tok) && (Tok.Parent != NULL || !Comments.empty())) {
if (Style.ColumnLimit >=
Spaces + WhitespaceStartColumn + Tok.FormatTok.TokenLength) {
Comments.push_back(StoredComment());
@@ -115,7 +119,7 @@ public:
}
// If this line does not have a trailing comment, align the stored comments.
- if (Tok.Children.empty() && Tok.Type != TT_LineComment)
+ if (Tok.Children.empty() && !isTrailingComment(Tok))
alignComments();
storeReplacement(Tok.FormatTok,
std::string(NewLines, '\n') + std::string(Spaces, ' '));
@@ -207,11 +211,6 @@ private:
tooling::Replacements Replaces;
};
-static bool isTrailingComment(const AnnotatedToken &Tok) {
- return Tok.is(tok::comment) &&
- (Tok.Children.empty() || Tok.Children[0].MustBreakBefore);
-}
-
class UnwrappedLineFormatter {
public:
UnwrappedLineFormatter(const FormatStyle &Style, SourceManager &SourceMgr,
diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp
index 7e88c4e34a..69096076ba 100644
--- a/unittests/Format/FormatTest.cpp
+++ b/unittests/Format/FormatTest.cpp
@@ -1985,6 +1985,13 @@ TEST_F(FormatTest, BlockComments) {
"bool aaaaaaaaaaaaa = /* trailing comment */\n"
" aaaaaaaaaaaaaaaaaaaaaaaaaaa||aaaaaaaaaaaaaaaaaaaaaaaaa ||\n"
" aaaaaaaaaaaaaaaaaaaaaaaaaaaa || aaaaaaaaaaaaaaaaaaaaaaaaaa;"));
+ EXPECT_EQ(
+ "int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; /* comment */\n"
+ "int bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb; /* comment */\n"
+ "int cccccccccccccccccccccccccccccc; /* comment */\n",
+ format("int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; /* comment */\n"
+ "int bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb; /* comment */\n"
+ "int cccccccccccccccccccccccccccccc; /* comment */\n"));
}
TEST_F(FormatTest, BlockCommentsInMacros) {