[clang-format] Fix invalid code generation with comments in lambda
Fixes #51234 and #54496 Differential Revision: https://reviews.llvm.org/D122301
This commit is contained in:
parent
f319c24570
commit
f74413d163
|
@ -2762,12 +2762,16 @@ void TokenAnnotator::calculateFormattingInformation(AnnotatedLine &Line) {
|
|||
Current->SpacesRequiredBefore = 1;
|
||||
}
|
||||
|
||||
Current->MustBreakBefore =
|
||||
Current->MustBreakBefore || mustBreakBefore(Line, *Current);
|
||||
|
||||
if (!Current->MustBreakBefore && InFunctionDecl &&
|
||||
Current->is(TT_FunctionDeclarationName))
|
||||
Current->MustBreakBefore = mustBreakForReturnType(Line);
|
||||
const auto &Children = Prev->Children;
|
||||
if (!Children.empty() && Children.back()->Last->is(TT_LineComment)) {
|
||||
Current->MustBreakBefore = true;
|
||||
} else {
|
||||
Current->MustBreakBefore =
|
||||
Current->MustBreakBefore || mustBreakBefore(Line, *Current);
|
||||
if (!Current->MustBreakBefore && InFunctionDecl &&
|
||||
Current->is(TT_FunctionDeclarationName))
|
||||
Current->MustBreakBefore = mustBreakForReturnType(Line);
|
||||
}
|
||||
|
||||
Current->CanBreakBefore =
|
||||
Current->MustBreakBefore || canBreakBefore(Line, *Current);
|
||||
|
|
|
@ -21934,6 +21934,30 @@ TEST_F(FormatTest, LambdaWithLineComments) {
|
|||
"auto k = []() // XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"
|
||||
"{ return; }",
|
||||
LLVMWithBeforeLambdaBody);
|
||||
|
||||
LLVMWithBeforeLambdaBody.ColumnLimit = 0;
|
||||
|
||||
verifyFormat("foo([]()\n"
|
||||
" {\n"
|
||||
" bar(); //\n"
|
||||
" return 1; // comment\n"
|
||||
" }());",
|
||||
"foo([]() {\n"
|
||||
" bar(); //\n"
|
||||
" return 1; // comment\n"
|
||||
"}());",
|
||||
LLVMWithBeforeLambdaBody);
|
||||
verifyFormat("foo(\n"
|
||||
" 1, MACRO {\n"
|
||||
" baz();\n"
|
||||
" bar(); // comment\n"
|
||||
" },\n"
|
||||
" []() {});",
|
||||
"foo(\n"
|
||||
" 1, MACRO { baz(); bar(); // comment\n"
|
||||
" }, []() {}\n"
|
||||
");",
|
||||
LLVMWithBeforeLambdaBody);
|
||||
}
|
||||
|
||||
TEST_F(FormatTest, EmptyLinesInLambdas) {
|
||||
|
|
Loading…
Reference in a new issue