clang-format: Properly indent ObjC calls wrapped before first selector

Before:
  [self // break
      a:a
     aa:aa
  aaaaa:aaa];

After:
  [self // break
          a:a
         aa:aa
      aaaaa:aaa];

llvm-svn: 194241
This commit is contained in:
Daniel Jasper 2013-11-08 02:08:01 +00:00
parent c8f7fd10a9
commit b302f9a0fb
2 changed files with 8 additions and 1 deletions

View File

@ -375,7 +375,11 @@ unsigned ContinuationIndenter::addTokenOnNewLine(LineState &State,
State.Line->StartsDefinition))) {
State.Column = State.Stack.back().Indent;
} else if (Current.Type == TT_ObjCSelectorName) {
if (State.Stack.back().ColonPos > Current.ColumnWidth) {
if (State.Stack.back().ColonPos == 0) {
State.Stack.back().ColonPos =
State.Stack.back().Indent + Current.LongestObjCSelectorName;
State.Column = State.Stack.back().ColonPos - Current.ColumnWidth;
} else if (State.Stack.back().ColonPos > Current.ColumnWidth) {
State.Column = State.Stack.back().ColonPos - Current.ColumnWidth;
} else {
State.Column = State.Stack.back().Indent;

View File

@ -5474,6 +5474,9 @@ TEST_F(FormatTest, FormatObjCMethodExpr) {
"[self aaaaaaaaaaaaa:aaaaaaaaaaaaaaa, aaaaaaaaaaaaaaa, aaaaaaaaaaaaaaa,\n"
" aaaaaaaaaaaaaaa, aaaaaaaaaaaaaaa, aaaaaaaaaaaaaaa,\n"
" aaaaaaaaaaaaaaa, aaaaaaaaaaaaaaa];");
verifyFormat("[self // break\n"
" a:a\n"
" aaa:aaa];");
}
TEST_F(FormatTest, ObjCAt) {