[PATCH] D119650: [clang-format] Handle PointerAlignment in `if` and `switch` statements with initializers (C++17) the same way as in `for` loops.
Marek Kurdej via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sun Feb 13 12:37:20 PST 2022
This revision was automatically updated to reflect the committed changes.
curdeius marked 2 inline comments as done.
Closed by commit rG25282bd6c4bf: [clang-format] Handle PointerAlignment in `if` and `switch` statements with… (authored by curdeius).
Changed prior to commit:
https://reviews.llvm.org/D119650?vs=408216&id=408288#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D119650/new/
https://reviews.llvm.org/D119650
Files:
clang/lib/Format/TokenAnnotator.cpp
clang/unittests/Format/FormatTest.cpp
Index: clang/unittests/Format/FormatTest.cpp
===================================================================
--- clang/unittests/Format/FormatTest.cpp
+++ clang/unittests/Format/FormatTest.cpp
@@ -8396,6 +8396,12 @@
Style);
verifyFormat("vector<int*> a, b;", Style);
verifyFormat("for (int *p, *q; p != q; p = p->next) {\n}", Style);
+ verifyFormat("/*comment*/ for (int *p, *q; p != q; p = p->next) {\n}", Style);
+ verifyFormat("if (int *p, *q; p != q) {\n p = p->next;\n}", Style);
+ verifyFormat("/*comment*/ if (int *p, *q; p != q) {\n p = p->next;\n}",
+ Style);
+ verifyFormat("switch (int *p, *q; p != q) {\n default:\n break;\n}", Style);
+ verifyFormat("/*comment*/ switch (int *p, *q; p != q) {\n default:\n break;\n}", Style);
}
TEST_F(FormatTest, ConditionalExpressionsInBrackets) {
Index: clang/lib/Format/TokenAnnotator.cpp
===================================================================
--- clang/lib/Format/TokenAnnotator.cpp
+++ clang/lib/Format/TokenAnnotator.cpp
@@ -26,6 +26,13 @@
namespace {
+/// Returns \c true if the line starts with a token that can start a statement
+/// with an initializer.
+static bool startsWithInitStatement(const AnnotatedLine &Line) {
+ return Line.startsWith(tok::kw_for) || Line.startsWith(tok::kw_if) ||
+ Line.startsWith(tok::kw_switch);
+}
+
/// Returns \c true if the token can be used as an identifier in
/// an Objective-C \c \@selector, \c false otherwise.
///
@@ -1135,7 +1142,7 @@
else if (Contexts.back().InInheritanceList)
Tok->setType(TT_InheritanceComma);
else if (Contexts.back().FirstStartOfName &&
- (Contexts.size() == 1 || Line.startsWith(tok::kw_for))) {
+ (Contexts.size() == 1 || startsWithInitStatement(Line))) {
Contexts.back().FirstStartOfName->PartOfMultiVariableDeclStmt = true;
Line.IsMultiVariableDeclStmt = true;
}
@@ -3090,7 +3097,7 @@
FormatStyle::PAS_Left ||
(Line.IsMultiVariableDeclStmt &&
(Left.NestingLevel == 0 ||
- (Left.NestingLevel == 1 && Line.First->is(tok::kw_for)))));
+ (Left.NestingLevel == 1 && startsWithInitStatement(Line)))));
}
if (Right.is(TT_FunctionTypeLParen) && Left.isNot(tok::l_paren) &&
(!Left.is(TT_PointerOrReference) ||
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D119650.408288.patch
Type: text/x-patch
Size: 2374 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20220213/5375467f/attachment.bin>
More information about the cfe-commits
mailing list