[PATCH] Preserve hanging indent when breaking line comments.
Alexander Kornienko
alexfh at google.com
Thu Mar 6 08:22:23 PST 2014
Hi djasper,
If we need to break the second line here:
// something: aaaaa aaaaa aaaaaa aaaaa aaaaa
// aaaaa aaaaa aaaaaa aaaaa aaaaa aaaaa
with the patch it will be turned to
// something: aaaaa aaaaa aaaaaa aaaaa aaaaa
// aaaaa aaaaa aaaaaa aaaaa aaaaa
// aaaaa
instead of
// something: aaaaa aaaaa aaaaaa aaaaa aaaaa
// aaaaa aaaaa aaaaaa aaaaa aaaaa
// aaaaa
http://llvm-reviews.chandlerc.com/D2988
Files:
lib/Format/BreakableToken.cpp
unittests/Format/FormatTest.cpp
Index: lib/Format/BreakableToken.cpp
===================================================================
--- lib/Format/BreakableToken.cpp
+++ lib/Format/BreakableToken.cpp
@@ -185,11 +185,20 @@
}
static StringRef getLineCommentPrefix(StringRef Comment) {
- static const char *const KnownPrefixes[] = { "/// ", "///", "// ", "//" };
- for (size_t i = 0, e = llvm::array_lengthof(KnownPrefixes); i != e; ++i)
- if (Comment.startswith(KnownPrefixes[i]))
- return KnownPrefixes[i];
- return "";
+ static const char *const KnownPrefixes[] = {
+ "/// ",
+ "// "
+ };
+ StringRef LongestPrefix;
+ for (const char *KnownPrefix : KnownPrefixes) {
+ size_t PrefixLength = 0;
+ while (PrefixLength < Comment.size() && KnownPrefix[PrefixLength] &&
+ KnownPrefix[PrefixLength] == Comment[PrefixLength])
+ ++PrefixLength;
+ if (PrefixLength > LongestPrefix.size())
+ LongestPrefix = StringRef(KnownPrefix, PrefixLength);
+ }
+ return LongestPrefix;
}
BreakableLineComment::BreakableLineComment(
Index: unittests/Format/FormatTest.cpp
===================================================================
--- unittests/Format/FormatTest.cpp
+++ unittests/Format/FormatTest.cpp
@@ -1026,6 +1026,15 @@
format("#define XXX //q w e r t y u i", getLLVMStyleWithColumns(22)));
}
+TEST_F(FormatTest, PreservesHangingIndentInCxxComments) {
+ EXPECT_EQ("// A comment\n"
+ "// that doesn't\n"
+ "// fit on one\n"
+ "// line",
+ format("// A comment that doesn't fit on one line",
+ getLLVMStyleWithColumns(20)));
+}
+
TEST_F(FormatTest, DontSplitLineCommentsWithEscapedNewlines) {
EXPECT_EQ("// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\n"
"// aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\n"
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D2988.1.patch
Type: text/x-patch
Size: 1944 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140306/f14bec9e/attachment.bin>
More information about the cfe-commits
mailing list