[PATCH] D151047: [clang-format] Fix indentation for selective formatting.
Owen Pan via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue May 23 19:40:38 PDT 2023
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG72ab89e3197c: [clang-format] Fix indentation for selective formatting (authored by Sedeniono, committed by owenpan).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D151047/new/
https://reviews.llvm.org/D151047
Files:
clang/lib/Format/UnwrappedLineFormatter.cpp
clang/unittests/Format/FormatTestSelective.cpp
Index: clang/unittests/Format/FormatTestSelective.cpp
===================================================================
--- clang/unittests/Format/FormatTestSelective.cpp
+++ clang/unittests/Format/FormatTestSelective.cpp
@@ -528,6 +528,26 @@
format(" int a;\n"
"void ffffff() {}",
11, 0));
+
+ // https://github.com/llvm/llvm-project/issues/59178
+ Style = getMozillaStyle();
+ EXPECT_EQ("int a()\n"
+ "{\n"
+ "return 0;\n"
+ "}\n"
+ "int b()\n"
+ "{\n"
+ " return 42;\n"
+ "}",
+ format("int a()\n"
+ "{\n"
+ "return 0;\n"
+ "}\n"
+ "int b()\n"
+ "{\n"
+ "return 42;\n" // Format this line only
+ "}",
+ 32, 0));
}
TEST_F(FormatTestSelective, UnderstandsTabs) {
Index: clang/lib/Format/UnwrappedLineFormatter.cpp
===================================================================
--- clang/lib/Format/UnwrappedLineFormatter.cpp
+++ clang/lib/Format/UnwrappedLineFormatter.cpp
@@ -74,6 +74,12 @@
: Line.Level * PPIndentWidth;
Indent += AdditionalIndent;
} else {
+ // When going to lower levels, forget previous higher levels so that we
+ // recompute future higher levels. But don't forget them if we enter a PP
+ // directive, since these do not terminate a code block.
+ if (!Line.InPPDirective)
+ IndentForLevel.resize(Line.Level + 1);
+
Indent = getIndent(Line.Level);
}
if (static_cast<int>(Indent) + Offset >= 0)
@@ -910,6 +916,7 @@
Tok->TotalLength += LengthA;
A.Last = Tok;
}
+ A.Level = B.Level;
}
const FormatStyle &Style;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D151047.524976.patch
Type: text/x-patch
Size: 1838 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20230524/8de8052b/attachment.bin>
More information about the cfe-commits
mailing list