diff --git a/clang/lib/Format/WhitespaceManager.cpp b/clang/lib/Format/WhitespaceManager.cpp --- a/clang/lib/Format/WhitespaceManager.cpp +++ b/clang/lib/Format/WhitespaceManager.cpp @@ -1079,13 +1079,15 @@ // So in here we want to see if there is a brace that falls // on a line that was split. If so on that line we make sure that // the spaces in front of the brace are enough. - Changes[CellIter->Index].NewlinesBefore = 0; - Changes[CellIter->Index].Spaces = 0; - for (const auto *Next = CellIter->NextColumnElement; Next != nullptr; - Next = Next->NextColumnElement) { - Changes[Next->Index].Spaces = 0; - Changes[Next->Index].NewlinesBefore = 0; - } + const auto *Next = CellIter; + do { + const FormatToken *Previous = Changes[Next->Index].Tok->Previous; + if (Previous && Previous->isNot(TT_LineComment)) { + Changes[Next->Index].Spaces = 0; + Changes[Next->Index].NewlinesBefore = 0; + } + Next = Next->NextColumnElement; + } while (Next); // Unless the array is empty, we need the position of all the // immediately adjacent cells if (CellIter != Cells.begin()) { diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -19176,6 +19176,14 @@ " {init1, init2, init3, init4}}\n" "};", Style); + // TODO: Fix the indentations below when this option is fully functional. + verifyFormat("int a[][] = {\n" + " {\n" + " {0, 2}, //\n" + " {1, 2} //\n" + " }\n" + "};", + Style); Style.ColumnLimit = 100; EXPECT_EQ( "test demo[] = {\n"