summaryrefslogtreecommitdiff
path: root/clang/unittests/Format/FormatTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/unittests/Format/FormatTest.cpp')
-rw-r--r--clang/unittests/Format/FormatTest.cpp774
1 files changed, 13 insertions, 761 deletions
diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp
index 136039d25539..4e9d31895998 100644
--- a/clang/unittests/Format/FormatTest.cpp
+++ b/clang/unittests/Format/FormatTest.cpp
@@ -8051,67 +8051,6 @@ TEST_F(FormatTest, AllowAllArgumentsOnNextLine) {
Style);
}
-TEST_F(FormatTest, AllowAllArgumentsOnNextLineDontAlign) {
- // Check that AllowAllArgumentsOnNextLine is respected for both BAS_DontAlign
- // and BAS_Align.
- FormatStyle Style = getLLVMStyleWithColumns(35);
- StringRef Input = "functionCall(paramA, paramB, paramC);\n"
- "void functionDecl(int A, int B, int C);";
- Style.AllowAllArgumentsOnNextLine = false;
- Style.AlignAfterOpenBracket = FormatStyle::BAS_DontAlign;
- verifyFormat(StringRef("functionCall(paramA, paramB,\n"
- " paramC);\n"
- "void functionDecl(int A, int B,\n"
- " int C);"),
- Input, Style);
- Style.AlignAfterOpenBracket = FormatStyle::BAS_Align;
- verifyFormat(StringRef("functionCall(paramA, paramB,\n"
- " paramC);\n"
- "void functionDecl(int A, int B,\n"
- " int C);"),
- Input, Style);
- // However, BAS_AlwaysBreak and BAS_BlockIndent should take precedence over
- // AllowAllArgumentsOnNextLine.
- Style.AlignAfterOpenBracket = FormatStyle::BAS_AlwaysBreak;
- verifyFormat(StringRef("functionCall(\n"
- " paramA, paramB, paramC);\n"
- "void functionDecl(\n"
- " int A, int B, int C);"),
- Input, Style);
- Style.AlignAfterOpenBracket = FormatStyle::BAS_BlockIndent;
- verifyFormat("functionCall(\n"
- " paramA, paramB, paramC\n"
- ");\n"
- "void functionDecl(\n"
- " int A, int B, int C\n"
- ");",
- Input, Style);
-
- // When AllowAllArgumentsOnNextLine is set, we prefer breaking before the
- // first argument.
- Style.AllowAllArgumentsOnNextLine = true;
- Style.AlignAfterOpenBracket = FormatStyle::BAS_AlwaysBreak;
- verifyFormat(StringRef("functionCall(\n"
- " paramA, paramB, paramC);\n"
- "void functionDecl(\n"
- " int A, int B, int C);"),
- Input, Style);
- // It wouldn't fit on one line with aligned parameters so this setting
- // doesn't change anything for BAS_Align.
- Style.AlignAfterOpenBracket = FormatStyle::BAS_Align;
- verifyFormat(StringRef("functionCall(paramA, paramB,\n"
- " paramC);\n"
- "void functionDecl(int A, int B,\n"
- " int C);"),
- Input, Style);
- Style.AlignAfterOpenBracket = FormatStyle::BAS_DontAlign;
- verifyFormat(StringRef("functionCall(\n"
- " paramA, paramB, paramC);\n"
- "void functionDecl(\n"
- " int A, int B, int C);"),
- Input, Style);
-}
-
TEST_F(FormatTest, BreakFunctionDefinitionParameters) {
StringRef Input = "void functionDecl(paramA, paramB, paramC);\n"
"void emptyFunctionDefinition() {}\n"
@@ -9030,97 +8969,6 @@ TEST_F(FormatTest, FormatsOneParameterPerLineIfNecessary) {
NoBinPacking);
}
-TEST_F(FormatTest, FormatsDeclarationBreakAlways) {
- FormatStyle BreakAlways = getGoogleStyle();
- BreakAlways.BinPackParameters = FormatStyle::BPPS_AlwaysOnePerLine;
- verifyFormat("void f(int a,\n"
- " int b);",
- BreakAlways);
- verifyFormat("void f(int aaaaaaaaaaaaaaaaaaaaaaaaaa,\n"
- " int bbbbbbbbbbbbbbbbbbbbbbbbb,\n"
- " int cccccccccccccccccccccccc);",
- BreakAlways);
-
- // Ensure AlignAfterOpenBracket interacts correctly with BinPackParameters set
- // to BPPS_AlwaysOnePerLine.
- BreakAlways.AlignAfterOpenBracket = FormatStyle::BAS_AlwaysBreak;
- verifyFormat(
- "void someLongFunctionName(\n"
- " int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,\n"
- " int b);",
- BreakAlways);
- BreakAlways.AlignAfterOpenBracket = FormatStyle::BAS_BlockIndent;
- verifyFormat(
- "void someLongFunctionName(\n"
- " int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,\n"
- " int b\n"
- ");",
- BreakAlways);
-}
-
-TEST_F(FormatTest, FormatsDefinitionBreakAlways) {
- FormatStyle BreakAlways = getGoogleStyle();
- BreakAlways.BinPackParameters = FormatStyle::BPPS_AlwaysOnePerLine;
- verifyFormat("void f(int a,\n"
- " int b) {\n"
- " f(a, b);\n"
- "}",
- BreakAlways);
-
- // Ensure BinPackArguments interact correctly when BinPackParameters is set to
- // BPPS_AlwaysOnePerLine.
- verifyFormat("void f(int aaaaaaaaaaaaaaaaaaaaaaaaaa,\n"
- " int bbbbbbbbbbbbbbbbbbbbbbbbb,\n"
- " int cccccccccccccccccccccccc) {\n"
- " f(aaaaaaaaaaaaaaaaaaaaaaaaaa, bbbbbbbbbbbbbbbbbbbbbbbbb,\n"
- " cccccccccccccccccccccccc);\n"
- "}",
- BreakAlways);
- BreakAlways.BinPackArguments = false;
- verifyFormat("void f(int aaaaaaaaaaaaaaaaaaaaaaaaaa,\n"
- " int bbbbbbbbbbbbbbbbbbbbbbbbb,\n"
- " int cccccccccccccccccccccccc) {\n"
- " f(aaaaaaaaaaaaaaaaaaaaaaaaaa,\n"
- " bbbbbbbbbbbbbbbbbbbbbbbbb,\n"
- " cccccccccccccccccccccccc);\n"
- "}",
- BreakAlways);
-
- // Ensure BreakFunctionDefinitionParameters interacts correctly when
- // BinPackParameters is set to BPPS_AlwaysOnePerLine.
- BreakAlways.BreakFunctionDefinitionParameters = true;
- verifyFormat("void f(\n"
- " int a,\n"
- " int b) {\n"
- " f(a, b);\n"
- "}",
- BreakAlways);
- BreakAlways.BreakFunctionDefinitionParameters = false;
-
- // Ensure AlignAfterOpenBracket interacts correctly with BinPackParameters set
- // to BPPS_AlwaysOnePerLine.
- BreakAlways.AlignAfterOpenBracket = FormatStyle::BAS_AlwaysBreak;
- verifyFormat(
- "void someLongFunctionName(\n"
- " int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,\n"
- " int b) {\n"
- " someLongFunctionName(\n"
- " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, b);\n"
- "}",
- BreakAlways);
- BreakAlways.AlignAfterOpenBracket = FormatStyle::BAS_BlockIndent;
- verifyFormat(
- "void someLongFunctionName(\n"
- " int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,\n"
- " int b\n"
- ") {\n"
- " someLongFunctionName(\n"
- " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, b\n"
- " );\n"
- "}",
- BreakAlways);
-}
-
TEST_F(FormatTest, AdaptiveOnePerLineFormatting) {
FormatStyle Style = getLLVMStyleWithColumns(15);
Style.ExperimentalAutoDetectBinPacking = true;
@@ -9518,216 +9366,6 @@ TEST_F(FormatTest, AlignsAfterReturn) {
" code == a || code == b;");
}
-TEST_F(FormatTest, AlignsAfterOpenBracket) {
- verifyFormat(
- "void aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaa aaaaaaaa,\n"
- " aaaaaaaaa aaaaaaa) {}");
- verifyFormat(
- "SomeLongVariableName->someVeryLongFunctionName(aaaaaaaaaaa aaaaaaaaa,\n"
- " aaaaaaaaaaa aaaaaaaaa);");
- verifyFormat(
- "SomeLongVariableName->someFunction(foooooooo(aaaaaaaaaaaaaaa,\n"
- " aaaaaaaaaaaaaaaaaaaaa));");
- FormatStyle Style = getLLVMStyle();
- Style.AlignAfterOpenBracket = FormatStyle::BAS_DontAlign;
- verifyFormat("void aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
- " aaaaaaaaaaa aaaaaaaa, aaaaaaaaa aaaaaaa) {}",
- Style);
- verifyFormat("SomeLongVariableName->someVeryLongFunctionName(\n"
- " aaaaaaaaaaa aaaaaaaaa, aaaaaaaaaaa aaaaaaaaa);",
- Style);
- verifyFormat("SomeLongVariableName->someFunction(\n"
- " foooooooo(aaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaa));",
- Style);
- verifyFormat(
- "void aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaa aaaaaaaa,\n"
- " aaaaaaaaa aaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {}",
- Style);
- verifyFormat(
- "SomeLongVariableName->someVeryLongFunctionName(aaaaaaaaaaa aaaaaaaaa,\n"
- " aaaaaaaaaaa aaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);",
- Style);
- verifyFormat(
- "SomeLongVariableName->someFunction(foooooooo(aaaaaaaaaaaaaaa,\n"
- " aaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa));",
- Style);
-
- verifyFormat("bbbbbbbbbbbb(aaaaaaaaaaaaaaaaaaaaaaaa, //\n"
- " ccccccc(aaaaaaaaaaaaaaaaa, //\n"
- " b));",
- Style);
-
- Style.ColumnLimit = 30;
- verifyFormat("for (int foo = 0; foo < FOO;\n"
- " ++foo) {\n"
- " bar(foo);\n"
- "}",
- Style);
- Style.ColumnLimit = 80;
-
- Style.AlignAfterOpenBracket = FormatStyle::BAS_AlwaysBreak;
- Style.BinPackArguments = false;
- Style.BinPackParameters = FormatStyle::BPPS_OnePerLine;
- verifyFormat("void aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
- " aaaaaaaaaaa aaaaaaaa,\n"
- " aaaaaaaaa aaaaaaa,\n"
- " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa) {}",
- Style);
- verifyFormat("SomeLongVariableName->someVeryLongFunctionName(\n"
- " aaaaaaaaaaa aaaaaaaaa,\n"
- " aaaaaaaaaaa aaaaaaaaa,\n"
- " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);",
- Style);
- verifyFormat("SomeLongVariableName->someFunction(foooooooo(\n"
- " aaaaaaaaaaaaaaa,\n"
- " aaaaaaaaaaaaaaaaaaaaa,\n"
- " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa));",
- Style);
- verifyFormat(
- "aaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaa(\n"
- " aaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaa)));",
- Style);
- verifyFormat(
- "aaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaa.aaaaaaaaaa(\n"
- " aaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaa)));",
- Style);
- verifyFormat(
- "aaaaaaaaaaaaaaaaaaaaaaaa(\n"
- " aaaaaaaaaaaaaaaaaaaaa(\n"
- " aaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaa)),\n"
- " aaaaaaaaaaaaaaaa);",
- Style);
- verifyFormat(
- "aaaaaaaaaaaaaaaaaaaaaaaa(\n"
- " aaaaaaaaaaaaaaaaaaaaa(\n"
- " aaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaa)) &&\n"
- " aaaaaaaaaaaaaaaa);",
- Style);
- verifyFormat(
- "fooooooooooo(new BARRRRRRRRR(\n"
- " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXZZZZZZZZZZZZZZZZZZZZZZZZZ()));",
- Style);
- verifyFormat(
- "fooooooooooo(::new BARRRRRRRRR(\n"
- " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXZZZZZZZZZZZZZZZZZZZZZZZZZ()));",
- Style);
- verifyFormat(
- "fooooooooooo(new FOO::BARRRR(\n"
- " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXZZZZZZZZZZZZZZZZZZZZZZZZZ()));",
- Style);
-
- Style.AlignAfterOpenBracket = FormatStyle::BAS_BlockIndent;
- Style.BinPackArguments = false;
- Style.BinPackParameters = FormatStyle::BPPS_OnePerLine;
- verifyFormat("void aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
- " aaaaaaaaaaa aaaaaaaa,\n"
- " aaaaaaaaa aaaaaaa,\n"
- " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
- ") {}",
- Style);
- verifyFormat("SomeLongVariableName->someVeryLongFunctionName(\n"
- " aaaaaaaaaaa aaaaaaaaa,\n"
- " aaaaaaaaaaa aaaaaaaaa,\n"
- " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
- ");",
- Style);
- verifyFormat("SomeLongVariableName->someFunction(foooooooo(\n"
- " aaaaaaaaaaaaaaa,\n"
- " aaaaaaaaaaaaaaaaaaaaa,\n"
- " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
- "));",
- Style);
- verifyFormat("aaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaa(\n"
- " aaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaa)\n"
- "));",
- Style);
- verifyFormat("aaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaa.aaaaaaaaaa(\n"
- " aaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaa)\n"
- "));",
- Style);
- verifyFormat(
- "aaaaaaaaaaaaaaaaaaaaaaaa(\n"
- " aaaaaaaaaaaaaaaaaaaaa(\n"
- " aaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaa)\n"
- " ),\n"
- " aaaaaaaaaaaaaaaa\n"
- ");",
- Style);
- verifyFormat(
- "aaaaaaaaaaaaaaaaaaaaaaaa(\n"
- " aaaaaaaaaaaaaaaaaaaaa(\n"
- " aaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaa)\n"
- " ) &&\n"
- " aaaaaaaaaaaaaaaa\n"
- ");",
- Style);
- verifyFormat("void foo(\n"
- " void (*foobarpntr)(\n"
- " aaaaaaaaaaaaaaaaaa *,\n"
- " bbbbbbbbbbbbbb *,\n"
- " cccccccccccccccccccc *,\n"
- " dddddddddddddddddd *\n"
- " )\n"
- ");",
- Style);
- verifyFormat("aaaaaaa<bbbbbbbb> const aaaaaaaaaa{\n"
- " aaaaaaaaaaaaa(aaaaaaaaaaa, aaaaaaaaaaaaaaaa)\n"
- "};",
- Style);
-
- verifyFormat("bool aaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
- " const bool &aaaaaaaaa, const void *aaaaaaaaaa\n"
- ") const {\n"
- " return true;\n"
- "}",
- Style);
- verifyFormat("bool aaaaaaaaaaaaaaaaaaaaaaaa(\n"
- " const bool &aaaaaaaaaa, const void *aaaaaaaaaa\n"
- ") const;",
- Style);
- verifyFormat("void aaaaaaaaa(\n"
- " int aaaaaa, int bbbbbb, int cccccc, int dddddddddd\n"
- ") const noexcept -> std::vector<of_very_long_type>;",
- Style);
- verifyFormat(
- "x = aaaaaaaaaaaaaaa(\n"
- " \"a aaaaaaa aaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaaaaaaaaaa\"\n"
- ");",
- Style);
- Style.ColumnLimit = 60;
- verifyFormat("auto lambda =\n"
- " [&b](\n"
- " auto aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"
- " ) {};",
- Style);
- verifyFormat("aaaaaaaaaaaaaaaaaaaaaaaa(\n"
- " &bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\n"
- ");",
- Style);
-}
-
-TEST_F(FormatTest, ParenthesesAndOperandAlignment) {
- FormatStyle Style = getLLVMStyleWithColumns(40);
- verifyFormat("int a = f(aaaaaaaaaaaaaaaaaaaaaa &&\n"
- " bbbbbbbbbbbbbbbbbbbbbb);",
- Style);
- Style.AlignAfterOpenBracket = FormatStyle::BAS_Align;
- Style.AlignOperands = FormatStyle::OAS_DontAlign;
- verifyFormat("int a = f(aaaaaaaaaaaaaaaaaaaaaa &&\n"
- " bbbbbbbbbbbbbbbbbbbbbb);",
- Style);
- Style.AlignAfterOpenBracket = FormatStyle::BAS_DontAlign;
- Style.AlignOperands = FormatStyle::OAS_Align;
- verifyFormat("int a = f(aaaaaaaaaaaaaaaaaaaaaa &&\n"
- " bbbbbbbbbbbbbbbbbbbbbb);",
- Style);
- Style.AlignAfterOpenBracket = FormatStyle::BAS_DontAlign;
- Style.AlignOperands = FormatStyle::OAS_DontAlign;
- verifyFormat("int a = f(aaaaaaaaaaaaaaaaaaaaaa &&\n"
- " bbbbbbbbbbbbbbbbbbbbbb);",
- Style);
-}
-
TEST_F(FormatTest, BreaksConditionalExpressions) {
verifyFormat(
"aaaa(aaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaa\n"
@@ -15358,6 +14996,18 @@ TEST_F(FormatTest, SplitEmptyFunctionButNotRecord) {
Style);
}
+TEST_F(FormatTest, MergeShortFunctionBody) {
+ auto Style = getLLVMStyle();
+ Style.AllowShortFunctionsOnASingleLine = FormatStyle::SFS_None;
+ Style.AllowShortBlocksOnASingleLine = FormatStyle::SBS_Always;
+ Style.BreakBeforeBraces = FormatStyle::BS_Custom;
+ Style.BraceWrapping.AfterFunction = true;
+
+ verifyFormat("int foo()\n"
+ "{ return 1; }",
+ Style);
+}
+
TEST_F(FormatTest, KeepShortFunctionAfterPPElse) {
FormatStyle Style = getLLVMStyle();
Style.AllowShortFunctionsOnASingleLine = FormatStyle::SFS_All;
@@ -26023,6 +25673,7 @@ TEST_F(FormatTest, SkipMacroDefinitionBody) {
" A a",
Style);
verifyNoChange("#define MY_MACRO \\\n"
+ " /*foo*//*bar*/ \\\n"
" /* comment */ \\\n"
" 1",
Style);
@@ -27576,405 +27227,6 @@ TEST_F(FormatTest, MultilineLambdaInConditional) {
Style);
}
-TEST_F(FormatTest, AlignAfterOpenBracketBlockIndent) {
- auto Style = getLLVMStyle();
-
- StringRef Short = "functionCall(paramA, paramB, paramC);\n"
- "void functionDecl(int a, int b, int c);";
-
- StringRef Medium = "functionCall(paramA, paramB, paramC, paramD, paramE, "
- "paramF, paramG, paramH, paramI);\n"
- "void functionDecl(int argumentA, int argumentB, int "
- "argumentC, int argumentD, int argumentE);";
-
- verifyFormat(Short, Style);
-
- StringRef NoBreak = "functionCall(paramA, paramB, paramC, paramD, paramE, "
- "paramF, paramG, paramH,\n"
- " paramI);\n"
- "void functionDecl(int argumentA, int argumentB, int "
- "argumentC, int argumentD,\n"
- " int argumentE);";
-
- verifyFormat(NoBreak, Medium, Style);
- verifyFormat(NoBreak,
- "functionCall(\n"
- " paramA,\n"
- " paramB,\n"
- " paramC,\n"
- " paramD,\n"
- " paramE,\n"
- " paramF,\n"
- " paramG,\n"
- " paramH,\n"
- " paramI\n"
- ");\n"
- "void functionDecl(\n"
- " int argumentA,\n"
- " int argumentB,\n"
- " int argumentC,\n"
- " int argumentD,\n"
- " int argumentE\n"
- ");",
- Style);
-
- verifyFormat("outerFunctionCall(nestedFunctionCall(argument1),\n"
- " nestedLongFunctionCall(argument1, "
- "argument2, argument3,\n"
- " argument4, "
- "argument5));",
- Style);
-
- Style.AlignAfterOpenBracket = FormatStyle::BAS_BlockIndent;
-
- verifyFormat(Short, Style);
- verifyFormat(
- "functionCall(\n"
- " paramA, paramB, paramC, paramD, paramE, paramF, paramG, paramH, "
- "paramI\n"
- ");\n"
- "void functionDecl(\n"
- " int argumentA, int argumentB, int argumentC, int argumentD, int "
- "argumentE\n"
- ");",
- Medium, Style);
-
- Style.AllowAllArgumentsOnNextLine = false;
- Style.AllowAllParametersOfDeclarationOnNextLine = false;
-
- verifyFormat(Short, Style);
- verifyFormat(
- "functionCall(\n"
- " paramA, paramB, paramC, paramD, paramE, paramF, paramG, paramH, "
- "paramI\n"
- ");\n"
- "void functionDecl(\n"
- " int argumentA, int argumentB, int argumentC, int argumentD, int "
- "argumentE\n"
- ");",
- Medium, Style);
-
- Style.BinPackArguments = false;
- Style.BinPackParameters = FormatStyle::BPPS_OnePerLine;
-
- verifyFormat(Short, Style);
-
- verifyFormat("functionCall(\n"
- " paramA,\n"
- " paramB,\n"
- " paramC,\n"
- " paramD,\n"
- " paramE,\n"
- " paramF,\n"
- " paramG,\n"
- " paramH,\n"
- " paramI\n"
- ");\n"
- "void functionDecl(\n"
- " int argumentA,\n"
- " int argumentB,\n"
- " int argumentC,\n"
- " int argumentD,\n"
- " int argumentE\n"
- ");",
- Medium, Style);
-
- verifyFormat("outerFunctionCall(\n"
- " nestedFunctionCall(argument1),\n"
- " nestedLongFunctionCall(\n"
- " argument1,\n"
- " argument2,\n"
- " argument3,\n"
- " argument4,\n"
- " argument5\n"
- " )\n"
- ");",
- Style);
-
- verifyFormat("int a = (int)b;", Style);
- verifyFormat("int a = (int)b;",
- "int a = (\n"
- " int\n"
- ") b;",
- Style);
-
- verifyFormat("return (true);", Style);
- verifyFormat("return (true);",
- "return (\n"
- " true\n"
- ");",
- Style);
-
- verifyFormat("void foo();", Style);
- verifyFormat("void foo();",
- "void foo(\n"
- ");",
- Style);
-
- verifyFormat("void foo() {}", Style);
- verifyFormat("void foo() {}",
- "void foo(\n"
- ") {\n"
- "}",
- Style);
-
- verifyFormat("auto string = std::string();", Style);
- verifyFormat("auto string = std::string();",
- "auto string = std::string(\n"
- ");",
- Style);
-
- verifyFormat("void (*functionPointer)() = nullptr;", Style);
- verifyFormat("void (*functionPointer)() = nullptr;",
- "void (\n"
- " *functionPointer\n"
- ")\n"
- "(\n"
- ") = nullptr;",
- Style);
-}
-
-TEST_F(FormatTest, AlignAfterOpenBracketBlockIndentIfStatement) {
- auto Style = getLLVMStyle();
-
- verifyFormat("if (foo()) {\n"
- " return;\n"
- "}",
- Style);
-
- verifyFormat("if (quiteLongArg !=\n"
- " (alsoLongArg - 1)) { // ABC is a very longgggggggggggg "
- "comment\n"
- " return;\n"
- "}",
- Style);
-
- Style.AlignAfterOpenBracket = FormatStyle::BAS_BlockIndent;
-
- verifyFormat("if (foo()) {\n"
- " return;\n"
- "}",
- Style);
-
- verifyFormat("if (quiteLongArg !=\n"
- " (alsoLongArg - 1)) { // ABC is a very longgggggggggggg "
- "comment\n"
- " return;\n"
- "}",
- Style);
-
- verifyFormat("void foo() {\n"
- " if (camelCaseName < alsoLongName ||\n"
- " anotherEvenLongerName <=\n"
- " thisReallyReallyReallyReallyReallyReallyLongerName ||"
- "\n"
- " otherName < thisLastName) {\n"
- " return;\n"
- " } else if (quiteLongName < alsoLongName ||\n"
- " anotherEvenLongerName <=\n"
- " thisReallyReallyReallyReallyReallyReallyLonger"
- "Name ||\n"
- " otherName < thisLastName) {\n"
- " return;\n"
- " }\n"
- "}",
- Style);
-
- Style.ContinuationIndentWidth = 2;
- verifyFormat("void foo() {\n"
- " if (ThisIsRatherALongIfClause && thatIExpectToBeBroken ||\n"
- " ontoMultipleLines && whenFormattedCorrectly) {\n"
- " if (false) {\n"
- " return;\n"
- " } else if (thisIsRatherALongIfClause && "
- "thatIExpectToBeBroken ||\n"
- " ontoMultipleLines && whenFormattedCorrectly) {\n"
- " return;\n"
- " }\n"
- " }\n"
- "}",
- Style);
-}
-
-TEST_F(FormatTest, AlignAfterOpenBracketBlockIndentForStatement) {
- auto Style = getLLVMStyle();
-
- verifyFormat("for (int i = 0; i < 5; ++i) {\n"
- " doSomething();\n"
- "}",
- Style);
-
- verifyFormat("for (int myReallyLongCountVariable = 0; "
- "myReallyLongCountVariable < count;\n"
- " myReallyLongCountVariable++) {\n"
- " doSomething();\n"
- "}",
- Style);
-
- Style.AlignAfterOpenBracket = FormatStyle::BAS_BlockIndent;
-
- verifyFormat("for (int i = 0; i < 5; ++i) {\n"
- " doSomething();\n"
- "}",
- Style);
-
- verifyFormat("for (int myReallyLongCountVariable = 0; "
- "myReallyLongCountVariable < count;\n"
- " myReallyLongCountVariable++) {\n"
- " doSomething();\n"
- "}",
- Style);
-}
-
-TEST_F(FormatTest, AlignAfterOpenBracketBlockIndentInitializers) {
- auto Style = getLLVMStyleWithColumns(60);
- Style.AlignAfterOpenBracket = FormatStyle::BAS_BlockIndent;
- // Aggregate initialization.
- verifyFormat("int LooooooooooooooooooooooooongVariable[2] = {\n"
- " 10000000, 20000000\n"
- "};",
- Style);
- verifyFormat("SomeStruct s{\n"
- " \"xxxxxxxxxxxxxxxx\", \"yyyyyyyyyyyyyyyy\",\n"
- " \"zzzzzzzzzzzzzzzz\"\n"
- "};",
- Style);
- // Designated initializers.
- verifyFormat("int LooooooooooooooooooooooooongVariable[2] = {\n"
- " [0] = 10000000, [1] = 20000000\n"
- "};",
- Style);
- verifyFormat("SomeStruct s{\n"
- " .foo = \"xxxxxxxxxxxxx\",\n"
- " .bar = \"yyyyyyyyyyyyy\",\n"
- " .baz = \"zzzzzzzzzzzzz\"\n"
- "};",
- Style);
- // List initialization.
- verifyFormat("SomeStruct s{\n"
- " \"xxxxxxxxxxxxx\",\n"
- " \"yyyyyyyyyyyyy\",\n"
- " \"zzzzzzzzzzzzz\",\n"
- "};",
- Style);
- verifyFormat("SomeStruct{\n"
- " \"xxxxxxxxxxxxx\",\n"
- " \"yyyyyyyyyyyyy\",\n"
- " \"zzzzzzzzzzzzz\",\n"
- "};",
- Style);
- verifyFormat("new SomeStruct{\n"
- " \"xxxxxxxxxxxxx\",\n"
- " \"yyyyyyyyyyyyy\",\n"
- " \"zzzzzzzzzzzzz\",\n"
- "};",
- Style);
- // Member initializer.
- verifyFormat("class SomeClass {\n"
- " SomeStruct s{\n"
- " \"xxxxxxxxxxxxx\",\n"
- " \"yyyyyyyyyyyyy\",\n"
- " \"zzzzzzzzzzzzz\",\n"
- " };\n"
- "};",
- Style);
- // Constructor member initializer.
- verifyFormat("SomeClass::SomeClass : strct{\n"
- " \"xxxxxxxxxxxxx\",\n"
- " \"yyyyyyyyyyyyy\",\n"
- " \"zzzzzzzzzzzzz\",\n"
- " } {}",
- Style);
- // Copy initialization.
- verifyFormat("SomeStruct s = SomeStruct{\n"
- " \"xxxxxxxxxxxxx\",\n"
- " \"yyyyyyyyyyyyy\",\n"
- " \"zzzzzzzzzzzzz\",\n"
- "};",
- Style);
- // Copy list initialization.
- verifyFormat("SomeStruct s = {\n"
- " \"xxxxxxxxxxxxx\",\n"
- " \"yyyyyyyyyyyyy\",\n"
- " \"zzzzzzzzzzzzz\",\n"
- "};",
- Style);
- // Assignment operand initialization.
- verifyFormat("s = {\n"
- " \"xxxxxxxxxxxxx\",\n"
- " \"yyyyyyyyyyyyy\",\n"
- " \"zzzzzzzzzzzzz\",\n"
- "};",
- Style);
- // Returned object initialization.
- verifyFormat("return {\n"
- " \"xxxxxxxxxxxxx\",\n"
- " \"yyyyyyyyyyyyy\",\n"
- " \"zzzzzzzzzzzzz\",\n"
- "};",
- Style);
- // Initializer list.
- verifyFormat("auto initializerList = {\n"
- " \"xxxxxxxxxxxxx\",\n"
- " \"yyyyyyyyyyyyy\",\n"
- " \"zzzzzzzzzzzzz\",\n"
- "};",
- Style);
- // Function parameter initialization.
- verifyFormat("func({\n"
- " \"xxxxxxxxxxxxx\",\n"
- " \"yyyyyyyyyyyyy\",\n"
- " \"zzzzzzzzzzzzz\",\n"
- "});",
- Style);
- // Nested init lists.
- verifyFormat("SomeStruct s = {\n"
- " {{init1, init2, init3, init4, init5},\n"
- " {init1, init2, init3, init4, init5}}\n"
- "};",
- Style);
- verifyFormat("SomeStruct s = {\n"
- " {{\n"
- " .init1 = 1,\n"
- " .init2 = 2,\n"
- " .init3 = 3,\n"
- " .init4 = 4,\n"
- " .init5 = 5,\n"
- " },\n"
- " {init1, init2, init3, init4, init5}}\n"
- "};",
- Style);
- verifyFormat("SomeArrayT a[3] = {\n"
- " {\n"
- " foo,\n"
- " bar,\n"
- " },\n"
- " {\n"
- " foo,\n"
- " bar,\n"
- " },\n"
- " SomeArrayT{},\n"
- "};",
- Style);
- verifyFormat("SomeArrayT a[3] = {\n"
- " {foo},\n"
- " {\n"
- " {\n"
- " init1,\n"
- " init2,\n"
- " init3,\n"
- " },\n"
- " {\n"
- " init1,\n"
- " init2,\n"
- " init3,\n"
- " },\n"
- " },\n"
- " {baz},\n"
- "};",
- Style);
-}
-
TEST_F(FormatTest, UnderstandsDigraphs) {
verifyFormat("int arr<:5:> = {};");
verifyFormat("int arr[5] = <%%>;");