forked from OSchip/llvm-project
Fix comment alignment behavior.
In the following snippet, clang-format incorrectly aligned the trailing comment, when only the last line was formatted: int aaaaaa; // comment int b; int c; // Formatting only this line moved this comment. llvm-svn: 180173
This commit is contained in:
parent
f759989bcd
commit
770eb7c5f9
|
@ -1069,6 +1069,8 @@ public:
|
|||
if (TheLine.Last->is(tok::comment))
|
||||
Whitespaces.addUntouchableComment(SourceMgr.getSpellingColumnNumber(
|
||||
TheLine.Last->FormatTok.Tok.getLocation()) - 1);
|
||||
else
|
||||
Whitespaces.alignComments();
|
||||
}
|
||||
PreviousLineLastToken = I->Last;
|
||||
}
|
||||
|
|
|
@ -66,6 +66,9 @@ public:
|
|||
|
||||
void addUntouchableComment(unsigned Column);
|
||||
|
||||
/// \brief Try to align all stashed comments.
|
||||
void alignComments();
|
||||
|
||||
private:
|
||||
std::string getNewLineText(unsigned NewLines, unsigned Spaces);
|
||||
|
||||
|
@ -84,9 +87,6 @@ private:
|
|||
SmallVector<StoredComment, 16> Comments;
|
||||
typedef SmallVector<StoredComment, 16>::iterator comment_iterator;
|
||||
|
||||
/// \brief Try to align all stashed comments.
|
||||
void alignComments();
|
||||
|
||||
/// \brief Put all the comments between \p I and \p E into \p Column.
|
||||
void alignComments(comment_iterator I, comment_iterator E, unsigned Column);
|
||||
|
||||
|
|
|
@ -621,6 +621,13 @@ TEST_F(FormatTest, CanFormatCommentsLocally) {
|
|||
" // line 2\n"
|
||||
"int b;",
|
||||
28, 0, getLLVMStyle()));
|
||||
EXPECT_EQ("int aaaaaa; // comment\n"
|
||||
"int b;\n"
|
||||
"int c; // unrelated comment",
|
||||
format("int aaaaaa; // comment\n"
|
||||
"int b;\n"
|
||||
"int c; // unrelated comment",
|
||||
31, 0, getLLVMStyle()));
|
||||
}
|
||||
|
||||
TEST_F(FormatTest, RemovesTrailingWhitespaceOfComments) {
|
||||
|
|
Loading…
Reference in New Issue