summaryrefslogtreecommitdiffstats
path: root/clang/lib/Format/BreakableToken.cpp
diff options
context:
space:
mode:
authorKrasimir Georgiev <krasimir@google.com>2017-02-01 10:10:04 +0000
committerKrasimir Georgiev <krasimir@google.com>2017-02-01 10:10:04 +0000
commit13dbaa09e56875965b0396c462048cb7a758cc6f (patch)
tree57fc2e68c9a0278881463d5fe22b4ebe957cc974 /clang/lib/Format/BreakableToken.cpp
parentacd40b563a3f6d15b3ce727a9cee5f6de68e61cb (diff)
downloadbcm5719-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.cpp22
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]) {
OpenPOWER on IntegriCloud