[clang] [clang-format] Fix a bug in aligning comments in vector of structs (PR #72099)
Owen Pan via cfe-commits
cfe-commits at lists.llvm.org
Mon Nov 13 02:42:01 PST 2023
https://github.com/owenca created https://github.com/llvm/llvm-project/pull/72099
Fixed #71825.
>From eab0253833b7a5910cec573cabf86bb6a1abf6ef Mon Sep 17 00:00:00 2001
From: Owen Pan <owenpiano at gmail.com>
Date: Mon, 13 Nov 2023 02:37:30 -0800
Subject: [PATCH] [clang-format] Fix a bug in aligning comments in vector of
structs
Fixed #71825.
---
clang/lib/Format/WhitespaceManager.cpp | 2 +-
clang/unittests/Format/FormatTest.cpp | 5 +++++
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/clang/lib/Format/WhitespaceManager.cpp b/clang/lib/Format/WhitespaceManager.cpp
index 764a068912e780a..32d8b97cc8dadb1 100644
--- a/clang/lib/Format/WhitespaceManager.cpp
+++ b/clang/lib/Format/WhitespaceManager.cpp
@@ -1465,7 +1465,7 @@ WhitespaceManager::CellDescriptions WhitespaceManager::getCells(unsigned Start,
// Account for the added token lengths
Changes[j].Spaces = InitialSpaces - InitialTokenLength;
}
- } else if (C.Tok->is(tok::comment)) {
+ } else if (C.Tok->is(tok::comment) && C.Tok->NewlinesBefore == 0) {
// Trailing comments stay at a space past the last token
C.Spaces = Changes[i - 1].Tok->is(tok::comma) ? 1 : 2;
} else if (C.Tok->is(tok::l_brace)) {
diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp
index 21df86bf2eace55..f531e6da6a5c31b 100644
--- a/clang/unittests/Format/FormatTest.cpp
+++ b/clang/unittests/Format/FormatTest.cpp
@@ -21076,6 +21076,11 @@ TEST_F(FormatTest, CatchAlignArrayOfStructuresLeftAlignment) {
" {7, 5, \"!!\" }\n"
"};",
Style);
+ verifyFormat("Foo foo = {\n"
+ " // comment\n"
+ " {1, 2}\n"
+ "};",
+ Style);
Style.ColumnLimit = 20;
// FIXME: unstable test case
More information about the cfe-commits
mailing list