[llvm-branch-commits] [clang] release/21.x: [clang-format] Don't swap `(const override)` with QAS_Right (#167191) (PR #170966)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Dec 5 20:13:07 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang-format
Author: None (llvmbot)
<details>
<summary>Changes</summary>
Backport dfe9838f9c790aa632bed0a1b67976c2a7e95f76
Requested by: @<!-- -->owenca
---
Full diff: https://github.com/llvm/llvm-project/pull/170966.diff
2 Files Affected:
- (modified) clang/lib/Format/QualifierAlignmentFixer.cpp (+13-4)
- (modified) clang/unittests/Format/QualifierFixerTest.cpp (+2)
``````````diff
diff --git a/clang/lib/Format/QualifierAlignmentFixer.cpp b/clang/lib/Format/QualifierAlignmentFixer.cpp
index 441a37a4902b7..cc59dbd13621d 100644
--- a/clang/lib/Format/QualifierAlignmentFixer.cpp
+++ b/clang/lib/Format/QualifierAlignmentFixer.cpp
@@ -182,8 +182,11 @@ const FormatToken *LeftRightQualifierAlignmentFixer::analyzeRight(
// We only need to think about streams that begin with a qualifier.
if (Tok->isNot(QualifierType))
return Tok;
+
+ const auto *Next = Tok->getNextNonComment();
+
// Don't concern yourself if nothing follows the qualifier.
- if (!Tok->Next)
+ if (!Next)
return Tok;
// Skip qualifiers to the left to find what preceeds the qualifiers.
@@ -247,9 +250,15 @@ const FormatToken *LeftRightQualifierAlignmentFixer::analyzeRight(
}();
// Find the last qualifier to the right.
- const FormatToken *LastQual = Tok;
- while (isQualifier(LastQual->getNextNonComment()))
- LastQual = LastQual->getNextNonComment();
+ const auto *LastQual = Tok;
+ for (; isQualifier(Next); Next = Next->getNextNonComment())
+ LastQual = Next;
+
+ if (!LastQual || !Next ||
+ (LastQual->isOneOf(tok::kw_const, tok::kw_volatile) &&
+ Next->isOneOf(Keywords.kw_override, Keywords.kw_final))) {
+ return Tok;
+ }
// If this qualifier is to the right of a type or pointer do a partial sort
// and return.
diff --git a/clang/unittests/Format/QualifierFixerTest.cpp b/clang/unittests/Format/QualifierFixerTest.cpp
index f42f2e307f713..55bdda32453ba 100644
--- a/clang/unittests/Format/QualifierFixerTest.cpp
+++ b/clang/unittests/Format/QualifierFixerTest.cpp
@@ -215,6 +215,8 @@ TEST_F(QualifierFixerTest, RightQualifier) {
Style);
verifyFormat("void foo() const override;", Style);
verifyFormat("void foo() const override LLVM_READONLY;", Style);
+ verifyFormat("MOCK_METHOD(ReturnType, myMethod, (int), (const override));",
+ Style);
verifyFormat("void foo() const final;", Style);
verifyFormat("void foo() const final LLVM_READONLY;", Style);
verifyFormat("void foo() const LLVM_READONLY;", Style);
``````````
</details>
https://github.com/llvm/llvm-project/pull/170966
More information about the llvm-branch-commits
mailing list