[clang-format] Handle comments between access specifier and colon

Fixes #56740.

Differential Revision: https://reviews.llvm.org/D131940
This commit is contained in:
owenca 2022-08-15 21:30:36 -07:00
parent ba1fb54821
commit 2185f64771
2 changed files with 16 additions and 2 deletions

View File

@ -584,8 +584,12 @@ public:
}
bool isAccessSpecifier(bool ColonRequired = true) const {
return isOneOf(tok::kw_public, tok::kw_protected, tok::kw_private) &&
(!ColonRequired || (Next && Next->is(tok::colon)));
if (!isOneOf(tok::kw_public, tok::kw_protected, tok::kw_private))
return false;
if (!ColonRequired)
return true;
const auto NextNonComment = getNextNonComment();
return NextNonComment && NextNonComment->is(tok::colon);
}
bool canBePointerOrReferenceQualifier() const {

View File

@ -24799,6 +24799,11 @@ TEST_F(FormatTest, IndentAccessModifiers) {
" int i;\n"
"};\n",
Style);
verifyFormat("class C {\n"
" public /* comment */:\n"
" int i;\n"
"};",
Style);
verifyFormat("struct S {\n"
" private:\n"
" class C {\n"
@ -24827,6 +24832,11 @@ TEST_F(FormatTest, IndentAccessModifiers) {
" int i;\n"
"};\n",
Style);
verifyFormat("class C {\n"
" public /**/:\n"
" int i;\n"
"};",
Style);
}
TEST_F(FormatTest, LimitlessStringsAndComments) {