[PATCH] D101033: [clang-format] fix indent in alignChainedConditionals
Krasimir Georgiev via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Apr 22 02:06:14 PDT 2021
krasimir created this revision.
krasimir requested review of this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.
Clang-format was indenting the lines following the `?` in the added test
case by +5 instead of +4. This only happens in a very specific
situation, where the `?` is followed by a multiline block comment, as in
the example. This fix addresses this without regressing any of the
existing tests.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D101033
Files:
clang/lib/Format/WhitespaceManager.cpp
clang/unittests/Format/FormatTest.cpp
Index: clang/unittests/Format/FormatTest.cpp
===================================================================
--- clang/unittests/Format/FormatTest.cpp
+++ clang/unittests/Format/FormatTest.cpp
@@ -6459,6 +6459,30 @@
" bbbb ? cccccccccccccccccc :\n"
" ddddd;\n",
Style);
+
+ EXPECT_EQ(
+ "MMMMMMMMMMMMMMMMMMMMMMMMMMM = A ?\n"
+ " /*\n"
+ " */\n"
+ " function() {\n"
+ " try {\n"
+ " return JJJJJJJJJJJJJJ(\n"
+ " pppppppppppppppppppppppppppppppppppppppppppppppppp);\n"
+ " }\n"
+ " } :\n"
+ " function() {};",
+ format(
+ "MMMMMMMMMMMMMMMMMMMMMMMMMMM = A ?\n"
+ " /*\n"
+ " */\n"
+ " function() {\n"
+ " try {\n"
+ " return JJJJJJJJJJJJJJ(\n"
+ " pppppppppppppppppppppppppppppppppppppppppppppppppp);\n"
+ " }\n"
+ " } :\n"
+ " function() {};",
+ getGoogleStyle(FormatStyle::LK_JavaScript)));
}
TEST_F(FormatTest, BreaksConditionalExpressionsAfterOperator) {
Index: clang/lib/Format/WhitespaceManager.cpp
===================================================================
--- clang/lib/Format/WhitespaceManager.cpp
+++ clang/lib/Format/WhitespaceManager.cpp
@@ -778,12 +778,11 @@
Changes, /*StartAt=*/0);
} else {
static auto AlignWrappedOperand = [](Change const &C) {
- auto Previous = C.Tok->getPreviousNonComment(); // Previous;
+ FormatToken *Previous = C.Tok->getPreviousNonComment();
return C.NewlinesBefore && Previous && Previous->is(TT_ConditionalExpr) &&
- (Previous->is(tok::question) ||
- (Previous->is(tok::colon) &&
- (C.Tok->FakeLParens.size() == 0 ||
- C.Tok->FakeLParens.back() != prec::Conditional)));
+ (Previous->is(tok::colon) &&
+ (C.Tok->FakeLParens.size() == 0 ||
+ C.Tok->FakeLParens.back() != prec::Conditional));
};
// Ensure we keep alignment of wrapped operands with non-wrapped operands
// Since we actually align the operators, the wrapped operands need the
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D101033.339524.patch
Type: text/x-patch
Size: 2276 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210422/33f48cad/attachment.bin>
More information about the cfe-commits
mailing list