]> granicus.if.org Git - clang/commit
[clang-format] Fix alignment of preprocessor trailing comments
authorKrasimir Georgiev <krasimir@google.com>
Wed, 7 Jun 2017 14:05:06 +0000 (14:05 +0000)
committerKrasimir Georgiev <krasimir@google.com>
Wed, 7 Jun 2017 14:05:06 +0000 (14:05 +0000)
commit942d6e44a9b0776d249bfe54571e9233e39a804b
tree9476f2024770f08aadbfe26a4009e8c45156e0d8
parentce80f8d2fed284d2263624b629af13c0d47aff59
[clang-format] Fix alignment of preprocessor trailing comments

Summary:
This patch is a follow-up of https://reviews.llvm.org/rL304687, which fixed an
overflow in the comment alignment code in clang-format. The token length of
trailing comments of preprocessor directives is calculated incorrectly by
including the text between consecutive directives. That causes them to not being
aligned.

For example, in this code with column limit 20
```
#if A
#else  // A
int iiii;
#endif // B
```
the length of the token `// A` was wrongly calculated as 14 = 5 (the size of `// A\n`) plus 9 (the size of `int iiii;`) and so `// A` wouldn't be aligned with `// B` and this was produced:
```
#if A
#else // A
int iiii;
#endif // B
```

This patch fixes this case.

Reviewers: alexfh

Reviewed By: alexfh

Subscribers: cfe-commits, klimek

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

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@304912 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Format/WhitespaceManager.cpp
unittests/Format/FormatTestComments.cpp