[clang] [clang-format] Fix a bug in TCAS_Leave using tabs for indentation (PR #98427)
Owen Pan via cfe-commits
cfe-commits at lists.llvm.org
Wed Jul 10 20:55:35 PDT 2024
https://github.com/owenca created https://github.com/llvm/llvm-project/pull/98427
Fixes #92530.
>From fa1da3d06ed2207902df4911933bd40f0d514e51 Mon Sep 17 00:00:00 2001
From: Owen Pan <owenpiano at gmail.com>
Date: Wed, 10 Jul 2024 20:52:18 -0700
Subject: [PATCH] [clang-format] Fix a bug in TCAS_Leave using tabs for
indentation
Fixes #92530.
---
clang/lib/Format/WhitespaceManager.cpp | 2 +-
clang/unittests/Format/FormatTestComments.cpp | 17 +++++++++++++++++
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/clang/lib/Format/WhitespaceManager.cpp b/clang/lib/Format/WhitespaceManager.cpp
index 50531aee9d597..a31874a7c3195 100644
--- a/clang/lib/Format/WhitespaceManager.cpp
+++ b/clang/lib/Format/WhitespaceManager.cpp
@@ -1116,7 +1116,7 @@ void WhitespaceManager::alignTrailingComments() {
// leave the comments.
if (RestoredLineLength >= Style.ColumnLimit && Style.ColumnLimit > 0)
break;
- C.Spaces = OriginalSpaces;
+ C.Spaces = C.NewlinesBefore > 0 ? C.Tok->OriginalColumn : OriginalSpaces;
continue;
}
diff --git a/clang/unittests/Format/FormatTestComments.cpp b/clang/unittests/Format/FormatTestComments.cpp
index 3e75707a9faec..8f84d59cbb2e2 100644
--- a/clang/unittests/Format/FormatTestComments.cpp
+++ b/clang/unittests/Format/FormatTestComments.cpp
@@ -3145,6 +3145,23 @@ TEST_F(FormatTestComments, AlignTrailingCommentsLeave) {
"int bar = 1234; // This is a very long comment\n"
" // which is wrapped arround.",
Style));
+
+ Style = getLLVMStyle();
+ Style.AlignTrailingComments.Kind = FormatStyle::TCAS_Leave;
+ Style.TabWidth = 2;
+ Style.UseTab = FormatStyle::UT_ForIndentation;
+ verifyNoChange("{\n"
+ "\t// f\n"
+ "\tf();\n"
+ "\n"
+ "\t// g\n"
+ "\tg();\n"
+ "\t{\n"
+ "\t\t// h(); // h\n"
+ "\t\tfoo(); // foo\n"
+ "\t}\n"
+ "}",
+ Style);
}
TEST_F(FormatTestComments, DontAlignNamespaceComments) {
More information about the cfe-commits
mailing list