From: Daniel Jasper Date: Fri, 18 Jan 2013 09:19:33 +0000 (+0000) Subject: Also align trailing line comments in include directives. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7d1185de4405637094d64f960f2b6d01f8bce04e;p=clang Also align trailing line comments in include directives. Before: #include // for x #include // for yz After: #include // for x #include // for yz git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172799 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp index 39d70d3e5a..50df593d85 100644 --- a/lib/Format/Format.cpp +++ b/lib/Format/Format.cpp @@ -350,13 +350,15 @@ public: // Start iterating at 1 as we have correctly formatted of Token #0 above. while (State.NextToken != NULL) { - if (State.NextToken->Type == TT_ImplicitStringLiteral) - // We will not touch the rest of the white space in this - // \c UnwrappedLine. The returned value can also not matter, as we - // cannot continue an top-level implicit string literal on the next - // line. - return 0; - if (Line.Last->TotalLength <= getColumnLimit() - FirstIndent) { + if (State.NextToken->Type == TT_ImplicitStringLiteral) { + // Calculating the column is important for aligning trailing comments. + // FIXME: This does not seem to happen in conjunction with escaped + // newlines. If it does, fix! + State.Column += State.NextToken->FormatTok.WhiteSpaceLength + + State.NextToken->FormatTok.TokenLength; + State.NextToken = State.NextToken->Children.empty() ? NULL : + &State.NextToken->Children[0]; + } else if (Line.Last->TotalLength <= getColumnLimit() - FirstIndent) { addTokenToState(false, false, State); } else { unsigned NoBreak = calcPenalty(State, false, UINT_MAX); @@ -1096,7 +1098,9 @@ public: if (CurrentToken != NULL && CurrentToken->is(tok::less)) { next(); while (CurrentToken != NULL) { - CurrentToken->Type = TT_ImplicitStringLiteral; + if (CurrentToken->isNot(tok::comment) || + !CurrentToken->Children.empty()) + CurrentToken->Type = TT_ImplicitStringLiteral; next(); } } else { diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index 7013eb1417..51904d7d3f 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -386,7 +386,10 @@ TEST_F(FormatTest, UnderstandsSingleLineComments) { "int bbbbbbbbbbbbbbbbbbbbb; // comment\n" "int ccccccccccccccccccc; // comment"); - + verifyFormat("#include \"a\" // comment\n" + "#include \"a/b/c\" // comment"); + verifyFormat("#include // comment\n" + "#include // comment"); verifyFormat("enum E {\n" " // comment\n"