|
@@ -426,16 +426,28 @@ TEST_F(FormatTest, FormatIfWithoutCompoundStatement) {
|
|
|
verifyFormat("if (a)\n if (b) {\n f();\n }\ng();");
|
|
|
verifyFormat("if constexpr (true)\n"
|
|
|
" f();\ng();");
|
|
|
+ verifyFormat("if CONSTEXPR (true)\n"
|
|
|
+ " f();\ng();");
|
|
|
verifyFormat("if constexpr (a)\n"
|
|
|
" if constexpr (b)\n"
|
|
|
" if constexpr (c)\n"
|
|
|
" g();\n"
|
|
|
"h();");
|
|
|
+ verifyFormat("if CONSTEXPR (a)\n"
|
|
|
+ " if CONSTEXPR (b)\n"
|
|
|
+ " if CONSTEXPR (c)\n"
|
|
|
+ " g();\n"
|
|
|
+ "h();");
|
|
|
verifyFormat("if constexpr (a)\n"
|
|
|
" if constexpr (b) {\n"
|
|
|
" f();\n"
|
|
|
" }\n"
|
|
|
"g();");
|
|
|
+ verifyFormat("if CONSTEXPR (a)\n"
|
|
|
+ " if CONSTEXPR (b) {\n"
|
|
|
+ " f();\n"
|
|
|
+ " }\n"
|
|
|
+ "g();");
|
|
|
|
|
|
FormatStyle AllowsMergedIf = getLLVMStyle();
|
|
|
AllowsMergedIf.AlignEscapedNewlines = FormatStyle::ENAS_Left;
|
|
@@ -561,10 +573,12 @@ TEST_F(FormatTest, FormatShortBracedStatements) {
|
|
|
|
|
|
verifyFormat("if (true) {}", AllowSimpleBracedStatements);
|
|
|
verifyFormat("if constexpr (true) {}", AllowSimpleBracedStatements);
|
|
|
+ verifyFormat("if CONSTEXPR (true) {}", AllowSimpleBracedStatements);
|
|
|
verifyFormat("while (true) {}", AllowSimpleBracedStatements);
|
|
|
verifyFormat("for (;;) {}", AllowSimpleBracedStatements);
|
|
|
verifyFormat("if (true) { f(); }", AllowSimpleBracedStatements);
|
|
|
verifyFormat("if constexpr (true) { f(); }", AllowSimpleBracedStatements);
|
|
|
+ verifyFormat("if CONSTEXPR (true) { f(); }", AllowSimpleBracedStatements);
|
|
|
verifyFormat("while (true) { f(); }", AllowSimpleBracedStatements);
|
|
|
verifyFormat("for (;;) { f(); }", AllowSimpleBracedStatements);
|
|
|
verifyFormat("if (true) {\n"
|
|
@@ -633,10 +647,12 @@ TEST_F(FormatTest, FormatShortBracedStatements) {
|
|
|
|
|
|
verifyFormat("if (true) {}", AllowSimpleBracedStatements);
|
|
|
verifyFormat("if constexpr (true) {}", AllowSimpleBracedStatements);
|
|
|
+ verifyFormat("if CONSTEXPR (true) {}", AllowSimpleBracedStatements);
|
|
|
verifyFormat("while (true) {}", AllowSimpleBracedStatements);
|
|
|
verifyFormat("for (;;) {}", AllowSimpleBracedStatements);
|
|
|
verifyFormat("if (true) { f(); }", AllowSimpleBracedStatements);
|
|
|
verifyFormat("if constexpr (true) { f(); }", AllowSimpleBracedStatements);
|
|
|
+ verifyFormat("if CONSTEXPR (true) { f(); }", AllowSimpleBracedStatements);
|
|
|
verifyFormat("while (true) { f(); }", AllowSimpleBracedStatements);
|
|
|
verifyFormat("for (;;) { f(); }", AllowSimpleBracedStatements);
|
|
|
verifyFormat("if (true)\n"
|
|
@@ -750,6 +766,19 @@ TEST_F(FormatTest, ParseIfElse) {
|
|
|
"else {\n"
|
|
|
" i();\n"
|
|
|
"}");
|
|
|
+ verifyFormat("if (true)\n"
|
|
|
+ " if CONSTEXPR (true)\n"
|
|
|
+ " if (true) {\n"
|
|
|
+ " if CONSTEXPR (true)\n"
|
|
|
+ " f();\n"
|
|
|
+ " } else {\n"
|
|
|
+ " g();\n"
|
|
|
+ " }\n"
|
|
|
+ " else\n"
|
|
|
+ " h();\n"
|
|
|
+ "else {\n"
|
|
|
+ " i();\n"
|
|
|
+ "}");
|
|
|
verifyFormat("void f() {\n"
|
|
|
" if (a) {\n"
|
|
|
" } else {\n"
|
|
@@ -771,6 +800,12 @@ TEST_F(FormatTest, ElseIf) {
|
|
|
" g();\n"
|
|
|
"else\n"
|
|
|
" h();");
|
|
|
+ verifyFormat("if CONSTEXPR (a)\n"
|
|
|
+ " f();\n"
|
|
|
+ "else if CONSTEXPR (b)\n"
|
|
|
+ " g();\n"
|
|
|
+ "else\n"
|
|
|
+ " h();");
|
|
|
verifyFormat("if (a) {\n"
|
|
|
" f();\n"
|
|
|
"}\n"
|
|
@@ -783,6 +818,14 @@ TEST_F(FormatTest, ElseIf) {
|
|
|
"} else if (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
|
|
|
" aaaaaaaaaaaaaaaaaaaaaaaaaaaa)) {\n"
|
|
|
"}");
|
|
|
+ verifyFormat("if (a) {\n"
|
|
|
+ "} else if constexpr (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
|
|
|
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaa)) {\n"
|
|
|
+ "}");
|
|
|
+ verifyFormat("if (a) {\n"
|
|
|
+ "} else if CONSTEXPR (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
|
|
|
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaa)) {\n"
|
|
|
+ "}");
|
|
|
verifyFormat("if (a) {\n"
|
|
|
"} else if (\n"
|
|
|
" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {\n"
|
|
@@ -793,6 +836,11 @@ TEST_F(FormatTest, ElseIf) {
|
|
|
" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {\n"
|
|
|
"}",
|
|
|
getLLVMStyleWithColumns(62));
|
|
|
+ verifyFormat("if (a) {\n"
|
|
|
+ "} else if CONSTEXPR (\n"
|
|
|
+ " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {\n"
|
|
|
+ "}",
|
|
|
+ getLLVMStyleWithColumns(62));
|
|
|
}
|
|
|
|
|
|
TEST_F(FormatTest, FormatsForLoop) {
|
|
@@ -3725,6 +3773,9 @@ TEST_F(FormatTest, LineBreakingInBinaryExpressions) {
|
|
|
verifyFormat("if constexpr ((aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ||\n"
|
|
|
" bbbbbbbbbbbbbbbbbb) && // aaaaaaaaaaa\n"
|
|
|
" cccccc) {\n}");
|
|
|
+ verifyFormat("if CONSTEXPR ((aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ||\n"
|
|
|
+ " bbbbbbbbbbbbbbbbbb) && // aaaaaaaaaaa\n"
|
|
|
+ " cccccc) {\n}");
|
|
|
verifyFormat("b = a &&\n"
|
|
|
" // Comment\n"
|
|
|
" b.c && d;");
|
|
@@ -3812,6 +3863,14 @@ TEST_F(FormatTest, ExpressionIndentation) {
|
|
|
"} else if (aaaaa && bbbbb > // break\n"
|
|
|
" ccccc) {\n"
|
|
|
"}");
|
|
|
+ verifyFormat("if () {\n"
|
|
|
+ "} else if constexpr (aaaaa && bbbbb > // break\n"
|
|
|
+ " ccccc) {\n"
|
|
|
+ "}");
|
|
|
+ verifyFormat("if () {\n"
|
|
|
+ "} else if CONSTEXPR (aaaaa && bbbbb > // break\n"
|
|
|
+ " ccccc) {\n"
|
|
|
+ "}");
|
|
|
verifyFormat("if () {\n"
|
|
|
"} else if (aaaaa &&\n"
|
|
|
" bbbbb > // break\n"
|
|
@@ -6913,7 +6972,11 @@ TEST_F(FormatTest, UnderstandsUsesOfStarAndAmp) {
|
|
|
verifyIndependentOfContext("if (int *a = &b)");
|
|
|
verifyIndependentOfContext("if (int &a = *b)");
|
|
|
verifyIndependentOfContext("if (a & b[i])");
|
|
|
+ verifyIndependentOfContext("if constexpr (a & b[i])");
|
|
|
+ verifyIndependentOfContext("if CONSTEXPR (a & b[i])");
|
|
|
verifyIndependentOfContext("if (a * (b * c))");
|
|
|
+ verifyIndependentOfContext("if constexpr (a * (b * c))");
|
|
|
+ verifyIndependentOfContext("if CONSTEXPR (a * (b * c))");
|
|
|
verifyIndependentOfContext("if (a::b::c::d & b[i])");
|
|
|
verifyIndependentOfContext("if (*b[i])");
|
|
|
verifyIndependentOfContext("if (int *a = (&b))");
|
|
@@ -8602,6 +8665,9 @@ TEST_F(FormatTest, MergeHandlingInTheFaceOfPreprocessorDirectives) {
|
|
|
verifyFormat("#define A \\\n"
|
|
|
" if constexpr (true) return 42;",
|
|
|
ShortMergedIf);
|
|
|
+ verifyFormat("#define A \\\n"
|
|
|
+ " if CONSTEXPR (true) return 42;",
|
|
|
+ ShortMergedIf);
|
|
|
ShortMergedIf.ColumnLimit = 29;
|
|
|
verifyFormat("#define A \\\n"
|
|
|
" if (aaaaaaaaaa) return 1; \\\n"
|
|
@@ -8618,6 +8684,11 @@ TEST_F(FormatTest, MergeHandlingInTheFaceOfPreprocessorDirectives) {
|
|
|
" return 1; \\\n"
|
|
|
" return 2;",
|
|
|
ShortMergedIf);
|
|
|
+ verifyFormat("#define A \\\n"
|
|
|
+ " if CONSTEXPR (aaaaaaa) \\\n"
|
|
|
+ " return 1; \\\n"
|
|
|
+ " return 2;",
|
|
|
+ ShortMergedIf);
|
|
|
}
|
|
|
|
|
|
TEST_F(FormatTest, FormatStarDependingOnContext) {
|
|
@@ -11181,6 +11252,14 @@ TEST_F(FormatTest, AllmanBraceBreaking) {
|
|
|
" }\n"
|
|
|
"}\n",
|
|
|
BreakBeforeBraceShortIfs);
|
|
|
+ verifyFormat("void f(bool b)\n"
|
|
|
+ "{\n"
|
|
|
+ " if CONSTEXPR (b)\n"
|
|
|
+ " {\n"
|
|
|
+ " return;\n"
|
|
|
+ " }\n"
|
|
|
+ "}\n",
|
|
|
+ BreakBeforeBraceShortIfs);
|
|
|
verifyFormat("void f(bool b)\n"
|
|
|
"{\n"
|
|
|
" if (b) return;\n"
|
|
@@ -11191,6 +11270,11 @@ TEST_F(FormatTest, AllmanBraceBreaking) {
|
|
|
" if constexpr (b) return;\n"
|
|
|
"}\n",
|
|
|
BreakBeforeBraceShortIfs);
|
|
|
+ verifyFormat("void f(bool b)\n"
|
|
|
+ "{\n"
|
|
|
+ " if CONSTEXPR (b) return;\n"
|
|
|
+ "}\n",
|
|
|
+ BreakBeforeBraceShortIfs);
|
|
|
verifyFormat("void f(bool b)\n"
|
|
|
"{\n"
|
|
|
" while (b)\n"
|
|
@@ -12858,6 +12942,11 @@ TEST_F(FormatTest, FormatsLambdas) {
|
|
|
" doo_dah();\n"
|
|
|
" })) {\n"
|
|
|
"}");
|
|
|
+ verifyFormat("if CONSTEXPR (blah_blah(whatever, whatever, [] {\n"
|
|
|
+ " doo_dah();\n"
|
|
|
+ " doo_dah();\n"
|
|
|
+ " })) {\n"
|
|
|
+ "}");
|
|
|
verifyFormat("auto lambda = []() {\n"
|
|
|
" int a = 2\n"
|
|
|
"#if A\n"
|