[clang-format] Handle trailing comment sections in import statement lines
authorKrasimir Georgiev <krasimir@google.com>
Fri, 19 May 2017 10:34:57 +0000 (10:34 +0000)
committerKrasimir Georgiev <krasimir@google.com>
Fri, 19 May 2017 10:34:57 +0000 (10:34 +0000)
commita1c30937ce2a5c0ad052013234d869a3decd47a6
tree0fb3a9b6269196672ad892ee915ceb05c6c4ac28
parent76f938692fe4b4991087e083dbdbdc40a2352ebf
[clang-format] Handle trailing comment sections in import statement lines

Summary:
This patch updates the handling of multiline trailing comment sections in
import statement lines to make it more consistent with the case in general.
This includes updating the parsing logic to collect the trailing comment
sections and the formatting logic to not insert escaped newlines at the end of
comment lines in import statement lines.

Specifically, before this patch this code:
```
#include <a> // line 1
             // line 2
```
will be turned into two unwrapped lines, whereas this code:
```
int i; // line 1
       // line 2
```
is turned into a single unwrapped line, enabling reflowing across comments.

An example where the old behaviour is bad is when partially formatting the lines
3 to 4 of this code:
```
#include <a> // line 1
             // line 2

int i;
```
which gets turned into:
```
#include <a> // line 1
             // line 2

             int i;
```
because the two comment lines were independent and the indent was copied.

Reviewers: djasper

Reviewed By: djasper

Subscribers: cfe-commits, klimek

Differential Revision: https://reviews.llvm.org/D33351

llvm-svn: 303415
clang/lib/Format/ContinuationIndenter.cpp
clang/lib/Format/TokenAnnotator.cpp
clang/lib/Format/UnwrappedLineParser.cpp
clang/unittests/Format/FormatTestSelective.cpp