<div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote">On Thu, Aug 8, 2013 at 4:23 AM, Arnold Schwaighofer <span dir="ltr"><<a href="mailto:aschwaighofer@apple.com" target="_blank">aschwaighofer@apple.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hi Alexander,<br>
<br>
This commit broke a bot. The build bot clang-x86_64-darwin11-nobootstrap-RAincremental was broken for over two hours.<br>
<br>
<a href="http://lab.llvm.org:8013/builders/clang-x86_64-darwin11-nobootstrap-RAincremental/builds/5486" target="_blank">http://lab.llvm.org:8013/builders/clang-x86_64-darwin11-nobootstrap-RAincremental/builds/5486</a><br>

<br>
I have reverted it in r187957.<br></blockquote><div><br></div><div>Thanks! Will take a look when wake up tomorrow.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<br>
Thanks,<br>
Arnold<br>
<div class=""><div class="h5"><br>
<br>
On Aug 7, 2013, at 6:29 PM, Alexander Kornienko <<a href="mailto:alexfh@google.com">alexfh@google.com</a>> wrote:<br>
<br>
> Author: alexfh<br>
> Date: Wed Aug Â 7 18:29:01 2013<br>
> New Revision: 187935<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=187935&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=187935&view=rev</a><br>
> Log:<br>
> Support for double width characters.<br>
><br>
> Summary: Only works for UTF-8-encoded files.<br>
><br>
> Reviewers: djasper<br>
><br>
> Reviewed By: djasper<br>
><br>
> CC: cfe-commits, klimek<br>
><br>
> Differential Revision: <a href="http://llvm-reviews.chandlerc.com/D1311" target="_blank">http://llvm-reviews.chandlerc.com/D1311</a><br>
><br>
> Modified:<br>
> Â  Â cfe/trunk/lib/Format/BreakableToken.cpp<br>
> Â  Â cfe/trunk/unittests/Format/FormatTest.cpp<br>
><br>
> Modified: cfe/trunk/lib/Format/BreakableToken.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/BreakableToken.cpp?rev=187935&r1=187934&r2=187935&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/BreakableToken.cpp?rev=187935&r1=187934&r2=187935&view=diff</a><br>

