https://github.com/andergnet updated https://github.com/llvm/llvm-project/pull/122282
>From e2780f01d47518bb61a5c01c9ad4d9daddb5044a Mon Sep 17 00:00:00 2001 From: W123011 <ander.ge...@worldline.com> Date: Thu, 9 Jan 2025 15:04:26 +0100 Subject: [PATCH 1/6] Fix >> behavior on continuation intenter --- clang/lib/Format/ContinuationIndenter.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/clang/lib/Format/ContinuationIndenter.cpp b/clang/lib/Format/ContinuationIndenter.cpp index 554b55fa75c926..5e5c93e2a5286f 100644 --- a/clang/lib/Format/ContinuationIndenter.cpp +++ b/clang/lib/Format/ContinuationIndenter.cpp @@ -147,7 +147,8 @@ static bool startsNextOperand(const FormatToken &Current) { // Returns \c true if \c Current is a binary operation that must break. static bool mustBreakBinaryOperation(const FormatToken &Current, const FormatStyle &Style) { - return Style.BreakBinaryOperations != FormatStyle::BBO_Never && + return Current.CanBreakBefore && + Style.BreakBinaryOperations != FormatStyle::BBO_Never && (Style.BreakBeforeBinaryOperators == FormatStyle::BOS_None ? startsNextOperand : isAlignableBinaryOperator)(Current); >From 4a5a1368b8a2ae577cb6e142022b563a3c77d583 Mon Sep 17 00:00:00 2001 From: W123011 <ander.ge...@worldline.com> Date: Thu, 9 Jan 2025 15:47:08 +0100 Subject: [PATCH 2/6] Unit test --- clang/unittests/Format/FormatTest.cpp | 72 +++++++++++++++------------ 1 file changed, 41 insertions(+), 31 deletions(-) diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index 4d48bcacddead8..c9cf03bff6acce 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -22301,16 +22301,16 @@ TEST_F(FormatTest, HandlesUTF8BOM) { #if !defined(_MSC_VER) TEST_F(FormatTest, CountsUTF8CharactersProperly) { - verifyFormat("\"Однажды в студёную зимнюю пору...\"", + verifyFormat("\"Однажды в ѝтудёную зимнюю пору...\"", getLLVMStyleWithColumns(35)); - verifyFormat("\"一 二 三 四 五 六 七 八 九 十\"", + verifyFormat("\"一 二 三 四 五 六 七 八 九 坝\"", getLLVMStyleWithColumns(31)); - verifyFormat("// Однажды в студёную зимнюю пору...", + verifyFormat("// Однажды в ѝтудёную зимнюю пору...", getLLVMStyleWithColumns(36)); - verifyFormat("// 一 二 三 四 五 六 七 八 九 十", getLLVMStyleWithColumns(32)); - verifyFormat("/* Однажды в студёную зимнюю пору... */", + verifyFormat("// 一 二 三 四 五 六 七 八 九 坝", getLLVMStyleWithColumns(32)); + verifyFormat("/* Однажды в ѝтудёную зимнюю пору... */", getLLVMStyleWithColumns(39)); - verifyFormat("/* 一 二 三 四 五 六 七 八 九 十 */", + verifyFormat("/* 一 二 三 四 五 六 七 八 九 坝 */", getLLVMStyleWithColumns(35)); } @@ -22329,18 +22329,18 @@ TEST_F(FormatTest, SplitsUTF8Strings) { format("\"aaaaaaaÄ\xc2\x8d\";", getLLVMStyleWithColumns(10))); // FIXME: unstable test case EXPECT_EQ("\"Однажды, в \"\n" - "\"студёную \"\n" + "\"ѝтудёную \"\n" "\"зимнюю \"\n" "\"пору,\"", - format("\"Однажды, в студёную зимнюю пору,\"", + format("\"Однажды, в ѝтудёную зимнюю пору,\"", getLLVMStyleWithColumns(13))); // FIXME: unstable test case EXPECT_EQ( "\"一 二 三 \"\n" "\"四 五六 \"\n" "\"七 八 九 \"\n" - "\"十\"", - format("\"一 二 三 四 五六 七 八 九 十\"", getLLVMStyleWithColumns(11))); + "\"坝\"", + format("\"一 二 三 四 五六 七 八 九 坝\"", getLLVMStyleWithColumns(11))); // FIXME: unstable test case EXPECT_EQ("\"一\t\"\n" "\"二 \t\"\n" @@ -22348,8 +22348,8 @@ TEST_F(FormatTest, SplitsUTF8Strings) { "\"五\t\"\n" "\"六 \t\"\n" "\"七 \"\n" - "\"八九十\tqq\"", - format("\"一\t二 \t三 四 五\t六 \t七 八九十\tqq\"", + "\"八九坝\tqq\"", + format("\"一\t二 \t三 四 五\t六 \t七 八九坝\tqq\"", getLLVMStyleWithColumns(11))); // UTF8 character in an escape sequence. @@ -22362,44 +22362,44 @@ TEST_F(FormatTest, SplitsUTF8Strings) { TEST_F(FormatTest, HandlesDoubleWidthCharsInMultiLineStrings) { verifyFormat("const char *sssss =\n" " \"一二三四五六七八\\\n" - " 九 十\";", + " 九 坝\";", "const char *sssss = \"一二三四五六七八\\\n" - " 九 十\";", + " 九 坝\";", getLLVMStyleWithColumns(30)); } TEST_F(FormatTest, SplitsUTF8LineComments) { verifyFormat("// aaaaÄ\xc2\x8d", getLLVMStyleWithColumns(10)); - verifyFormat("// Я из лесу\n" + verifyFormat("// Я из леѝу\n" "// вышел; был\n" - "// сильный\n" + "// ѝильный\n" "// мороз.", - "// Я из лесу вышел; был сильный мороз.", + "// Я из леѝу вышел; был ѝильный мороз.", getLLVMStyleWithColumns(13)); verifyFormat("// 一二三\n" "// 四五六七\n" "// 八 九\n" - "// 十", - "// 一二三 四五六七 八 九 十", getLLVMStyleWithColumns(9)); + "// 坝", + "// 一二三 四五六七 八 九 坝", getLLVMStyleWithColumns(9)); } TEST_F(FormatTest, SplitsUTF8BlockComments) { - verifyFormat("/* Гляжу,\n" - " * поднимается\n" + verifyFormat("/* Глѝжу,\n" + " * поднимаетѝѝ\n" " * медленно в\n" " * гору\n" " * Лошадка,\n" - " * везущая\n" - " * хворосту\n" + " * везущаѝ\n" + " * хвороѝту\n" " * воз. */", - "/* Гляжу, поднимается медленно в гору\n" - " * Лошадка, везущая хворосту воз. */", + "/* Глѝжу, поднимаетѝѝ медленно в гору\n" + " * Лошадка, везущаѝ хвороѝту воз. */", getLLVMStyleWithColumns(13)); verifyFormat("/* 一二三\n" " * 四五六七\n" " * 八 九\n" - " * 十 */", - "/* 一二三 四五六七 八 九 十 */", getLLVMStyleWithColumns(9)); + " * 坝 */", + "/* 一二三 四五六七 八 九 坝 */", getLLVMStyleWithColumns(9)); verifyFormat("/* 𝓣𝓮𝓼𝓽 𝔣𝔬𝔲𝔯\n" " * 𝕓𝕪𝕥𝕖\n" " * 𝖀𝕿𝕱-𝟠 */", @@ -27908,9 +27908,9 @@ TEST_F(FormatTest, BreakAdjacentStringLiterals) { TEST_F(FormatTest, AlignUTFCommentsAndStringLiterals) { verifyFormat( - "int rus; // А теперь комментарии, например, на русском, 2-байта\n" - "int long_rus; // Верхний коммент еще не превысил границу в 80, однако\n" - " // уже отодвинут. Перенос, при этом, отрабатывает верно"); + "int rus; // Н теперь комментарии, например, на руѝѝком, 2-байта\n" + "int long_rus; // Верхний коммент еще не превыѝил границу в 80, однако\n" + " // уже отодвинут. Переноѝ, при ѝтом, отрабатывает верно"); auto Style = getLLVMStyle(); Style.ColumnLimit = 15; @@ -27940,7 +27940,7 @@ TEST_F(FormatTest, AlignUTFCommentsAndStringLiterals) { verifyFormat("Languages languages = {\n" " Language{{'e', 'n'}, U\"Test English\" },\n" " Language{{'l', 'v'}, U\"Test Latviešu\"},\n" - " Language{{'r', 'u'}, U\"Test Русский\" },\n" + " Language{{'r', 'u'}, U\"Test Руѝѝкий\" },\n" "};", Style); } @@ -28188,6 +28188,16 @@ TEST_F(FormatTest, BreakBinaryOperations) { " | byte_buffer[2] << 16\n" " | byte_buffer[3] << 24;", Style); + + Style.BreakBinaryOperations = FormatStyle::BBO_OnePerLine; + // Check operator >> special case + verifyFormat("std::cout\n" + " << longOperand1\n" + " << longOperand2\n" + " << longOperand3\n" + " << longOperand4\n" + " << longOperand5;", + Style); } TEST_F(FormatTest, RemoveEmptyLinesInUnwrappedLines) { >From 2ff7f97579a20d5d5f09e7dafd48c20e90b4dad5 Mon Sep 17 00:00:00 2001 From: W123011 <ander.ge...@worldline.com> Date: Thu, 9 Jan 2025 16:03:51 +0100 Subject: [PATCH 3/6] fix encoding issue --- clang/unittests/Format/FormatTest.cpp | 62 +++++++++++++-------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index c9cf03bff6acce..060899b6f6a247 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -22301,16 +22301,16 @@ TEST_F(FormatTest, HandlesUTF8BOM) { #if !defined(_MSC_VER) TEST_F(FormatTest, CountsUTF8CharactersProperly) { - verifyFormat("\"Однажды в ѝтудёную зимнюю пору...\"", + verifyFormat("\"Однажды в студёную зимнюю пору...\"", getLLVMStyleWithColumns(35)); - verifyFormat("\"一 二 三 四 五 六 七 八 九 坝\"", + verifyFormat("\"一 二 三 四 五 六 七 八 九 十\"", getLLVMStyleWithColumns(31)); - verifyFormat("// Однажды в ѝтудёную зимнюю пору...", + verifyFormat("// Однажды в студёную зимнюю пору...", getLLVMStyleWithColumns(36)); - verifyFormat("// 一 二 三 四 五 六 七 八 九 坝", getLLVMStyleWithColumns(32)); - verifyFormat("/* Однажды в ѝтудёную зимнюю пору... */", + verifyFormat("// 一 二 三 四 五 六 七 八 九 十", getLLVMStyleWithColumns(32)); + verifyFormat("/* Однажды в студёную зимнюю пору... */", getLLVMStyleWithColumns(39)); - verifyFormat("/* 一 二 三 四 五 六 七 八 九 坝 */", + verifyFormat("/* 一 二 三 四 五 六 七 八 九 十 */", getLLVMStyleWithColumns(35)); } @@ -22329,18 +22329,18 @@ TEST_F(FormatTest, SplitsUTF8Strings) { format("\"aaaaaaaÄ\xc2\x8d\";", getLLVMStyleWithColumns(10))); // FIXME: unstable test case EXPECT_EQ("\"Однажды, в \"\n" - "\"ѝтудёную \"\n" + "\"студёную \"\n" "\"зимнюю \"\n" "\"пору,\"", - format("\"Однажды, в ѝтудёную зимнюю пору,\"", + format("\"Однажды, в студёную зимнюю пору,\"", getLLVMStyleWithColumns(13))); // FIXME: unstable test case EXPECT_EQ( "\"一 二 三 \"\n" "\"四 五六 \"\n" "\"七 八 九 \"\n" - "\"坝\"", - format("\"一 二 三 四 五六 七 八 九 坝\"", getLLVMStyleWithColumns(11))); + "\"十\"", + format("\"一 二 三 四 五六 七 八 九 十\"", getLLVMStyleWithColumns(11))); // FIXME: unstable test case EXPECT_EQ("\"一\t\"\n" "\"二 \t\"\n" @@ -22348,8 +22348,8 @@ TEST_F(FormatTest, SplitsUTF8Strings) { "\"五\t\"\n" "\"六 \t\"\n" "\"七 \"\n" - "\"八九坝\tqq\"", - format("\"一\t二 \t三 四 五\t六 \t七 八九坝\tqq\"", + "\"八九十\tqq\"", + format("\"一\t二 \t三 四 五\t六 \t七 八九十\tqq\"", getLLVMStyleWithColumns(11))); // UTF8 character in an escape sequence. @@ -22362,44 +22362,44 @@ TEST_F(FormatTest, SplitsUTF8Strings) { TEST_F(FormatTest, HandlesDoubleWidthCharsInMultiLineStrings) { verifyFormat("const char *sssss =\n" " \"一二三四五六七八\\\n" - " 九 坝\";", + " 九 十\";", "const char *sssss = \"一二三四五六七八\\\n" - " 九 坝\";", + " 九 十\";", getLLVMStyleWithColumns(30)); } TEST_F(FormatTest, SplitsUTF8LineComments) { verifyFormat("// aaaaÄ\xc2\x8d", getLLVMStyleWithColumns(10)); - verifyFormat("// Я из леѝу\n" + verifyFormat("// Я из лесу\n" "// вышел; был\n" - "// ѝильный\n" + "// сильный\n" "// мороз.", - "// Я из леѝу вышел; был ѝильный мороз.", + "// Я из лесу вышел; был сильный мороз.", getLLVMStyleWithColumns(13)); verifyFormat("// 一二三\n" "// 四五六七\n" "// 八 九\n" - "// 坝", - "// 一二三 四五六七 八 九 坝", getLLVMStyleWithColumns(9)); + "// 十", + "// 一二三 四五六七 八 九 十", getLLVMStyleWithColumns(9)); } TEST_F(FormatTest, SplitsUTF8BlockComments) { - verifyFormat("/* Глѝжу,\n" - " * поднимаетѝѝ\n" + verifyFormat("/* Гляжу,\n" + " * поднимается\n" " * медленно в\n" " * гору\n" " * Лошадка,\n" - " * везущаѝ\n" - " * хвороѝту\n" + " * везущая\n" + " * хворосту\n" " * воз. */", - "/* Глѝжу, поднимаетѝѝ медленно в гору\n" - " * Лошадка, везущаѝ хвороѝту воз. */", + "/* Гляжу, поднимается медленно в гору\n" + " * Лошадка, везущая хворосту воз. */", getLLVMStyleWithColumns(13)); verifyFormat("/* 一二三\n" " * 四五六七\n" " * 八 九\n" - " * 坝 */", - "/* 一二三 四五六七 八 九 坝 */", getLLVMStyleWithColumns(9)); + " * 十 */", + "/* 一二三 四五六七 八 九 十 */", getLLVMStyleWithColumns(9)); verifyFormat("/* 𝓣𝓮𝓼𝓽 𝔣𝔬𝔲𝔯\n" " * 𝕓𝕪𝕥𝕖\n" " * 𝖀𝕿𝕱-𝟠 */", @@ -27908,9 +27908,9 @@ TEST_F(FormatTest, BreakAdjacentStringLiterals) { TEST_F(FormatTest, AlignUTFCommentsAndStringLiterals) { verifyFormat( - "int rus; // Н теперь комментарии, например, на руѝѝком, 2-байта\n" - "int long_rus; // Верхний коммент еще не превыѝил границу в 80, однако\n" - " // уже отодвинут. Переноѝ, при ѝтом, отрабатывает верно"); + "int rus; // А теперь комментарии, например, на русском, 2-байта\n" + "int long_rus; // Верхний коммент еще не превысил границу в 80, однако\n" + " // уже отодвинут. Перенос, при этом, отрабатывает верно"); auto Style = getLLVMStyle(); Style.ColumnLimit = 15; @@ -27940,7 +27940,7 @@ TEST_F(FormatTest, AlignUTFCommentsAndStringLiterals) { verifyFormat("Languages languages = {\n" " Language{{'e', 'n'}, U\"Test English\" },\n" " Language{{'l', 'v'}, U\"Test Latviešu\"},\n" - " Language{{'r', 'u'}, U\"Test Руѝѝкий\" },\n" + " Language{{'r', 'u'}, U\"Test Русский\" },\n" "};", Style); } >From 602e7a81e23c4e7b481494cd92e754ad01aa9007 Mon Sep 17 00:00:00 2001 From: W123011 <ander.ge...@worldline.com> Date: Mon, 13 Jan 2025 10:26:35 +0100 Subject: [PATCH 4/6] Fix unit test --- clang/unittests/Format/FormatTest.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index 060899b6f6a247..f36d0d98a46bc0 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -28191,12 +28191,13 @@ TEST_F(FormatTest, BreakBinaryOperations) { Style.BreakBinaryOperations = FormatStyle::BBO_OnePerLine; // Check operator >> special case - verifyFormat("std::cout\n" - " << longOperand1\n" - " << longOperand2\n" - " << longOperand3\n" - " << longOperand4\n" - " << longOperand5;", + verifyFormat("std::cin\n" + " >> longOperand1\n" + " >> longOperand2\n" + " >> longOperand3\n" + " >> longOperand4\n" + " >> longOperand5\n" + " >> longOperand6;", Style); } >From 5a7d8eeec9ba3c0e1968a0ba65b5b8480a94f52d Mon Sep 17 00:00:00 2001 From: W123011 <ander.ge...@worldline.com> Date: Fri, 17 Jan 2025 10:13:25 +0100 Subject: [PATCH 5/6] Apply PR suggestions --- clang/lib/Format/ContinuationIndenter.cpp | 4 +- clang/unittests/Format/FormatTest.cpp | 100 +++++++++++++--------- 2 files changed, 63 insertions(+), 41 deletions(-) diff --git a/clang/lib/Format/ContinuationIndenter.cpp b/clang/lib/Format/ContinuationIndenter.cpp index 5e5c93e2a5286f..c311deaa17bb0e 100644 --- a/clang/lib/Format/ContinuationIndenter.cpp +++ b/clang/lib/Format/ContinuationIndenter.cpp @@ -147,8 +147,8 @@ static bool startsNextOperand(const FormatToken &Current) { // Returns \c true if \c Current is a binary operation that must break. static bool mustBreakBinaryOperation(const FormatToken &Current, const FormatStyle &Style) { - return Current.CanBreakBefore && - Style.BreakBinaryOperations != FormatStyle::BBO_Never && + return Style.BreakBinaryOperations != FormatStyle::BBO_Never && + Current.CanBreakBefore && (Style.BreakBeforeBinaryOperators == FormatStyle::BOS_None ? startsNextOperand : isAlignableBinaryOperator)(Current); diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index f36d0d98a46bc0..a7d09f0fcf5ed3 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -22301,16 +22301,16 @@ TEST_F(FormatTest, HandlesUTF8BOM) { #if !defined(_MSC_VER) TEST_F(FormatTest, CountsUTF8CharactersProperly) { - verifyFormat("\"Однажды в студёную зимнюю пору...\"", + verifyFormat("\"Однажды в ѝтудёную зимнюю пору...\"", getLLVMStyleWithColumns(35)); - verifyFormat("\"一 二 三 四 五 六 七 八 九 十\"", + verifyFormat("\"一 二 三 四 五 六 七 八 九 坝\"", getLLVMStyleWithColumns(31)); - verifyFormat("// Однажды в студёную зимнюю пору...", + verifyFormat("// Однажды в ѝтудёную зимнюю пору...", getLLVMStyleWithColumns(36)); - verifyFormat("// 一 二 三 四 五 六 七 八 九 十", getLLVMStyleWithColumns(32)); - verifyFormat("/* Однажды в студёную зимнюю пору... */", + verifyFormat("// 一 二 三 四 五 六 七 八 九 坝", getLLVMStyleWithColumns(32)); + verifyFormat("/* Однажды в ѝтудёную зимнюю пору... */", getLLVMStyleWithColumns(39)); - verifyFormat("/* 一 二 三 四 五 六 七 八 九 十 */", + verifyFormat("/* 一 二 三 四 五 六 七 八 九 坝 */", getLLVMStyleWithColumns(35)); } @@ -22329,18 +22329,18 @@ TEST_F(FormatTest, SplitsUTF8Strings) { format("\"aaaaaaaÄ\xc2\x8d\";", getLLVMStyleWithColumns(10))); // FIXME: unstable test case EXPECT_EQ("\"Однажды, в \"\n" - "\"студёную \"\n" + "\"ѝтудёную \"\n" "\"зимнюю \"\n" "\"пору,\"", - format("\"Однажды, в студёную зимнюю пору,\"", + format("\"Однажды, в ѝтудёную зимнюю пору,\"", getLLVMStyleWithColumns(13))); // FIXME: unstable test case EXPECT_EQ( "\"一 二 三 \"\n" "\"四 五六 \"\n" "\"七 八 九 \"\n" - "\"十\"", - format("\"一 二 三 四 五六 七 八 九 十\"", getLLVMStyleWithColumns(11))); + "\"坝\"", + format("\"一 二 三 四 五六 七 八 九 坝\"", getLLVMStyleWithColumns(11))); // FIXME: unstable test case EXPECT_EQ("\"一\t\"\n" "\"二 \t\"\n" @@ -22348,8 +22348,8 @@ TEST_F(FormatTest, SplitsUTF8Strings) { "\"五\t\"\n" "\"六 \t\"\n" "\"七 \"\n" - "\"八九十\tqq\"", - format("\"一\t二 \t三 四 五\t六 \t七 八九十\tqq\"", + "\"八九坝\tqq\"", + format("\"一\t二 \t三 四 五\t六 \t七 八九坝\tqq\"", getLLVMStyleWithColumns(11))); // UTF8 character in an escape sequence. @@ -22362,44 +22362,44 @@ TEST_F(FormatTest, SplitsUTF8Strings) { TEST_F(FormatTest, HandlesDoubleWidthCharsInMultiLineStrings) { verifyFormat("const char *sssss =\n" " \"一二三四五六七八\\\n" - " 九 十\";", + " 九 坝\";", "const char *sssss = \"一二三四五六七八\\\n" - " 九 十\";", + " 九 坝\";", getLLVMStyleWithColumns(30)); } TEST_F(FormatTest, SplitsUTF8LineComments) { verifyFormat("// aaaaÄ\xc2\x8d", getLLVMStyleWithColumns(10)); - verifyFormat("// Я из лесу\n" + verifyFormat("// Я из леѝу\n" "// вышел; был\n" - "// сильный\n" + "// ѝильный\n" "// мороз.", - "// Я из лесу вышел; был сильный мороз.", + "// Я из леѝу вышел; был ѝильный мороз.", getLLVMStyleWithColumns(13)); verifyFormat("// 一二三\n" "// 四五六七\n" "// 八 九\n" - "// 十", - "// 一二三 四五六七 八 九 十", getLLVMStyleWithColumns(9)); + "// 坝", + "// 一二三 四五六七 八 九 坝", getLLVMStyleWithColumns(9)); } TEST_F(FormatTest, SplitsUTF8BlockComments) { - verifyFormat("/* Гляжу,\n" - " * поднимается\n" + verifyFormat("/* Глѝжу,\n" + " * поднимаетѝѝ\n" " * медленно в\n" " * гору\n" " * Лошадка,\n" - " * везущая\n" - " * хворосту\n" + " * везущаѝ\n" + " * хвороѝту\n" " * воз. */", - "/* Гляжу, поднимается медленно в гору\n" - " * Лошадка, везущая хворосту воз. */", + "/* Глѝжу, поднимаетѝѝ медленно в гору\n" + " * Лошадка, везущаѝ хвороѝту воз. */", getLLVMStyleWithColumns(13)); verifyFormat("/* 一二三\n" " * 四五六七\n" " * 八 九\n" - " * 十 */", - "/* 一二三 四五六七 八 九 十 */", getLLVMStyleWithColumns(9)); + " * 坝 */", + "/* 一二三 四五六七 八 九 坝 */", getLLVMStyleWithColumns(9)); verifyFormat("/* 𝓣𝓮𝓼𝓽 𝔣𝔬𝔲𝔯\n" " * 𝕓𝕪𝕥𝕖\n" " * 𝖀𝕿𝕱-𝟠 */", @@ -27908,9 +27908,9 @@ TEST_F(FormatTest, BreakAdjacentStringLiterals) { TEST_F(FormatTest, AlignUTFCommentsAndStringLiterals) { verifyFormat( - "int rus; // А теперь комментарии, например, на русском, 2-байта\n" - "int long_rus; // Верхний коммент еще не превысил границу в 80, однако\n" - " // уже отодвинут. Перенос, при этом, отрабатывает верно"); + "int rus; // Н теперь комментарии, например, на руѝѝком, 2-байта\n" + "int long_rus; // Верхний коммент еще не превыѝил границу в 80, однако\n" + " // уже отодвинут. Переноѝ, при ѝтом, отрабатывает верно"); auto Style = getLLVMStyle(); Style.ColumnLimit = 15; @@ -27940,7 +27940,7 @@ TEST_F(FormatTest, AlignUTFCommentsAndStringLiterals) { verifyFormat("Languages languages = {\n" " Language{{'e', 'n'}, U\"Test English\" },\n" " Language{{'l', 'v'}, U\"Test Latviešu\"},\n" - " Language{{'r', 'u'}, U\"Test Русский\" },\n" + " Language{{'r', 'u'}, U\"Test Руѝѝкий\" },\n" "};", Style); } @@ -27987,6 +27987,11 @@ TEST_F(FormatTest, BreakBinaryOperations) { " operand1 + operand2 - (operand3 + operand4);", Style); + // Check operator>> special case. + verifyFormat("std::cin >> longOperand_1 >> longOperand_2 >>\n" + " longOperand_3_;", + Style); + Style.BreakBinaryOperations = FormatStyle::BBO_OnePerLine; // Logical operations @@ -28065,6 +28070,13 @@ TEST_F(FormatTest, BreakBinaryOperations) { " operand6->member;", Style); + // Check operator>> special case. + verifyFormat("std::cin >>\n" + " longOperand_1 >>\n" + " longOperand_2 >>\n" + " longOperand_3_;", + Style); + Style.BreakBinaryOperations = FormatStyle::BBO_RespectPrecedence; verifyFormat("result = op1 + op2 * op3 - op4;", Style); @@ -28090,6 +28102,13 @@ TEST_F(FormatTest, BreakBinaryOperations) { " byte_buffer[3] << 24;", Style); + // Check operator>> special case. + verifyFormat("std::cin >>\n" + " longOperand_1 >>\n" + " longOperand_2 >>\n" + " longOperand_3_;", + Style); + Style.BreakBinaryOperations = FormatStyle::BBO_OnePerLine; Style.BreakBeforeBinaryOperators = FormatStyle::BOS_NonAssignment; @@ -28164,6 +28183,13 @@ TEST_F(FormatTest, BreakBinaryOperations) { " << 24;", Style); + // Check operator>> special case. + verifyFormat("std::cin\n" + " >> longOperand_1\n" + " >> longOperand_2\n" + " >> longOperand_3_;", + Style); + Style.BreakBinaryOperations = FormatStyle::BBO_RespectPrecedence; verifyFormat("result = op1 + op2 * op3 - op4;", Style); @@ -28189,15 +28215,11 @@ TEST_F(FormatTest, BreakBinaryOperations) { " | byte_buffer[3] << 24;", Style); - Style.BreakBinaryOperations = FormatStyle::BBO_OnePerLine; - // Check operator >> special case + // Check operator>> special case. verifyFormat("std::cin\n" - " >> longOperand1\n" - " >> longOperand2\n" - " >> longOperand3\n" - " >> longOperand4\n" - " >> longOperand5\n" - " >> longOperand6;", + " >> longOperand_1\n" + " >> longOperand_2\n" + " >> longOperand_3_;", Style); } >From a2c83e642b909e36fd5f3070a591319c40ba1c06 Mon Sep 17 00:00:00 2001 From: W123011 <ander.ge...@worldline.com> Date: Fri, 17 Jan 2025 10:19:53 +0100 Subject: [PATCH 6/6] fix encoding --- clang/unittests/Format/FormatTest.cpp | 62 +++++++++++++-------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index a7d09f0fcf5ed3..8a1a883ba090c2 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -22301,16 +22301,16 @@ TEST_F(FormatTest, HandlesUTF8BOM) { #if !defined(_MSC_VER) TEST_F(FormatTest, CountsUTF8CharactersProperly) { - verifyFormat("\"Однажды в ѝтудёную зимнюю пору...\"", + verifyFormat("\"Однажды в студёную зимнюю пору...\"", getLLVMStyleWithColumns(35)); - verifyFormat("\"一 二 三 四 五 六 七 八 九 坝\"", + verifyFormat("\"一 二 三 四 五 六 七 八 九 十\"", getLLVMStyleWithColumns(31)); - verifyFormat("// Однажды в ѝтудёную зимнюю пору...", + verifyFormat("// Однажды в студёную зимнюю пору...", getLLVMStyleWithColumns(36)); - verifyFormat("// 一 二 三 四 五 六 七 八 九 坝", getLLVMStyleWithColumns(32)); - verifyFormat("/* Однажды в ѝтудёную зимнюю пору... */", + verifyFormat("// 一 二 三 四 五 六 七 八 九 十", getLLVMStyleWithColumns(32)); + verifyFormat("/* Однажды в студёную зимнюю пору... */", getLLVMStyleWithColumns(39)); - verifyFormat("/* 一 二 三 四 五 六 七 八 九 坝 */", + verifyFormat("/* 一 二 三 四 五 六 七 八 九 十 */", getLLVMStyleWithColumns(35)); } @@ -22329,18 +22329,18 @@ TEST_F(FormatTest, SplitsUTF8Strings) { format("\"aaaaaaaÄ\xc2\x8d\";", getLLVMStyleWithColumns(10))); // FIXME: unstable test case EXPECT_EQ("\"Однажды, в \"\n" - "\"ѝтудёную \"\n" + "\"студёную \"\n" "\"зимнюю \"\n" "\"пору,\"", - format("\"Однажды, в ѝтудёную зимнюю пору,\"", + format("\"Однажды, в студёную зимнюю пору,\"", getLLVMStyleWithColumns(13))); // FIXME: unstable test case EXPECT_EQ( "\"一 二 三 \"\n" "\"四 五六 \"\n" "\"七 八 九 \"\n" - "\"坝\"", - format("\"一 二 三 四 五六 七 八 九 坝\"", getLLVMStyleWithColumns(11))); + "\"十\"", + format("\"一 二 三 四 五六 七 八 九 十\"", getLLVMStyleWithColumns(11))); // FIXME: unstable test case EXPECT_EQ("\"一\t\"\n" "\"二 \t\"\n" @@ -22348,8 +22348,8 @@ TEST_F(FormatTest, SplitsUTF8Strings) { "\"五\t\"\n" "\"六 \t\"\n" "\"七 \"\n" - "\"八九坝\tqq\"", - format("\"一\t二 \t三 四 五\t六 \t七 八九坝\tqq\"", + "\"八九十\tqq\"", + format("\"一\t二 \t三 四 五\t六 \t七 八九十\tqq\"", getLLVMStyleWithColumns(11))); // UTF8 character in an escape sequence. @@ -22362,44 +22362,44 @@ TEST_F(FormatTest, SplitsUTF8Strings) { TEST_F(FormatTest, HandlesDoubleWidthCharsInMultiLineStrings) { verifyFormat("const char *sssss =\n" " \"一二三四五六七八\\\n" - " 九 坝\";", + " 九 十\";", "const char *sssss = \"一二三四五六七八\\\n" - " 九 坝\";", + " 九 十\";", getLLVMStyleWithColumns(30)); } TEST_F(FormatTest, SplitsUTF8LineComments) { verifyFormat("// aaaaÄ\xc2\x8d", getLLVMStyleWithColumns(10)); - verifyFormat("// Я из леѝу\n" + verifyFormat("// Я из лесу\n" "// вышел; был\n" - "// ѝильный\n" + "// сильный\n" "// мороз.", - "// Я из леѝу вышел; был ѝильный мороз.", + "// Я из лесу вышел; был сильный мороз.", getLLVMStyleWithColumns(13)); verifyFormat("// 一二三\n" "// 四五六七\n" "// 八 九\n" - "// 坝", - "// 一二三 四五六七 八 九 坝", getLLVMStyleWithColumns(9)); + "// 十", + "// 一二三 四五六七 八 九 十", getLLVMStyleWithColumns(9)); } TEST_F(FormatTest, SplitsUTF8BlockComments) { - verifyFormat("/* Глѝжу,\n" - " * поднимаетѝѝ\n" + verifyFormat("/* Гляжу,\n" + " * поднимается\n" " * медленно в\n" " * гору\n" " * Лошадка,\n" - " * везущаѝ\n" - " * хвороѝту\n" + " * везущая\n" + " * хворосту\n" " * воз. */", - "/* Глѝжу, поднимаетѝѝ медленно в гору\n" - " * Лошадка, везущаѝ хвороѝту воз. */", + "/* Гляжу, поднимается медленно в гору\n" + " * Лошадка, везущая хворосту воз. */", getLLVMStyleWithColumns(13)); verifyFormat("/* 一二三\n" " * 四五六七\n" " * 八 九\n" - " * 坝 */", - "/* 一二三 四五六七 八 九 坝 */", getLLVMStyleWithColumns(9)); + " * 十 */", + "/* 一二三 四五六七 八 九 十 */", getLLVMStyleWithColumns(9)); verifyFormat("/* 𝓣𝓮𝓼𝓽 𝔣𝔬𝔲𝔯\n" " * 𝕓𝕪𝕥𝕖\n" " * 𝖀𝕿𝕱-𝟠 */", @@ -27908,9 +27908,9 @@ TEST_F(FormatTest, BreakAdjacentStringLiterals) { TEST_F(FormatTest, AlignUTFCommentsAndStringLiterals) { verifyFormat( - "int rus; // Н теперь комментарии, например, на руѝѝком, 2-байта\n" - "int long_rus; // Верхний коммент еще не превыѝил границу в 80, однако\n" - " // уже отодвинут. Переноѝ, при ѝтом, отрабатывает верно"); + "int rus; // А теперь комментарии, например, на русском, 2-байта\n" + "int long_rus; // Верхний коммент еще не превысил границу в 80, однако\n" + " // уже отодвинут. Перенос, при этом, отрабатывает верно"); auto Style = getLLVMStyle(); Style.ColumnLimit = 15; @@ -27940,7 +27940,7 @@ TEST_F(FormatTest, AlignUTFCommentsAndStringLiterals) { verifyFormat("Languages languages = {\n" " Language{{'e', 'n'}, U\"Test English\" },\n" " Language{{'l', 'v'}, U\"Test Latviešu\"},\n" - " Language{{'r', 'u'}, U\"Test Руѝѝкий\" },\n" + " Language{{'r', 'u'}, U\"Test Русский\" },\n" "};", Style); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits