<div dir="ltr">I don't think this is a complete fix. <div>The fuzzer is still unhappy, this time on <<<</div><div><a href="http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fuzzer/builds/442/steps/stage2%2Fasan%20run%20clang-format-fuzzer/logs/stdio">http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fuzzer/builds/442/steps/stage2%2Fasan%20run%20clang-format-fuzzer/logs/stdio</a><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Feb 20, 2015 at 1:09 PM, Jacques Pienaar <span dir="ltr"><<a href="mailto:jpienaar@google.com" target="_blank">jpienaar@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: jpienaar<br>
Date: Fri Feb 20 15:09:01 2015<br>
New Revision: 230061<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=230061&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=230061&view=rev</a><br>
Log:<br>
Fix merging of << at end of input.<br>
<br>
Commit of review <a href="http://reviews.llvm.org/D7766" target="_blank">http://reviews.llvm.org/D7766</a><br>
<br>
<br>
Modified:<br>
    cfe/trunk/lib/Format/Format.cpp<br>
    cfe/trunk/unittests/Format/FormatTest.cpp<br>
<br>
Modified: cfe/trunk/lib/Format/Format.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/Format.cpp?rev=230061&r1=230060&r2=230061&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/Format.cpp?rev=230061&r1=230060&r2=230061&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Format/Format.cpp (original)<br>
+++ cfe/trunk/lib/Format/Format.cpp Fri Feb 20 15:09:01 2015<br>
@@ -662,33 +662,26 @@ private:<br>
<br>
   bool tryMergeLessLess() {<br>
     // Merge X,less,less,Y into X,lessless,Y unless X or Y is less.<br>
-    if (Tokens.size() < 4) {<br>
-      // Merge <,<,eof to <<,eof<br>
-      if (Tokens.back()->Tok.isNot(tok::eof))<br>
-        return false;<br>
+    if (Tokens.size() < 3)<br>
+      return false;<br>
<br>
-      auto &eof = Tokens.back();<br>
-      Tokens.pop_back();<br>
-      bool LessLessMerged;<br>
-      if ((LessLessMerged = tryMergeTokens({tok::less, tok::less})))<br>
-        Tokens.back()->Tok.setKind(tok::lessless);<br>
-      Tokens.push_back(eof);<br>
-      return LessLessMerged;<br>
-    }<br>
+    bool FourthTokenIsLess = false;<br>
+    if (Tokens.size() > 3)<br>
+      FourthTokenIsLess = (Tokens.end() - 4)[0]->is(tok::less);<br>
<br>
-    auto First = Tokens.end() - 4;<br>
-    if (First[3]->is(tok::less) || First[2]->isNot(tok::less) ||<br>
-        First[1]->isNot(tok::less) || First[0]->is(tok::less))<br>
+    auto First = Tokens.end() - 3;<br>
+    if (First[2]->is(tok::less) || First[1]->isNot(tok::less) ||<br>
+        First[0]->isNot(tok::less) || FourthTokenIsLess)<br>
       return false;<br>
<br>
     // Only merge if there currently is no whitespace between the two "<".<br>
-    if (First[2]->WhitespaceRange.getBegin() !=<br>
-        First[2]->WhitespaceRange.getEnd())<br>
+    if (First[1]->WhitespaceRange.getBegin() !=<br>
+        First[1]->WhitespaceRange.getEnd())<br>
       return false;<br>
<br>
-    First[1]->Tok.setKind(tok::lessless);<br>
-    First[1]->TokenText = "<<";<br>
-    First[1]->ColumnWidth += 1;<br>
+    First[0]->Tok.setKind(tok::lessless);<br>
+    First[0]->TokenText = "<<";<br>
+    First[0]->ColumnWidth += 1;<br>
     Tokens.erase(Tokens.end() - 2);<br>
     return true;<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=230061&r1=230060&r2=230061&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=230061&r1=230060&r2=230061&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/unittests/Format/FormatTest.cpp (original)<br>
+++ cfe/trunk/unittests/Format/FormatTest.cpp Fri Feb 20 15:09:01 2015<br>
@@ -9752,6 +9752,7 @@ TEST_F(FormatTest, TripleAngleBrackets)<br>
 }<br>
<br>
 TEST_F(FormatTest, MergeLessLessAtEnd) {<br>
+  verifyFormat("<<");<br>
   verifyFormat("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"<br>
                "aaallvm::outs() <<");<br>
   verifyFormat("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"<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>
</blockquote></div><br></div>