[clang] f0ad9ea - [clang-format] Handle lambdas in QualifierAlignment (#72456)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Nov 16 15:00:13 PST 2023
Author: Owen Pan
Date: 2023-11-16T15:00:09-08:00
New Revision: f0ad9ea36ad65cec8c5e5d1d59c00192b87f287d
URL: https://github.com/llvm/llvm-project/commit/f0ad9ea36ad65cec8c5e5d1d59c00192b87f287d
DIFF: https://github.com/llvm/llvm-project/commit/f0ad9ea36ad65cec8c5e5d1d59c00192b87f287d.diff
LOG: [clang-format] Handle lambdas in QualifierAlignment (#72456)
Fixed #62780.
Added:
Modified:
clang/lib/Format/QualifierAlignmentFixer.cpp
clang/lib/Format/QualifierAlignmentFixer.h
clang/unittests/Format/QualifierFixerTest.cpp
Removed:
################################################################################
diff --git a/clang/lib/Format/QualifierAlignmentFixer.cpp b/clang/lib/Format/QualifierAlignmentFixer.cpp
index e2fab1c1e3c2a37..84941746f0df71b 100644
--- a/clang/lib/Format/QualifierAlignmentFixer.cpp
+++ b/clang/lib/Format/QualifierAlignmentFixer.cpp
@@ -535,14 +535,21 @@ LeftRightQualifierAlignmentFixer::analyze(
SmallVectorImpl<AnnotatedLine *> &AnnotatedLines,
FormatTokenLexer &Tokens) {
tooling::Replacements Fixes;
- const AdditionalKeywords &Keywords = Tokens.getKeywords();
- const SourceManager &SourceMgr = Env.getSourceManager();
AffectedRangeMgr.computeAffectedLines(AnnotatedLines);
+ fixQualifierAlignment(AnnotatedLines, Tokens, Fixes);
+ return {Fixes, 0};
+}
+void LeftRightQualifierAlignmentFixer::fixQualifierAlignment(
+ SmallVectorImpl<AnnotatedLine *> &AnnotatedLines, FormatTokenLexer &Tokens,
+ tooling::Replacements &Fixes) {
+ const AdditionalKeywords &Keywords = Tokens.getKeywords();
+ const SourceManager &SourceMgr = Env.getSourceManager();
tok::TokenKind QualifierToken = getTokenFromQualifier(Qualifier);
assert(QualifierToken != tok::identifier && "Unrecognised Qualifier");
for (AnnotatedLine *Line : AnnotatedLines) {
+ fixQualifierAlignment(Line->Children, Tokens, Fixes);
if (!Line->Affected || Line->InPPDirective)
continue;
FormatToken *First = Line->First;
@@ -565,7 +572,6 @@ LeftRightQualifierAlignmentFixer::analyze(
}
}
}
- return {Fixes, 0};
}
void prepareLeftRightOrderingForQualifierAlignmentFixer(
diff --git a/clang/lib/Format/QualifierAlignmentFixer.h b/clang/lib/Format/QualifierAlignmentFixer.h
index a72d135179f1ece..e922d8005595103 100644
--- a/clang/lib/Format/QualifierAlignmentFixer.h
+++ b/clang/lib/Format/QualifierAlignmentFixer.h
@@ -52,6 +52,10 @@ class LeftRightQualifierAlignmentFixer : public TokenAnalyzer {
static tok::TokenKind getTokenFromQualifier(const std::string &Qualifier);
+ void fixQualifierAlignment(SmallVectorImpl<AnnotatedLine *> &AnnotatedLines,
+ FormatTokenLexer &Tokens,
+ tooling::Replacements &Fixes);
+
const FormatToken *analyzeRight(const SourceManager &SourceMgr,
const AdditionalKeywords &Keywords,
tooling::Replacements &Fixes,
diff --git a/clang/unittests/Format/QualifierFixerTest.cpp b/clang/unittests/Format/QualifierFixerTest.cpp
index a56323a88f4a04d..324366ca7f5e511 100644
--- a/clang/unittests/Format/QualifierFixerTest.cpp
+++ b/clang/unittests/Format/QualifierFixerTest.cpp
@@ -357,6 +357,9 @@ TEST_F(QualifierFixerTest, RightQualifier) {
verifyFormat("void f(std::integral auto const &x);",
"void f(const std::integral auto &x);", Style);
+ verifyFormat("auto lambda = [] { int const i = 0; };",
+ "auto lambda = [] { const int i = 0; };", Style);
+
verifyFormat("Foo<Foo<int> const> P;\n#if 0\n#else\n#endif",
"Foo<const Foo<int>> P;\n#if 0\n#else\n#endif", Style);
@@ -663,6 +666,9 @@ TEST_F(QualifierFixerTest, LeftQualifier) {
verifyFormat("void f(const std::integral auto &x);",
"void f(std::integral auto const &x);", Style);
+ verifyFormat("auto lambda = [] { const int i = 0; };",
+ "auto lambda = [] { int const i = 0; };", Style);
+
verifyFormat("Foo<const Foo<int>> P;\n#if 0\n#else\n#endif",
"Foo<Foo<int> const> P;\n#if 0\n#else\n#endif", Style);
More information about the cfe-commits
mailing list