lichray updated this revision to Diff 348424.
lichray added a comment.
Correct a copy-pasted test case.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D103204/new/
https://reviews.llvm.org/D103204
Files:
clang/docs/ClangFormatStyleOptions.rst
clang/docs/ReleaseNotes.rst
clang/include/clang/Format/Format.h
clang/lib/Format/Format.cpp
clang/lib/Format/TokenAnnotator.cpp
clang/unittests/Format/FormatTest.cpp
Index: clang/unittests/Format/FormatTest.cpp
===================================================================
--- clang/unittests/Format/FormatTest.cpp
+++ clang/unittests/Format/FormatTest.cpp
@@ -2290,6 +2290,28 @@
" public aaaaaaaaaaaaaaaaaaa< // break\n"
" aaaaaaaaaaaaaaaa> {};",
StyleWithInheritanceBreakAfterColon);
+
+ FormatStyle StyleWithInheritanceBreakAfterComma = getLLVMStyle();
+ StyleWithInheritanceBreakAfterComma.BreakInheritanceList =
+ FormatStyle::BILS_AfterComma;
+ verifyFormat("class MyClass : public X {};",
+ StyleWithInheritanceBreakAfterComma);
+ verifyFormat("class MyClass : public X,\n"
+ " public Y {};",
+ StyleWithInheritanceBreakAfterComma);
+ verifyFormat(
+ "class AAAAAAAAAAAAAAAAAAAAAA : public BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB,\n"
+ " public CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC "
+ "{};",
+ StyleWithInheritanceBreakAfterComma);
+ verifyFormat("struct aaaaaaaaaaaaa : public aaaaaaaaaaaaaaaaaaa< // break\n"
+ " aaaaaaaaaaaaaaaa> {};",
+ StyleWithInheritanceBreakAfterComma);
+ verifyFormat("class AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n"
+ " : public OnceBreak,\n"
+ " public AlwaysBreak,\n"
+ " EvenBasesFitInOneLine {};",
+ StyleWithInheritanceBreakAfterComma);
}
TEST_F(FormatTest, FormatsVariableDeclarationsAfterStructOrClass) {
@@ -5585,6 +5607,12 @@
" public aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,\n"
" public bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb {};",
Style);
+ Style.BreakInheritanceList = FormatStyle::BILS_AfterComma;
+ verifyFormat(
+ "class SomeClass\n"
+ " : public aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,\n"
+ " public bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb {};",
+ Style);
}
#ifndef EXPENSIVE_CHECKS
@@ -13505,6 +13533,12 @@
"}\n"
"}",
InheritanceStyle);
+ InheritanceStyle.BreakInheritanceList = FormatStyle::BILS_AfterComma;
+ verifyFormat("class Foooooooooooooooooooooo\n"
+ " : public aaaaaaaaaaaaaaaaaa,\n"
+ " public bbbbbbbbbbbbbbbbbb {\n"
+ "}",
+ InheritanceStyle);
InheritanceStyle.BreakInheritanceList = FormatStyle::BILS_AfterColon;
verifyFormat("class Foooooooooooooooooooooo:\n"
" public aaaaaaaaaaaaaaaaaa,\n"
@@ -16843,6 +16877,8 @@
BreakConstructorInitializers, FormatStyle::BCIS_BeforeComma);
Style.BreakInheritanceList = FormatStyle::BILS_BeforeColon;
+ CHECK_PARSE("BreakInheritanceList: AfterComma", BreakInheritanceList,
+ FormatStyle::BILS_AfterComma);
CHECK_PARSE("BreakInheritanceList: BeforeComma", BreakInheritanceList,
FormatStyle::BILS_BeforeComma);
CHECK_PARSE("BreakInheritanceList: AfterColon", BreakInheritanceList,
Index: clang/lib/Format/TokenAnnotator.cpp
===================================================================
--- clang/lib/Format/TokenAnnotator.cpp
+++ clang/lib/Format/TokenAnnotator.cpp
@@ -3639,6 +3639,9 @@
if (Style.BreakInheritanceList == FormatStyle::BILS_BeforeComma &&
Right.is(TT_InheritanceComma))
return true;
+ if (Style.BreakInheritanceList == FormatStyle::BILS_AfterComma &&
+ Left.is(TT_InheritanceComma))
+ return true;
if (Right.is(tok::string_literal) && Right.TokenText.startswith("R\""))
// Multiline raw string literals are special wrt. line breaks. The author
// has made a deliberate choice and might have aligned the contents of the
Index: clang/lib/Format/Format.cpp
===================================================================
--- clang/lib/Format/Format.cpp
+++ clang/lib/Format/Format.cpp
@@ -240,6 +240,7 @@
IO.enumCase(Value, "BeforeColon", FormatStyle::BILS_BeforeColon);
IO.enumCase(Value, "BeforeComma", FormatStyle::BILS_BeforeComma);
IO.enumCase(Value, "AfterColon", FormatStyle::BILS_AfterColon);
+ IO.enumCase(Value, "AfterComma", FormatStyle::BILS_AfterComma);
}
};
Index: clang/include/clang/Format/Format.h
===================================================================
--- clang/include/clang/Format/Format.h
+++ clang/include/clang/Format/Format.h
@@ -1829,7 +1829,14 @@
/// Base2
/// {};
/// \endcode
- BILS_AfterColon
+ BILS_AfterColon,
+ /// Break inheritance list only after the commas.
+ /// \code
+ /// class Foo : Base1,
+ /// Base2
+ /// {};
+ /// \endcode
+ BILS_AfterComma,
};
/// The inheritance list style to use.
Index: clang/docs/ReleaseNotes.rst
===================================================================
--- clang/docs/ReleaseNotes.rst
+++ clang/docs/ReleaseNotes.rst
@@ -248,6 +248,9 @@
accepts ``AllIfsAndElse`` value that allows to put "else if" and "else" short
statements on a single line. (Fixes https://llvm.org/PR50019.)
+- Option ``BreakInheritanceList`` gets a new style, ``AfterComma``. It breaks
+ only after the commas that separate the base-specifiers.
+
- ``git-clang-format`` no longer formats changes to symbolic links. (Fixes
https://llvm.org/PR46992.)
Index: clang/docs/ClangFormatStyleOptions.rst
===================================================================
--- clang/docs/ClangFormatStyleOptions.rst
+++ clang/docs/ClangFormatStyleOptions.rst
@@ -1999,6 +1999,15 @@
Base2
{};
+ * ``BILS_AfterComma`` (in configuration: ``AfterComma``)
+ Break inheritance list only after the commas.
+
+ .. code-block:: c++
+
+ class Foo : Base1,
+ Base2
+ {};
+
**BreakStringLiterals** (``bool``)
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits