forked from OSchip/llvm-project
[clang-format] broken after lambda with return type template with boolean literal
Summary: A Lamdba with a return type template with a boolean literal (true,false) behaves differently to an integer literal https://bugs.llvm.org/show_bug.cgi?id=40910 Reviewers: klimek, djasper, JonasToth, alexfh, krasimir, jkorous Reviewed By: jkorous Subscribers: jkorous, cfe-commits Tags: #clang-tools-extra Differential Revision: https://reviews.llvm.org/D58922 llvm-svn: 355450
This commit is contained in:
parent
f228b2c2ef
commit
10de395489
|
@ -1442,6 +1442,8 @@ bool UnwrappedLineParser::tryToParseLambda() {
|
|||
case tok::lessequal:
|
||||
case tok::question:
|
||||
case tok::colon:
|
||||
case tok::kw_true:
|
||||
case tok::kw_false:
|
||||
nextToken();
|
||||
break;
|
||||
case tok::arrow:
|
||||
|
|
|
@ -11936,6 +11936,21 @@ TEST_F(FormatTest, FormatsLambdas) {
|
|||
"// broken:\n"
|
||||
"auto foo{[]() -> foo<2 ? 1 : 0> { return {}; }};\n"
|
||||
"} // namespace bar");
|
||||
verifyFormat("[]() -> a<1> {};");
|
||||
verifyFormat("[]() -> a<1> { ; };");
|
||||
verifyFormat("[]() -> a<1> { ; }();");
|
||||
verifyFormat("[a, a]() -> a<true> {};");
|
||||
verifyFormat("[]() -> a<true> {};");
|
||||
verifyFormat("[]() -> a<true> { ; };");
|
||||
verifyFormat("[]() -> a<true> { ; }();");
|
||||
verifyFormat("[a, a]() -> a<false> {};");
|
||||
verifyFormat("[]() -> a<false> {};");
|
||||
verifyFormat("[]() -> a<false> { ; };");
|
||||
verifyFormat("[]() -> a<false> { ; }();");
|
||||
verifyFormat("auto foo{[]() -> foo<false> { ; }};");
|
||||
verifyFormat("namespace bar {\n"
|
||||
"auto foo{[]() -> foo<false> { ; }};\n"
|
||||
"} // namespace bar");
|
||||
verifyFormat("auto aaaaaaaa = [](int i, // break for some reason\n"
|
||||
" int j) -> int {\n"
|
||||
" return ffffffffffffffffffffffffffffffffffffffffffff(i * j);\n"
|
||||
|
|
Loading…
Reference in New Issue