]> granicus.if.org Git - clang/commitdiff
Fix operator<< recognition (PR19064).
authorAlexander Kornienko <alexfh@google.com>
Thu, 6 Mar 2014 15:13:08 +0000 (15:13 +0000)
committerAlexander Kornienko <alexfh@google.com>
Thu, 6 Mar 2014 15:13:08 +0000 (15:13 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@203123 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Format/ContinuationIndenter.cpp
unittests/Format/FormatTest.cpp

index 5ea2488395d93e848b419069da95e1f0e1f08bbf..b82726a6b83e09807ecacce2fe5e075b1492c67e 100644 (file)
@@ -174,7 +174,8 @@ bool ContinuationIndenter::mustBreak(const LineState &State) {
   }
 
   // Same as above, but for the first "<<" operator.
-  if (Current.is(tok::lessless) && State.Stack.back().BreakBeforeParameter &&
+  if (Current.is(tok::lessless) && Current.Type != TT_OverloadedOperator &&
+      State.Stack.back().BreakBeforeParameter &&
       State.Stack.back().FirstLessLess == 0)
     return true;
 
@@ -515,7 +516,8 @@ unsigned ContinuationIndenter::moveStateToNextToken(LineState &State,
 
   if (Current.Type == TT_InheritanceColon)
     State.Stack.back().AvoidBinPacking = true;
-  if (Current.is(tok::lessless) && State.Stack.back().FirstLessLess == 0)
+  if (Current.is(tok::lessless) && Current.Type != TT_OverloadedOperator &&
+      State.Stack.back().FirstLessLess == 0)
     State.Stack.back().FirstLessLess = State.Column;
   if (Current.Type == TT_ArraySubscriptLSquare &&
       State.Stack.back().StartOfArraySubscripts == 0)
index a86776cff9c813e0a433e5b9db8fcf548bcc533f..341fb3589a3eff73c975358ef3e33d1a3e930cdc 100644 (file)
@@ -3077,6 +3077,11 @@ TEST_F(FormatTest, BreaksFunctionDeclarations) {
                "operator>(const SomeLoooooooooooooooooooooooooogType &other);");
   verifyFormat("SomeLoooooooooooooooooooooooooogType\n"
                "operator>>(const SomeLooooooooooooooooooooooooogType &other);");
+  verifyFormat("SomeLoooooooooooooooooooooooooogType\n"
+               "operator<<(const SomeLooooooooooooooooooooooooogType &other);");
+  verifyGoogleFormat(
+      "SomeLoooooooooooooooooooooooooooooogType operator>>(\n"
+      "    const SomeLooooooooogType &a, const SomeLooooooooogType &b);");
   verifyGoogleFormat(
       "SomeLoooooooooooooooooooooooooooooogType operator<<(\n"
       "    const SomeLooooooooogType &a, const SomeLooooooooogType &b);");