diff options
author | Owen Pan <owenpiano@gmail.com> | 2024-04-28 14:06:12 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-28 14:06:12 -0700 |
commit | aa596fa4d974f75ed8d2db3f4880ec0e5be3e176 (patch) | |
tree | e3d6ed11265771c9d5f22a8459d2486a2d424360 /clang/lib/Format/WhitespaceManager.cpp | |
parent | 9c1de620344b2518bb171be51066e1ec9a5be623 (diff) | |
download | llvm-aa596fa4d974f75ed8d2db3f4880ec0e5be3e176.zip llvm-aa596fa4d974f75ed8d2db3f4880ec0e5be3e176.tar.gz llvm-aa596fa4d974f75ed8d2db3f4880ec0e5be3e176.tar.bz2 |
[clang-format] Set Change.TokenLength to ColumnWidth (#90378)
Fixes #37705.
Fixes #47333.
Fixes #47624.
Fixes #58850.
Fixes #75929.
Fixes #87885.
Fixes #89916.
Diffstat (limited to 'clang/lib/Format/WhitespaceManager.cpp')
-rw-r--r-- | clang/lib/Format/WhitespaceManager.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/clang/lib/Format/WhitespaceManager.cpp b/clang/lib/Format/WhitespaceManager.cpp index cc9bcce..44fd807 100644 --- a/clang/lib/Format/WhitespaceManager.cpp +++ b/clang/lib/Format/WhitespaceManager.cpp @@ -131,6 +131,7 @@ void WhitespaceManager::calculateLineBreakInformation() { for (unsigned I = 1, e = Changes.size(); I != e; ++I) { auto &C = Changes[I]; auto &P = Changes[I - 1]; + auto &PrevTokLength = P.TokenLength; SourceLocation OriginalWhitespaceStart = C.OriginalWhitespaceRange.getBegin(); SourceLocation PreviousOriginalWhitespaceEnd = @@ -169,21 +170,23 @@ void WhitespaceManager::calculateLineBreakInformation() { // line of the token. auto NewlinePos = Text.find_first_of('\n'); if (NewlinePos == StringRef::npos) { - P.TokenLength = OriginalWhitespaceStartOffset - + PrevTokLength = OriginalWhitespaceStartOffset - PreviousOriginalWhitespaceEndOffset + C.PreviousLinePostfix.size() + P.CurrentLinePrefix.size(); + if (!P.IsInsideToken) + PrevTokLength = std::min(PrevTokLength, P.Tok->ColumnWidth); } else { - P.TokenLength = NewlinePos + P.CurrentLinePrefix.size(); + PrevTokLength = NewlinePos + P.CurrentLinePrefix.size(); } // If there are multiple changes in this token, sum up all the changes until // the end of the line. if (P.IsInsideToken && P.NewlinesBefore == 0) - LastOutsideTokenChange->TokenLength += P.TokenLength + P.Spaces; + LastOutsideTokenChange->TokenLength += PrevTokLength + P.Spaces; else LastOutsideTokenChange = &P; - C.PreviousEndOfTokenColumn = P.StartOfTokenColumn + P.TokenLength; + C.PreviousEndOfTokenColumn = P.StartOfTokenColumn + PrevTokLength; P.IsTrailingComment = (C.NewlinesBefore > 0 || C.Tok->is(tok::eof) || |