Index: clang/unittests/Format/FormatTest.cpp =================================================================== --- clang/unittests/Format/FormatTest.cpp +++ clang/unittests/Format/FormatTest.cpp @@ -19057,14 +19057,14 @@ " {56, 23, \"hello\"},\n" " {-1, 93463, \"world\"},\n" " { 7, 5, \"!!\"}\n" - "};\n", + "};", Style); verifyFormat("struct test demo[] = {\n" " {56, 23, \"hello\"}, // first line\n" " {-1, 93463, \"world\"}, // second line\n" " { 7, 5, \"!!\"} // third line\n" - "};\n", + "};", Style); verifyFormat("struct test demo[4] = {\n" @@ -19072,42 +19072,42 @@ " { -1, 93463, 22, \"my\"}, // second line\n" " { 7, 5, 1, \"goodness\"} // third line\n" " {234, 5, 1, \"gracious\"} // fourth line\n" - "};\n", + "};", Style); verifyFormat("struct test demo[3] = {\n" " {56, 23, \"hello\"},\n" " {-1, 93463, \"world\"},\n" " { 7, 5, \"!!\"}\n" - "};\n", + "};", Style); verifyFormat("struct test demo[3] = {\n" " {int{56}, 23, \"hello\"},\n" " {int{-1}, 93463, \"world\"},\n" " { int{7}, 5, \"!!\"}\n" - "};\n", + "};", Style); verifyFormat("struct test demo[] = {\n" " {56, 23, \"hello\"},\n" " {-1, 93463, \"world\"},\n" " { 7, 5, \"!!\"},\n" - "};\n", + "};", Style); verifyFormat("test demo[] = {\n" " {56, 23, \"hello\"},\n" " {-1, 93463, \"world\"},\n" " { 7, 5, \"!!\"},\n" - "};\n", + "};", Style); verifyFormat("demo = std::array{\n" " test{56, 23, \"hello\"},\n" " test{-1, 93463, \"world\"},\n" " test{ 7, 5, \"!!\"},\n" - "};\n", + "};", Style); verifyFormat("test demo[] = {\n" @@ -19116,29 +19116,28 @@ " {-1, 93463, \"world\"},\n" "#endif\n" " { 7, 5, \"!!\"}\n" - "};\n", + "};", Style); + // FIXME: Skip AlignArrayOfStructures if any row can't fit on a single line. +#if 0 verifyFormat( - "test demo[] = {\n" - " { 7, 23,\n" - " \"hello world i am a very long line that really, in any\"\n" - " \"just world, ought to be split over multiple lines\"},\n" - " {-1, 93463, \"world\"},\n" - " {56, 5, \"!!\"}\n" - "};\n", + "test demo[] = {{7, 23,\n" + " \"hello world i am a long line that really, in any\"\n" + " \"just world, ought to be split to multiple lines\"},\n" + " {-1, 93463, \"world\"},\n" + " {56, 5, \"!!\"}};", Style); +#endif - verifyFormat("return GradForUnaryCwise(g, {\n" - " {{\"sign\"}, \"Sign\", " - " {\"x\", \"dy\"}},\n" - " { {\"dx\"}, \"Mul\", {\"dy\"" - ", \"sign\"}},\n" - "});\n", + verifyFormat("return f(g, {\n" + " {{\"sign\"}, \"Sign\", {\"x\", \"dy\"}},\n" + " { {\"dx\"}, \"Mul\", {\"dy\", \"sign\"}},\n" + "});", Style); Style.ColumnLimit = 0; - EXPECT_EQ( + verifyFormat( "test demo[] = {\n" " {56, 23, \"hello world i am a very long line that really, " "in any just world, ought to be split over multiple lines\"},\n" @@ -19147,63 +19146,63 @@ " { 7, 5, " " \"!!\"},\n" "};", - format("test demo[] = {{56, 23, \"hello world i am a very long line " - "that really, in any just world, ought to be split over multiple " - "lines\"},{-1, 93463, \"world\"},{7, 5, \"!!\"},};", - Style)); + "test demo[] = {{56, 23, \"hello world i am a very long line " + "that really, in any just world, ought to be split over multiple " + "lines\"},{-1, 93463, \"world\"},{7, 5, \"!!\"},};", + Style); Style.ColumnLimit = 80; + // FIXME: Skip AlignArrayOfStructures if any row has a non-trailing comment. +#if 0 verifyFormat("test demo[] = {\n" - " {56, 23, /* a comment */ \"hello\"},\n" - " {-1, 93463, \"world\"},\n" - " { 7, 5, \"!!\"}\n" - "};\n", + " {56, 23, /* a comment */ \"hello\"}, " + "{-1, 93463, \"world\"}, {7, 5, \"!!\"}};", Style); verifyFormat("test demo[] = {\n" - " {56, 23, \"hello\"},\n" - " {-1, 93463, \"world\" /* comment here */},\n" - " { 7, 5, \"!!\"}\n" - "};\n", + " {56, 23, \"hello\"}, " + "{-1, 93463, \"world\" /* comment here */}, {7, 5, \"!!\"}};", Style); verifyFormat("test demo[] = {\n" - " {56, /* a comment */ 23, \"hello\"},\n" - " {-1, 93463, \"world\"},\n" - " { 7, 5, \"!!\"}\n" - "};\n", + " {56, /* a comment */ 23, \"hello\"}, " + "{-1, 93463, \"world\"}, {7, 5, \"!!\"}};", Style); +#endif Style.ColumnLimit = 20; - EXPECT_EQ( + // FIXME: Skip AlignArrayOfStructures if any row can't fit on a single line. +#if 0 + verifyFormat( "demo = std::array<\n" " struct test, 3>{\n" " test{\n" - " 56, 23,\n" - " \"hello \"\n" - " \"world i \"\n" - " \"am a very \"\n" - " \"long line \"\n" - " \"that \"\n" - " \"really, \"\n" - " \"in any \"\n" - " \"just \"\n" - " \"world, \"\n" - " \"ought to \"\n" - " \"be split \"\n" - " \"over \"\n" - " \"multiple \"\n" - " \"lines\"},\n" + " 56, 23,\n" + " \"hello \"\n" + " \"world i \"\n" + " \"am a very \"\n" + " \"long line \"\n" + " \"that \"\n" + " \"really, \"\n" + " \"in any \"\n" + " \"just \"\n" + " \"world, \"\n" + " \"ought to \"\n" + " \"be split \"\n" + " \"over \"\n" + " \"multiple \"\n" + " \"lines\"},\n" " test{-1, 93463,\n" " \"world\"},\n" - " test{ 7, 5,\n" - " \"!!\" },\n" + " test{7, 5,\n" + " \"!!\"},\n" "};", - format("demo = std::array{test{56, 23, \"hello world " - "i am a very long line that really, in any just world, ought " - "to be split over multiple lines\"},test{-1, 93463, \"world\"}," - "test{7, 5, \"!!\"},};", - Style)); + "demo = std::array{test{56, 23, \"hello world " + "i am a very long line that really, in any just world, ought " + "to be split over multiple lines\"},test{-1, 93463, \"world\"}," + "test{7, 5, \"!!\"},};", + Style); +#endif // This caused a core dump by enabling Alignment in the LLVMStyle globally Style = getLLVMStyleWithColumns(50); Style.AlignArrayOfStructures = FormatStyle::AIAS_Right; @@ -19220,23 +19219,6 @@ " }\n" "};", Style); - Style.ColumnLimit = 100; - EXPECT_EQ( - "test demo[] = {\n" - " {56, 23,\n" - " \"hello world i am a very long line that really, in any just world" - ", ought to be split over \"\n" - " \"multiple lines\" },\n" - " {-1, 93463, \"world\"},\n" - " { 7, 5, \"!!\"},\n" - "};", - format("test demo[] = {{56, 23, \"hello world i am a very long line " - "that really, in any just world, ought to be split over multiple " - "lines\"},{-1, 93463, \"world\"},{7, 5, \"!!\"},};", - Style)); - - Style = getLLVMStyleWithColumns(50); - Style.AlignArrayOfStructures = FormatStyle::AIAS_Right; verifyFormat("struct test demo[] = {\n" " {56, 23, \"hello\"},\n" " {-1, 93463, \"world\"},\n" @@ -19248,6 +19230,23 @@ "};", Style); Style.ColumnLimit = 100; + // FIXME: Skip AlignArrayOfStructures if any row can't fit on a single line. +#if 0 + verifyFormat( + "test demo[] = {\n" + " {56, 23,\n" + " \"hello world i am a very long line that really, in any just world" + ", ought to be split over \"\n" + " \"multiple lines\"},\n" + " {-1, 93463, \"world\"},\n" + " {7, 5, \"!!\"},\n" + "};", + "test demo[] = {{56, 23, \"hello world i am a very long line " + "that really, in any just world, ought to be split over multiple " + "lines\"},{-1, 93463, \"world\"},{7, 5, \"!!\"},};", + Style); +#endif + Style.AlignConsecutiveAssignments.AcrossComments = true; Style.AlignConsecutiveDeclarations.AcrossComments = true; verifyFormat("struct test demo[] = {\n" @@ -19260,88 +19259,90 @@ " { -1, 93463, 22, \"my\"}, // second line\n" " { 7, 5, 1, \"goodness\"} // third line\n" " {234, 5, 1, \"gracious\"} // fourth line\n" - "};\n", + "};", Style); - EXPECT_EQ( + // FIXME: Skip AlignArrayOfStructures if any row can't fit on a single line. +#if 0 + verifyFormat( "test demo[] = {\n" " {56,\n" " \"hello world i am a very long line that really, in any just world" ", ought to be split over \"\n" - " \"multiple lines\", 23},\n" - " {-1, \"world\", 93463},\n" - " { 7, \"!!\", 5},\n" + " \"multiple lines\",\n" + " 23},\n" + " {-1, \"world\", 93463},\n" + " {7, \"!!\", 5},\n" "};", - format("test demo[] = {{56, \"hello world i am a very long line " - "that really, in any just world, ought to be split over multiple " - "lines\", 23},{-1, \"world\", 93463},{7, \"!!\", 5},};", - Style)); + "test demo[] = {{56, \"hello world i am a very long line " + "that really, in any just world, ought to be split over multiple " + "lines\", 23},{-1, \"world\", 93463},{7, \"!!\", 5},};", + Style); +#endif } TEST_F(FormatTest, CatchAlignArrayOfStructuresLeftAlignment) { auto Style = getLLVMStyle(); Style.AlignArrayOfStructures = FormatStyle::AIAS_Left; - /* FIXME: This case gets misformatted. + /* FIXME: These cases get misformatted. verifyFormat("auto foo = Items{\n" " Section{0, bar(), },\n" " Section{1, boo() }\n" - "};\n", + "};", Style); - */ verifyFormat("auto foo = Items{\n" - " Section{\n" - " 0, bar(),\n" - " }\n" - "};\n", + " Section{0, bar(), }\n" + "};", Style); + */ verifyFormat("struct test demo[] = {\n" " {56, 23, \"hello\"},\n" " {-1, 93463, \"world\"},\n" " {7, 5, \"!!\" }\n" - "};\n", + "};", Style); verifyFormat("struct test demo[] = {\n" " {56, 23, \"hello\"}, // first line\n" " {-1, 93463, \"world\"}, // second line\n" " {7, 5, \"!!\" } // third line\n" - "};\n", + "};", Style); verifyFormat("struct test demo[4] = {\n" " {56, 23, 21, \"oh\" }, // first line\n" " {-1, 93463, 22, \"my\" }, // second line\n" " {7, 5, 1, \"goodness\"} // third line\n" " {234, 5, 1, \"gracious\"} // fourth line\n" - "};\n", + "};", Style); verifyFormat("struct test demo[3] = {\n" " {56, 23, \"hello\"},\n" " {-1, 93463, \"world\"},\n" " {7, 5, \"!!\" }\n" - "};\n", + "};", Style); verifyFormat("struct test demo[3] = {\n" " {int{56}, 23, \"hello\"},\n" " {int{-1}, 93463, \"world\"},\n" " {int{7}, 5, \"!!\" }\n" - "};\n", + "};", Style); verifyFormat("struct test demo[] = {\n" " {56, 23, \"hello\"},\n" " {-1, 93463, \"world\"},\n" " {7, 5, \"!!\" },\n" - "};\n", + "};", Style); verifyFormat("test demo[] = {\n" " {56, 23, \"hello\"},\n" " {-1, 93463, \"world\"},\n" " {7, 5, \"!!\" },\n" - "};\n", + "};", Style); verifyFormat("demo = std::array{\n" " test{56, 23, \"hello\"},\n" " test{-1, 93463, \"world\"},\n" " test{7, 5, \"!!\" },\n" - "};\n", + "};", Style); verifyFormat("test demo[] = {\n" " {56, 23, \"hello\"},\n" @@ -19349,28 +19350,45 @@ " {-1, 93463, \"world\"},\n" "#endif\n" " {7, 5, \"!!\" }\n" - "};\n", + "};", Style); + // FIXME: Skip AlignArrayOfStructures if any row can't fit on a single line. +#if 0 verifyFormat( - "test demo[] = {\n" - " {7, 23,\n" - " \"hello world i am a very long line that really, in any\"\n" - " \"just world, ought to be split over multiple lines\"},\n" - " {-1, 93463, \"world\" },\n" - " {56, 5, \"!!\" }\n" - "};\n", + "test demo[] = {{7, 23,\n" + " \"hello world i am a long line that really, in any\"\n" + " \"just world, ought to be split to multiple lines\"},\n" + " {-1, 93463, \"world\"},\n" + " {56, 5, \"!!\"}};", Style); +#endif + + verifyFormat("return f(g, {\n" + " {{\"sign\"}, \"Sign\", {\"x\", \"dy\"} },\n" + " {{\"dx\"}, \"Mul\", {\"dy\", \"sign\"}},\n" + "});", + Style); + + // FIXME: Skip AlignArrayOfStructures if any row has a non-trailing comment. +#if 0 + verifyFormat("test demo[] = {\n" + " {56, 23, /* a comment */ \"hello\"}, " + "{-1, 93463, \"world\"}, {7, 5, \"!!\"}};", + Style); + + verifyFormat("test demo[] = {\n" + " {56, 23, \"hello\"}, " + "{-1, 93463, \"world\" /* comment here */}, {7, 5, \"!!\"}};", + Style); - verifyFormat("return GradForUnaryCwise(g, {\n" - " {{\"sign\"}, \"Sign\", {\"x\", " - "\"dy\"} },\n" - " {{\"dx\"}, \"Mul\", " - "{\"dy\", \"sign\"}},\n" - "});\n", + verifyFormat("test demo[] = {\n" + " {56, /* a comment */ 23, \"hello\"}, " + "{-1, 93463, \"world\"}, {7, 5, \"!!\"}};", Style); +#endif Style.ColumnLimit = 0; - EXPECT_EQ( + verifyFormat( "test demo[] = {\n" " {56, 23, \"hello world i am a very long line that really, in any " "just world, ought to be split over multiple lines\"},\n" @@ -19379,86 +19397,69 @@ " {7, 5, \"!!\" " " },\n" "};", - format("test demo[] = {{56, 23, \"hello world i am a very long line " - "that really, in any just world, ought to be split over multiple " - "lines\"},{-1, 93463, \"world\"},{7, 5, \"!!\"},};", - Style)); - - Style.ColumnLimit = 80; - verifyFormat("test demo[] = {\n" - " {56, 23, /* a comment */ \"hello\"},\n" - " {-1, 93463, \"world\" },\n" - " {7, 5, \"!!\" }\n" - "};\n", - Style); - - verifyFormat("test demo[] = {\n" - " {56, 23, \"hello\" },\n" - " {-1, 93463, \"world\" /* comment here */},\n" - " {7, 5, \"!!\" }\n" - "};\n", - Style); - - verifyFormat("test demo[] = {\n" - " {56, /* a comment */ 23, \"hello\"},\n" - " {-1, 93463, \"world\"},\n" - " {7, 5, \"!!\" }\n" - "};\n", - Style); + "test demo[] = {{56, 23, \"hello world i am a very long line " + "that really, in any just world, ought to be split over multiple " + "lines\"},{-1, 93463, \"world\"},{7, 5, \"!!\"},};", + Style); Style.ColumnLimit = 20; - EXPECT_EQ( + // FIXME: Skip AlignArrayOfStructures if any row can't fit on a single line. +#if 0 + verifyFormat( "demo = std::array<\n" " struct test, 3>{\n" " test{\n" - " 56, 23,\n" - " \"hello \"\n" - " \"world i \"\n" - " \"am a very \"\n" - " \"long line \"\n" - " \"that \"\n" - " \"really, \"\n" - " \"in any \"\n" - " \"just \"\n" - " \"world, \"\n" - " \"ought to \"\n" - " \"be split \"\n" - " \"over \"\n" - " \"multiple \"\n" - " \"lines\"},\n" + " 56, 23,\n" + " \"hello \"\n" + " \"world i \"\n" + " \"am a very \"\n" + " \"long line \"\n" + " \"that \"\n" + " \"really, \"\n" + " \"in any \"\n" + " \"just \"\n" + " \"world, \"\n" + " \"ought to \"\n" + " \"be split \"\n" + " \"over \"\n" + " \"multiple \"\n" + " \"lines\"},\n" " test{-1, 93463,\n" " \"world\"},\n" - " test{7, 5,\n" - " \"!!\" },\n" + " test{7, 5,\n" + " \"!!\"},\n" "};", - format("demo = std::array{test{56, 23, \"hello world " - "i am a very long line that really, in any just world, ought " - "to be split over multiple lines\"},test{-1, 93463, \"world\"}," - "test{7, 5, \"!!\"},};", - Style)); + "demo = std::array{test{56, 23, \"hello world " + "i am a very long line that really, in any just world, ought " + "to be split over multiple lines\"},test{-1, 93463, \"world\"}," + "test{7, 5, \"!!\"},};", + Style); +#endif // This caused a core dump by enabling Alignment in the LLVMStyle globally - Style = getLLVMStyleWithColumns(50); - Style.AlignArrayOfStructures = FormatStyle::AIAS_Left; + Style.ColumnLimit = 50; verifyFormat("static A x = {\n" " {{init1, init2, init3, init4},\n" " {init1, init2, init3, init4}}\n" "};", Style); Style.ColumnLimit = 100; - EXPECT_EQ( + // FIXME: Skip AlignArrayOfStructures if any row can't fit on a single line. +#if 0 + verifyFormat( "test demo[] = {\n" " {56, 23,\n" " \"hello world i am a very long line that really, in any just world" ", ought to be split over \"\n" - " \"multiple lines\" },\n" + " \"multiple lines\"},\n" " {-1, 93463, \"world\"},\n" - " {7, 5, \"!!\" },\n" + " {7, 5, \"!!\"},\n" "};", - format("test demo[] = {{56, 23, \"hello world i am a very long line " - "that really, in any just world, ought to be split over multiple " - "lines\"},{-1, 93463, \"world\"},{7, 5, \"!!\"},};", - Style)); + "test demo[] = {{56, 23, \"hello world i am a very long line " + "that really, in any just world, ought to be split over multiple " + "lines\"},{-1, 93463, \"world\"},{7, 5, \"!!\"},};", + Style); +#endif } TEST_F(FormatTest, UnderstandsPragmas) {