[clang] [clang-format] Fix greatergreater (PR #122282)

via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 17 01:20:14 PST 2025


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.genua at 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.genua at 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.genua at 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.genua at 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.genua at 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.genua at 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);
 }



More information about the cfe-commits mailing list