llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang
            
<details>
<summary>Changes</summary>
See https://reviews.llvm.org/D136154#3890747 for context.

Fixes part of #58592.
--
Full diff: https://github.com/llvm/llvm-project/pull/66354.diff

2 Files Affected:

- (modified) clang/lib/Format/ContinuationIndenter.cpp (+3-2) 
- (modified) clang/unittests/Format/FormatTest.cpp (+23) 


<pre>
diff --git a/clang/lib/Format/ContinuationIndenter.cpp 
b/clang/lib/Format/ContinuationIndenter.cpp
index 75ab08de42ea0e8..8f14105751daefa 100644
--- a/clang/lib/Format/ContinuationIndenter.cpp
+++ b/clang/lib/Format/ContinuationIndenter.cpp
@@ -876,8 +876,9 @@ void ContinuationIndenter::addTokenOnCurrentLine(LineState 
&amp;amp;State, bool DryRun,
                  FormatStyle::BCIS_AfterColon) {
     CurrentState.Indent = State.Column;
     CurrentState.LastSpace = State.Column;
-  } else if ((Previous.isOneOf(TT_BinaryOperator, TT_ConditionalExpr,
-                               TT_CtorInitializerColon)) &amp;amp;&amp;amp;
+  } else if (Previous.isOneOf(TT_ConditionalExpr, TT_CtorInitializerColon)) {
+    State.Stack.back().LastSpace = State.Column;
+  } else if (Previous.is(TT_BinaryOperator) &amp;amp;&amp;amp;
              ((Previous.getPrecedence() != prec::Assignment &amp;amp;&amp;amp;
                (Previous.isNot(tok::lessless) || Previous.OperatorIndex != 0 ||
                 Previous.NextOperator)) ||
diff --git a/clang/unittests/Format/FormatTest.cpp 
b/clang/unittests/Format/FormatTest.cpp
index 4f72166bdce2d73..0d0fbdb84e3271b 100644
--- a/clang/unittests/Format/FormatTest.cpp
+++ b/clang/unittests/Format/FormatTest.cpp
@@ -7108,6 +7108,29 @@ TEST_F(FormatTest, 
ExpressionIndentationBreakingBeforeOperators) {
                &amp;quot;(someOtherLongishConditionPart1 || &amp;quot;
                &amp;quot;someOtherEvenLongerNestedConditionPart2);&amp;quot;,
                Style);
+
+  Style = getLLVMStyleWithColumns(20);
+  Style.AlignAfterOpenBracket = FormatStyle::BAS_AlwaysBreak;
+  Style.BinPackParameters = false;
+  Style.BreakBeforeBinaryOperators = FormatStyle::BOS_NonAssignment;
+  Style.ContinuationIndentWidth = 2;
+  verifyFormat(&amp;quot;struct Foo {\n&amp;quot;
+               &amp;quot;  Foo(\n&amp;quot;
+               &amp;quot;    int arg1,\n&amp;quot;
+               &amp;quot;    int arg2)\n&amp;quot;
+               &amp;quot;      : Base(\n&amp;quot;
+               &amp;quot;          arg1,\n&amp;quot;
+               &amp;quot;          arg2) {}\n&amp;quot;
+               &amp;quot;};&amp;quot;,
+               Style);
+  verifyFormat(&amp;quot;return abc\n&amp;quot;
+               &amp;quot;         ? foo(\n&amp;quot;
+               &amp;quot;             a,\n&amp;quot;
+               &amp;quot;             b,\n&amp;quot;
+               &amp;quot;             bar(\n&amp;quot;
+               &amp;quot;               abc))\n&amp;quot;
+               &amp;quot;         : g(abc);&amp;quot;,
+               Style);
 }
 
 TEST_F(FormatTest, ExpressionIndentationStrictAlign) {
</pre>
</details>


https://github.com/llvm/llvm-project/pull/66354
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to