https://github.com/llvmbot created https://github.com/llvm/llvm-project/pull/106326
Backport 656d5aa95825515a55ded61f19d41053c850c82d Requested by: @owenca >From e6894cb3d41d145cf69754b27dbeb0064685934d Mon Sep 17 00:00:00 2001 From: Owen Pan <owenpi...@gmail.com> Date: Tue, 27 Aug 2024 19:13:27 -0700 Subject: [PATCH] [clang-format] Fix misalignments of pointers in angle brackets (#106013) Fixes #105898. (cherry picked from commit 656d5aa95825515a55ded61f19d41053c850c82d) --- clang/lib/Format/WhitespaceManager.cpp | 4 +++- clang/unittests/Format/FormatTest.cpp | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/clang/lib/Format/WhitespaceManager.cpp b/clang/lib/Format/WhitespaceManager.cpp index a31874a7c3195a..fd4a40a86082e2 100644 --- a/clang/lib/Format/WhitespaceManager.cpp +++ b/clang/lib/Format/WhitespaceManager.cpp @@ -469,7 +469,9 @@ AlignTokenSequence(const FormatStyle &Style, unsigned Start, unsigned End, // except if the token is equal, then a space is needed. if ((Style.PointerAlignment == FormatStyle::PAS_Right || Style.ReferenceAlignment == FormatStyle::RAS_Right) && - CurrentChange.Spaces != 0 && CurrentChange.Tok->isNot(tok::equal)) { + CurrentChange.Spaces != 0 && + !CurrentChange.Tok->isOneOf(tok::equal, tok::r_paren, + TT_TemplateCloser)) { const bool ReferenceNotRightAligned = Style.ReferenceAlignment != FormatStyle::RAS_Right && Style.ReferenceAlignment != FormatStyle::RAS_Pointer; diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index 82af149e048c94..29200b72d3d008 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -19186,6 +19186,24 @@ TEST_F(FormatTest, AlignConsecutiveAssignments) { "X = func<Type, Type>(looooooooooooooooooooooooong,\n" " arrrrrrrrrrg);", Alignment); + + Alignment.ColumnLimit = 80; + Alignment.SpacesInAngles = FormatStyle::SIAS_Always; + verifyFormat("void **ptr = reinterpret_cast< void ** >(unkn);\n" + "ptr = reinterpret_cast< void ** >(ptr[0]);", + Alignment); + verifyFormat("quint32 *dstimg = reinterpret_cast< quint32 * >(out(i));\n" + "quint32 *dstmask = reinterpret_cast< quint32 * >(outmask(i));", + Alignment); + + Alignment.SpacesInParens = FormatStyle::SIPO_Custom; + Alignment.SpacesInParensOptions.InCStyleCasts = true; + verifyFormat("void **ptr = ( void ** )unkn;\n" + "ptr = ( void ** )ptr[0];", + Alignment); + verifyFormat("quint32 *dstimg = ( quint32 * )out.scanLine(i);\n" + "quint32 *dstmask = ( quint32 * )outmask.scanLine(i);", + Alignment); } TEST_F(FormatTest, AlignConsecutiveBitFields) { _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits