-
Notifications
You must be signed in to change notification settings - Fork 15.4k
[clang-format] Fix a regression in PointerAlignment: Left
#124085
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Don't insert a space between a type declaration r_paren and &/&&. Fixes llvm#124073.
|
@llvm/pr-subscribers-clang-format Author: Owen Pan (owenca) ChangesDon't insert a space between a type declaration r_paren and &/&&. Fixes #124073. Full diff: https://github.com/llvm/llvm-project/pull/124085.diff 2 Files Affected:
diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp
index bf5ee281c43119..f36cf7b638e0d2 100644
--- a/clang/lib/Format/TokenAnnotator.cpp
+++ b/clang/lib/Format/TokenAnnotator.cpp
@@ -5488,8 +5488,8 @@ bool TokenAnnotator::spaceRequiredBefore(const AnnotatedLine &Line,
}
if ((Left.is(TT_TemplateOpener)) != (Right.is(TT_TemplateCloser)))
return ShouldAddSpacesInAngles();
- if (Left.is(tok::r_paren) && Right.is(TT_PointerOrReference) &&
- Right.isOneOf(tok::amp, tok::ampamp)) {
+ if (Left.is(tok::r_paren) && Left.isNot(TT_TypeDeclarationParen) &&
+ Right.is(TT_PointerOrReference) && Right.isOneOf(tok::amp, tok::ampamp)) {
return true;
}
// Space before TT_StructuredBindingLSquare.
diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp
index 61aa140dfdc9c0..265461561d2012 100644
--- a/clang/unittests/Format/FormatTest.cpp
+++ b/clang/unittests/Format/FormatTest.cpp
@@ -2084,7 +2084,6 @@ TEST_F(FormatTest, SeparatePointerReferenceAlignment) {
Style);
Style.PointerAlignment = FormatStyle::PAS_Left;
- Style.ReferenceAlignment = FormatStyle::RAS_Pointer;
verifyFormat("int* f1(int* a, int& b, int&& c);", Style);
verifyFormat("int& f2(int&& c, int* a, int& b);", Style);
verifyFormat("int&& f3(int& b, int&& c, int* a);", Style);
@@ -2118,6 +2117,7 @@ TEST_F(FormatTest, SeparatePointerReferenceAlignment) {
"function<int(int&)> res1 = [](int& a) { return 0000000000000; },\n"
" res2 = [](int& a) { return 0000000000000; };",
Style);
+ verifyFormat("[](decltype(foo)& Bar) {}", Style);
Style.AlignConsecutiveDeclarations.Enabled = true;
Style.AlignConsecutiveDeclarations.AlignFunctionPointers = true;
|
mydeveloperday
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
|
/cherry-pick 6330f1e |
|
Failed to cherry-pick: 6330f1e https://github.com/llvm/llvm-project/actions/runs/13277229863 Please manually backport the fix and push it to your github fork. Once this is done, please create a pull request |
|
Oops! 6330f1e was already in 20.x. |
Don't insert a space between a type declaration r_paren and &/&&.
Fixes #124073.