]> granicus.if.org Git - clang/commitdiff
clang-format: Indent correctly in conditional expressions after return.
authorDaniel Jasper <djasper@google.com>
Mon, 8 Dec 2014 21:28:31 +0000 (21:28 +0000)
committerDaniel Jasper <djasper@google.com>
Mon, 8 Dec 2014 21:28:31 +0000 (21:28 +0000)
This only applies when not aligning after the return itself (which is
commonly done for C++.

Before:
  return aaaaaaaaaa
      ? bbbbbbbbbb(
             bbbbbb)  // This is indented relative to aaaaaaaaaa.
      : b;

After:
  return aaaaaaaaaa
      ? bbbbbbbbbb(
            bbbbbb)
      : b;

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@223694 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Format/ContinuationIndenter.cpp
unittests/Format/FormatTestJava.cpp

index 8538f9a460114800759567f16fc7d762ee229ac6..5f55e0daa06d2401156f2c86fc41a705d2e931b6 100644 (file)
@@ -766,7 +766,8 @@ void ContinuationIndenter::moveStatePastFakeLParens(LineState &State,
     //       ParameterToInnerFunction));
     if (*I > prec::Unknown)
       NewParenState.LastSpace = std::max(NewParenState.LastSpace, State.Column);
-    NewParenState.StartOfFunctionCall = State.Column;
+    if (*I != prec::Conditional)
+      NewParenState.StartOfFunctionCall = State.Column;
 
     // Always indent conditional expressions. Never indent expression where
     // the 'operator' is ',', ';' or an assignment (i.e. *I <=
index 91b38ad758890c8931d2efb11fbc01b73601e6c0..6f7e43f325ce58a0db668d8bc880411c38be9b4a 100644 (file)
@@ -373,6 +373,11 @@ TEST_F(FormatTestJava, NeverAlignAfterReturn) {
                "    .bbbbbbbbbbbbbbbbbbb()\n"
                "    .ccccccccccccccccccc();",
                getStyleWithColumns(40));
+  verifyFormat("return aaaaaaaaaaaaaaaaaaa()\n"
+               "    .bbbbbbbbbbbbbbbbbbb(\n"
+               "         ccccccccccccccc)\n"
+               "    .ccccccccccccccccccc();",
+               getStyleWithColumns(40));
 }
 
 TEST_F(FormatTestJava, FormatsInnerBlocks) {