diff options
| author | Krasimir Georgiev <krasimir@google.com> | 2017-02-01 10:10:04 +0000 |
|---|---|---|
| committer | Krasimir Georgiev <krasimir@google.com> | 2017-02-01 10:10:04 +0000 |
| commit | 13dbaa09e56875965b0396c462048cb7a758cc6f (patch) | |
| tree | 57fc2e68c9a0278881463d5fe22b4ebe957cc974 /clang/lib/Format/BreakableToken.cpp | |
| parent | acd40b563a3f6d15b3ce727a9cee5f6de68e61cb (diff) | |
| download | bcm5719-llvm-13dbaa09e56875965b0396c462048cb7a758cc6f.tar.gz bcm5719-llvm-13dbaa09e56875965b0396c462048cb7a758cc6f.zip | |
[clang-format] Fix regression about not aligning trailing comments in case they were previously aligned, but at different indent.
Summary:
Comment reflower was adding untouchable tokens in case two consecutive comment lines are aligned in the source code. This disallows the whitespace manager to re-indent them later.
source:
```
int i = f(abc, // line 1
d, // line 2
// line 3
b);
```
Since line 2 and line 3 are aligned, the reflower was marking line 3 as untouchable; however the three comment lines need to be re-aligned.
output before:
```
int i = f(abc, // line 1
d, // line 2
// line 3
b);
```
output after:
```
int i = f(abc, // line 1
d, // line 2
// line 3
b);
```
Reviewers: djasper
Reviewed By: djasper
Subscribers: sammccall, cfe-commits, klimek
Differential Revision: https://reviews.llvm.org/D29383
llvm-svn: 293755
Diffstat (limited to 'clang/lib/Format/BreakableToken.cpp')
| -rw-r--r-- | clang/lib/Format/BreakableToken.cpp | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/clang/lib/Format/BreakableToken.cpp b/clang/lib/Format/BreakableToken.cpp index 148656080d3..0141e2381db 100644 --- a/clang/lib/Format/BreakableToken.cpp +++ b/clang/lib/Format/BreakableToken.cpp @@ -803,18 +803,16 @@ void BreakableLineCommentSection::replaceWhitespaceBefore( ContentColumn[LineIndex] - (Content[LineIndex].data() - Lines[LineIndex].data()) + (OriginalPrefix[LineIndex].size() - Prefix[LineIndex].size()); - if (tokenAt(LineIndex).OriginalColumn != LineColumn) { - Whitespaces.replaceWhitespace(*Tokens[LineIndex], - /*Newlines=*/1, - /*Spaces=*/LineColumn, - /*StartOfTokenColumn=*/LineColumn, - /*InPPDirective=*/false); - } else { - // The whitespace preceding the first line of this token does not need - // to be touched. - Whitespaces.addUntouchableToken(tokenAt(LineIndex), - /*InPPDirective=*/false); - } + + // We always want to create a replacement instead of adding an untouchable + // token, even if LineColumn is the same as the original column of the + // token. This is because WhitespaceManager doesn't align trailing + // comments if they are untouchable. + Whitespaces.replaceWhitespace(*Tokens[LineIndex], + /*Newlines=*/1, + /*Spaces=*/LineColumn, + /*StartOfTokenColumn=*/LineColumn, + /*InPPDirective=*/false); } } if (OriginalPrefix[LineIndex] != Prefix[LineIndex]) { |