> ==============================================================================<br>
> --- cfe/trunk/lib/Format/BreakableToken.cpp (original)<br>
> +++ cfe/trunk/lib/Format/BreakableToken.cpp Wed Aug Â 7 18:29:01 2013<br>
> @@ -20,6 +20,7 @@<br>
> #include "clang/Format/Format.h"<br>
> #include "llvm/ADT/STLExtras.h"<br>
> #include "llvm/Support/Debug.h"<br>
> +#include "llvm/Support/Locale.h"<br>
> #include <algorithm><br>
><br>
> namespace clang {<br>
> @@ -38,6 +39,15 @@ static bool IsBlank(char C) {<br>
> Â  }<br>
> }<br>
><br>
> +static unsigned columnWidth(StringRef Text, encoding::Encoding Encoding) {<br>
> + Â if (Encoding == encoding::Encoding_UTF8) {<br>
> + Â  Â int ContentWidth = llvm::sys::locale::columnWidth(Text);<br>
> + Â  Â if (ContentWidth >= 0)<br>
> + Â  Â  Â return ContentWidth;<br>
> + Â }<br>
> + Â return encoding::getCodePointCount(Text, Encoding);<br>
> +}<br>
> +<br>
> static BreakableToken::Split getCommentSplit(StringRef Text,<br>
> Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â unsigned ContentStartColumn,<br>
> Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â unsigned ColumnLimit,<br>
> @@ -49,9 +59,12 @@ static BreakableToken::Split getCommentS<br>
> Â  unsigned MaxSplitBytes = 0;<br>
><br>
> Â  for (unsigned NumChars = 0;<br>
> - Â  Â  Â  NumChars < MaxSplit && MaxSplitBytes < Text.size(); ++NumChars)<br>
> - Â  Â MaxSplitBytes +=<br>
> + Â  Â  Â  NumChars < MaxSplit && MaxSplitBytes < Text.size();) {<br>
> + Â  Â unsigned NumBytes =<br>
> Â  Â  Â  Â  encoding::getCodePointNumBytes(Text[MaxSplitBytes], Encoding);<br>
> + Â  Â NumChars += columnWidth(Text.substr(MaxSplitBytes, NumBytes), Encoding);<br>
> + Â  Â MaxSplitBytes += NumBytes;<br>
> + Â }<br>
><br>
> Â  StringRef::size_type SpaceOffset = Text.find_last_of(Blanks, MaxSplitBytes);<br>
> Â  if (SpaceOffset == StringRef::npos ||<br>
> @@ -84,9 +97,8 @@ static BreakableToken::Split getStringSp<br>
> Â  Â  return BreakableToken::Split(StringRef::npos, 0);<br>
> Â  if (ColumnLimit <= ContentStartColumn)<br>
> Â  Â  return BreakableToken::Split(StringRef::npos, 0);<br>
> - Â unsigned MaxSplit =<br>
> - Â  Â  Â std::min<unsigned>(ColumnLimit - ContentStartColumn,<br>
> - Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  encoding::getCodePointCount(Text, Encoding) - 1);<br>
> + Â unsigned MaxSplit = std::min<unsigned>(ColumnLimit - ContentStartColumn,<br>
> + Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  columnWidth(Text, Encoding) - 1);<br>
> Â  StringRef::size_type SpaceOffset = 0;<br>
> Â  StringRef::size_type SlashOffset = 0;<br>
> Â  StringRef::size_type WordStartOffset = 0;<br>
> @@ -98,7 +110,7 @@ static BreakableToken::Split getStringSp<br>
> Â  Â  Â  Chars += Advance;<br>
> Â  Â  } else {<br>
> Â  Â  Â  Advance = encoding::getCodePointNumBytes(Text[0], Encoding);<br>
> - Â  Â  Â Chars += 1;<br>
> + Â  Â  Â Chars += columnWidth(Text.substr(0, Advance), Encoding);<br>
> Â  Â  }<br>
><br>
> Â  Â  if (Chars > MaxSplit)<br>
> @@ -131,7 +143,7 @@ unsigned BreakableSingleLineToken::getLi<br>
> unsigned BreakableSingleLineToken::getLineLengthAfterSplit(<br>
> Â  Â  unsigned LineIndex, unsigned Offset, StringRef::size_type Length) const {<br>
> Â  return StartColumn + Prefix.size() + Postfix.size() +<br>
> - Â  Â  Â  Â  encoding::getCodePointCount(Line.substr(Offset, Length), Encoding);<br>
> + Â  Â  Â  Â  columnWidth(Line.substr(Offset, Length), Encoding);<br>
> }<br>
><br>
> BreakableSingleLineToken::BreakableSingleLineToken(<br>
> @@ -329,8 +341,7 @@ unsigned BreakableBlockComment::getLineC<br>
> unsigned BreakableBlockComment::getLineLengthAfterSplit(<br>
> Â  Â  unsigned LineIndex, unsigned Offset, StringRef::size_type Length) const {<br>
> Â  return getContentStartColumn(LineIndex, Offset) +<br>
> - Â  Â  Â  Â  encoding::getCodePointCount(Lines[LineIndex].substr(Offset, Length),<br>
> - Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Encoding) +<br>
> + Â  Â  Â  Â  columnWidth(Lines[LineIndex].substr(Offset, Length), Encoding) +<br>
> Â  Â  Â  Â  Â // The last line gets a "*/" postfix.<br>
> Â  Â  Â  Â  Â (LineIndex + 1 == Lines.size() ? 2 : 0);<br>
> }<br>
><br>
> Modified: cfe/trunk/unittests/Format/FormatTest.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=187935&r1=187934&r2=187935&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=187935&r1=187934&r2=187935&view=diff</a><br>

> ==============================================================================<br>
> --- cfe/trunk/unittests/Format/FormatTest.cpp (original)<br>
> +++ cfe/trunk/unittests/Format/FormatTest.cpp Wed Aug Â 7 18:29:01 2013<br>
> @@ -5704,15 +5704,15 @@ TEST_F(FormatTest, CountsUTF8CharactersP<br>
> Â  verifyFormat("\"Однажды ÃÂ² Ã‘ Ã‘‚удёную ÃÂ·ÃÂ¸ÃÂ¼ÃÂ½Ã‘ŽÑŽ ÃÂ¿ÃÂ¾Ã‘€Ñƒ...\"",<br>
> Â  Â  Â  Â  Â  Â  Â  Â getLLVMStyleWithColumns(35));<br>
> Â  verifyFormat("\"一 Ã¤ÂºÅ’ Ã¤Â¸â€° Ã¥â€ºâ€º Ã¤Âºâ€ Ã¥<br>
> Ã¤Â¸Æ’ Ã¥<br>
> Â« Ã¤Â¹ Â Ã¥ Â \"",<br>
> - Â  Â  Â  Â  Â  Â  Â  getLLVMStyleWithColumns(21));<br>
> + Â  Â  Â  Â  Â  Â  Â  getLLVMStyleWithColumns(31));<br>
> Â  verifyFormat("// ÃÅ¾ÃÂ´ÃÂ½ÃÂ°ÃÂ¶ÃÂ´Ã‘‹ ÃÂ² Ã‘ Ã‘‚удёную ÃÂ·ÃÂ¸ÃÂ¼ÃÂ½Ã‘ŽÑŽ ÃÂ¿ÃÂ¾Ã‘€Ñƒ...",<br>
> Â  Â  Â  Â  Â  Â  Â  Â getLLVMStyleWithColumns(36));<br>
> Â  verifyFormat("// Ã¤Â¸â‚¬ Ã¤ÂºÅ’ Ã¤Â¸â€° Ã¥â€ºâ€º Ã¤Âºâ€ Ã¥<br>
> Ã¤Â¸Æ’ Ã¥<br>
> Â« Ã¤Â¹ Â Ã¥ Â ",<br>
> - Â  Â  Â  Â  Â  Â  Â  getLLVMStyleWithColumns(22));<br>
> + Â  Â  Â  Â  Â  Â  Â  getLLVMStyleWithColumns(32));<br>
> Â  verifyFormat("/* ÃÅ¾ÃÂ´ÃÂ½ÃÂ°ÃÂ¶ÃÂ´Ã‘‹ ÃÂ² Ã‘ Ã‘‚удёную ÃÂ·ÃÂ¸ÃÂ¼ÃÂ½Ã‘ŽÑŽ ÃÂ¿ÃÂ¾Ã‘€Ñƒ... */",<br>
> Â  Â  Â  Â  Â  Â  Â  Â getLLVMStyleWithColumns(39));<br>
> Â  verifyFormat("/* Ã¤Â¸â‚¬ Ã¤ÂºÅ’ Ã¤Â¸â€° Ã¥â€ºâ€º Ã¤Âºâ€ Ã¥<br>
> Ã¤Â¸Æ’ Ã¥<br>
> Â« Ã¤Â¹ Â Ã¥ Â  */",<br>
> - Â  Â  Â  Â  Â  Â  Â  getLLVMStyleWithColumns(25));<br>
> + Â  Â  Â  Â  Â  Â  Â  getLLVMStyleWithColumns(35));<br>
> }<br>
><br>
> TEST_F(FormatTest, SplitsUTF8Strings) {<br>
> @@ -5723,11 +5723,12 @@ TEST_F(FormatTest, SplitsUTF8Strings) {<br>
> Â  Â  Â  "\"пору,\"",<br>
> Â  Â  Â  format("\"Однажды, ÃÂ² Ã‘ Ã‘‚удёную ÃÂ·ÃÂ¸ÃÂ¼ÃÂ½Ã‘ŽÑŽ ÃÂ¿ÃÂ¾Ã‘€Ñƒ,\"",<br>
> Â  Â  Â  Â  Â  Â  Â getLLVMStyleWithColumns(13)));<br>
> - Â EXPECT_EQ("\"一 Ã¤ÂºÅ’ Ã¤Â¸â€° Ã¥â€ºâ€º \"\n"<br>
> - Â  Â  Â  Â  Â  Â "\"五 Ã¥<br>
> Ã¤Â¸Æ’ Ã¥<br>
> Â« \"\n"<br>
> - Â  Â  Â  Â  Â  Â "\"习 å Â \"",<br>
> - Â  Â  Â  Â  Â  Â format("\"一 Ã¤ÂºÅ’ Ã¤Â¸â€° Ã¥â€ºâ€º Ã¤Âºâ€ Ã¥<br>
> Ã¤Â¸Æ’ Ã¥<br>
> Â« Ã¤Â¹ Â Ã¥ Â \"",<br>
> - Â  Â  Â  Â  Â  Â  Â  Â  Â  getLLVMStyleWithColumns(10)));<br>
> + Â EXPECT_EQ("\"一 Ã¤ÂºÅ’ Ã¤Â¸â€° \"\n"<br>
> + Â  Â  Â  Â  Â  Â "\"å›› Ã¤Âºâ€Ã¥<br>
> \"\n"<br>
> + Â  Â  Â  Â  Â  Â "\"七 Ã¥<br>
> Â« Ã¤Â¹ Â \"\n"<br>
> + Â  Â  Â  Â  Â  Â "\"Ã¥ Â \"",<br>
> + Â  Â  Â  Â  Â  Â format("\"一 Ã¤ÂºÅ’ Ã¤Â¸â€° Ã¥â€ºâ€º Ã¤Âºâ€Ã¥<br>
> Ã¤Â¸Æ’ Ã¥<br>
> Â« Ã¤Â¹ Â Ã¥ Â \"",<br>
> + Â  Â  Â  Â  Â  Â  Â  Â  Â  getLLVMStyleWithColumns(11)));<br>
> }<br>
><br>
> TEST_F(FormatTest, SplitsUTF8LineComments) {<br>
> @@ -5739,9 +5740,9 @@ TEST_F(FormatTest, SplitsUTF8LineComment<br>
> Â  Â  Â  Â  Â  Â  Â  Â  Â  Â getLLVMStyleWithColumns(13)));<br>
> Â  EXPECT_EQ("// Ã¤Â¸â‚¬Ã¤ÂºÅ’三\n"<br>
> Â  Â  Â  Â  Â  Â  "// Ã¥â€ºâ€ºÃ¤Âºâ€Ã¥<br>
> Ã¤Â¸Æ’\n"<br>
> - Â  Â  Â  Â  Â  Â "// Ã¥<br>
> Â«\n"<br>
> - Â  Â  Â  Â  Â  Â "// Ã¤Â¹ Â Ã¥ Â ",<br>
> - Â  Â  Â  Â  Â  Â format("// Ã¤Â¸â‚¬Ã¤ÂºÅ’三 Ã¥â€ºâ€ºÃ¤Âºâ€Ã¥<br>
> Ã¤Â¸Æ’ Ã¥<br>
> Â« Â Ã¤Â¹ Â Ã¥ Â ", getLLVMStyleWithColumns(6)));<br>
> + Â  Â  Â  Â  Â  Â "// Ã¥<br>
> Â« Â Ã¤Â¹ \n"<br>
> + Â  Â  Â  Â  Â  Â "// Ã¥ Â ",<br>
> + Â  Â  Â  Â  Â  Â format("// Ã¤Â¸â‚¬Ã¤ÂºÅ’三 Ã¥â€ºâ€ºÃ¤Âºâ€Ã¥<br>
> Ã¤Â¸Æ’ Ã¥<br>
> Â« Â Ã¤Â¹ Â Ã¥ Â ", getLLVMStyleWithColumns(9)));<br>
> }<br>
><br>
> TEST_F(FormatTest, SplitsUTF8BlockComments) {<br>
> @@ -5758,16 +5759,17 @@ TEST_F(FormatTest, SplitsUTF8BlockCommen<br>
> Â  Â  Â  Â  Â  Â  Â  Â  Â  Â getLLVMStyleWithColumns(13)));<br>
> Â  EXPECT_EQ("/* Ã¤Â¸â‚¬Ã¤ÂºÅ’三\n"<br>
> Â  Â  Â  Â  Â  Â  " * Ã¥â€ºâ€ºÃ¤Âºâ€Ã¥<br>
> Ã¤Â¸Æ’\n"<br>
> - Â  Â  Â  Â  Â  Â " * Ã¥<br>
> Â«\n"<br>
> - Â  Â  Â  Â  Â  Â " * Ã¤Â¹ Â Ã¥ Â \n"<br>
> - Â  Â  Â  Â  Â  Â " */",<br>
> - Â  Â  Â  Â  Â  Â format("/* Ã¤Â¸â‚¬Ã¤ÂºÅ’三 Ã¥â€ºâ€ºÃ¤Âºâ€Ã¥<br>
> Ã¤Â¸Æ’ Ã¥<br>
> Â« Â Ã¤Â¹ Â Ã¥ Â  */", getLLVMStyleWithColumns(6)));<br>
> + Â  Â  Â  Â  Â  Â " * Ã¥<br>
> Â« Â Ã¤Â¹ \n"<br>
> + Â  Â  Â  Â  Â  Â " * Ã¥ Â  Â */",<br>
> + Â  Â  Â  Â  Â  Â format("/* Ã¤Â¸â‚¬Ã¤ÂºÅ’三 Ã¥â€ºâ€ºÃ¤Âºâ€Ã¥<br>
> Ã¤Â¸Æ’ Ã¥<br>
> Â« Â Ã¤Â¹ Â Ã¥ Â  Â */", getLLVMStyleWithColumns(9)));<br>
> Â  EXPECT_EQ("/* Ã° â€œÂ£Ã° â€œÂ®Ã° â€œÂ¼Ã° â€œÂ½ Ã° â€Â£Ã° â€Â¬Ã° â€Â²Ã° â€Â¯\n"<br>
> Â  Â  Â  Â  Â  Â  " * Ã° â€¢â€œÃ° â€¢ÂªÃ° â€¢Â¥Ã° â€¢â€“\n"<br>
> Â  Â  Â  Â  Â  Â  " * Ã° â€“€ð â€¢Â¿Ã° â€¢Â±-ð Å¸ Â */",<br>
> Â  Â  Â  Â  Â  Â  format("/* Ã° â€œÂ£Ã° â€œÂ®Ã° â€œÂ¼Ã° â€œÂ½ Ã° â€Â£Ã° â€Â¬Ã° â€Â²Ã° â€Â¯ Ã° â€¢â€œÃ° â€¢ÂªÃ° â€¢Â¥Ã° â€¢â€“ Ã° â€“€ð â€¢Â¿Ã° â€¢Â±-ð Å¸ Â */", getLLVMStyleWithColumns(12)));<br>
> }<br>
><br>
> +#endif // _MSC_VER<br>
> +<br>
> TEST_F(FormatTest, FormatsWithWebKitStyle) {<br>
> Â  FormatStyle Style = getWebKitStyle();<br>
><br>
> @@ -5847,7 +5849,5 @@ TEST_F(FormatTest, FormatsWithWebKitStyl<br>
> Â  Â  Â  Â  Â  Â  format("if (aaaaaaaaaaaaaaa || bbbbbbbbbbbbbbb) { i++; }", Style));<br>
> }<br>
><br>
> -#endif<br>
> -<br>
> } // end namespace tooling<br>
> } // end namespace clang<br>
><br>
><br>
> _______________________________________________<br>
> cfe-commits mailing list<br>
> <a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
<br>
</div></div></blockquote></div><br>
</div></div>