[llvm-branch-commits] [clang] release/19.x: [clang-format] Fix misalignments of pointers in angle brackets (#106013) (PR #106326)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Aug 27 19:22:22 PDT 2024
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 <owenpiano at 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) {
More information about the llvm-branch-commits
mailing list