From 2519d56d558eb40a23ede9bbba154514d0ec7ee2 Mon Sep 17 00:00:00 2001 From: Arnold Schwaighofer Date: Thu, 8 Aug 2013 02:19:56 +0000 Subject: [PATCH] Revert r187935 "Support for double width characters." It broke a public build bot. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187957 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Format/BreakableToken.cpp | 29 +++++++++------------------- unittests/Format/FormatTest.cpp | 34 ++++++++++++++++----------------- 2 files changed, 26 insertions(+), 37 deletions(-) diff --git a/lib/Format/BreakableToken.cpp b/lib/Format/BreakableToken.cpp index c2365f1402..3b29137798 100644 --- a/lib/Format/BreakableToken.cpp +++ b/lib/Format/BreakableToken.cpp @@ -20,7 +20,6 @@ #include "clang/Format/Format.h" #include "llvm/ADT/STLExtras.h" #include "llvm/Support/Debug.h" -#include "llvm/Support/Locale.h" #include namespace clang { @@ -39,15 +38,6 @@ static bool IsBlank(char C) { } } -static unsigned columnWidth(StringRef Text, encoding::Encoding Encoding) { - if (Encoding == encoding::Encoding_UTF8) { - int ContentWidth = llvm::sys::locale::columnWidth(Text); - if (ContentWidth >= 0) - return ContentWidth; - } - return encoding::getCodePointCount(Text, Encoding); -} - static BreakableToken::Split getCommentSplit(StringRef Text, unsigned ContentStartColumn, unsigned ColumnLimit, @@ -59,12 +49,9 @@ static BreakableToken::Split getCommentSplit(StringRef Text, unsigned MaxSplitBytes = 0; for (unsigned NumChars = 0; - NumChars < MaxSplit && MaxSplitBytes < Text.size();) { - unsigned NumBytes = + NumChars < MaxSplit && MaxSplitBytes < Text.size(); ++NumChars) + MaxSplitBytes += encoding::getCodePointNumBytes(Text[MaxSplitBytes], Encoding); - NumChars += columnWidth(Text.substr(MaxSplitBytes, NumBytes), Encoding); - MaxSplitBytes += NumBytes; - } StringRef::size_type SpaceOffset = Text.find_last_of(Blanks, MaxSplitBytes); if (SpaceOffset == StringRef::npos || @@ -97,8 +84,9 @@ static BreakableToken::Split getStringSplit(StringRef Text, return BreakableToken::Split(StringRef::npos, 0); if (ColumnLimit <= ContentStartColumn) return BreakableToken::Split(StringRef::npos, 0); - unsigned MaxSplit = std::min(ColumnLimit - ContentStartColumn, - columnWidth(Text, Encoding) - 1); + unsigned MaxSplit = + std::min(ColumnLimit - ContentStartColumn, + encoding::getCodePointCount(Text, Encoding) - 1); StringRef::size_type SpaceOffset = 0; StringRef::size_type SlashOffset = 0; StringRef::size_type WordStartOffset = 0; @@ -110,7 +98,7 @@ static BreakableToken::Split getStringSplit(StringRef Text, Chars += Advance; } else { Advance = encoding::getCodePointNumBytes(Text[0], Encoding); - Chars += columnWidth(Text.substr(0, Advance), Encoding); + Chars += 1; } if (Chars > MaxSplit) @@ -143,7 +131,7 @@ unsigned BreakableSingleLineToken::getLineCount() const { return 1; } unsigned BreakableSingleLineToken::getLineLengthAfterSplit( unsigned LineIndex, unsigned Offset, StringRef::size_type Length) const { return StartColumn + Prefix.size() + Postfix.size() + - columnWidth(Line.substr(Offset, Length), Encoding); + encoding::getCodePointCount(Line.substr(Offset, Length), Encoding); } BreakableSingleLineToken::BreakableSingleLineToken( @@ -341,7 +329,8 @@ unsigned BreakableBlockComment::getLineCount() const { return Lines.size(); } unsigned BreakableBlockComment::getLineLengthAfterSplit( unsigned LineIndex, unsigned Offset, StringRef::size_type Length) const { return getContentStartColumn(LineIndex, Offset) + - columnWidth(Lines[LineIndex].substr(Offset, Length), Encoding) + + encoding::getCodePointCount(Lines[LineIndex].substr(Offset, Length), + Encoding) + // The last line gets a "*/" postfix. (LineIndex + 1 == Lines.size() ? 2 : 0); } diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index 48b1f63fca..2969e568eb 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -5704,15 +5704,15 @@ TEST_F(FormatTest, CountsUTF8CharactersProperly) { verifyFormat("\"Однажды в студёную зимнюю пору...\"", getLLVMStyleWithColumns(35)); verifyFormat("\"一 二 三 四 五 六 七 八 九 十\"", - getLLVMStyleWithColumns(31)); + getLLVMStyleWithColumns(21)); verifyFormat("// Однажды в студёную зимнюю пору...", getLLVMStyleWithColumns(36)); verifyFormat("// 一 二 三 四 五 六 七 八 九 十", - getLLVMStyleWithColumns(32)); + getLLVMStyleWithColumns(22)); verifyFormat("/* Однажды в студёную зимнюю пору... */", getLLVMStyleWithColumns(39)); verifyFormat("/* 一 二 三 四 五 六 七 八 九 十 */", - getLLVMStyleWithColumns(35)); + getLLVMStyleWithColumns(25)); } TEST_F(FormatTest, SplitsUTF8Strings) { @@ -5723,12 +5723,11 @@ TEST_F(FormatTest, SplitsUTF8Strings) { "\"пору,\"", format("\"Однажды, в студёную зимнюю пору,\"", getLLVMStyleWithColumns(13))); - EXPECT_EQ("\"一 二 三 \"\n" - "\"四 五六 \"\n" - "\"七 八 九 \"\n" - "\"十\"", - format("\"一 二 三 四 五六 七 八 九 十\"", - getLLVMStyleWithColumns(11))); + EXPECT_EQ("\"一 二 三 四 \"\n" + "\"五 六 七 八 \"\n" + "\"九 十\"", + format("\"一 二 三 四 五 六 七 八 九 十\"", + getLLVMStyleWithColumns(10))); } TEST_F(FormatTest, SplitsUTF8LineComments) { @@ -5740,9 +5739,9 @@ TEST_F(FormatTest, SplitsUTF8LineComments) { getLLVMStyleWithColumns(13))); EXPECT_EQ("// 一二三\n" "// 四五六七\n" - "// 八 九\n" - "// 十", - format("// 一二三 四五六七 八 九 十", getLLVMStyleWithColumns(9))); + "// 八\n" + "// 九 十", + format("// 一二三 四五六七 八 九 十", getLLVMStyleWithColumns(6))); } TEST_F(FormatTest, SplitsUTF8BlockComments) { @@ -5759,17 +5758,16 @@ TEST_F(FormatTest, SplitsUTF8BlockComments) { getLLVMStyleWithColumns(13))); EXPECT_EQ("/* 一二三\n" " * 四五六七\n" - " * 八 九\n" - " * 十 */", - format("/* 一二三 四五六七 八 九 十 */", getLLVMStyleWithColumns(9))); + " * 八\n" + " * 九 十\n" + " */", + format("/* 一二三 四五六七 八 九 十 */", getLLVMStyleWithColumns(6))); EXPECT_EQ("/* 𝓣𝓮𝓼𝓽 𝔣𝔬𝔲𝔯\n" " * 𝕓𝕪𝕥𝕖\n" " * 𝖀𝕿𝕱-𝟠 */", format("/* 𝓣𝓮𝓼𝓽 𝔣𝔬𝔲𝔯 𝕓𝕪𝕥𝕖 𝖀𝕿𝕱-𝟠 */", getLLVMStyleWithColumns(12))); } -#endif // _MSC_VER - TEST_F(FormatTest, FormatsWithWebKitStyle) { FormatStyle Style = getWebKitStyle(); @@ -5849,5 +5847,7 @@ TEST_F(FormatTest, FormatsWithWebKitStyle) { format("if (aaaaaaaaaaaaaaa || bbbbbbbbbbbbbbb) { i++; }", Style)); } +#endif + } // end namespace tooling } // end namespace clang -- 2.50.1