[clang] 81793bd - [clang-format] Assert Line->First and State.NextToken->Previous. NFC.
Marek Kurdej via cfe-commits
cfe-commits at lists.llvm.org
Mon Jan 24 00:37:29 PST 2022
Author: Marek Kurdej
Date: 2022-01-24T09:36:46+01:00
New Revision: 81793bd276afefea0e525307676181478fc614c9
URL: https://github.com/llvm/llvm-project/commit/81793bd276afefea0e525307676181478fc614c9
DIFF: https://github.com/llvm/llvm-project/commit/81793bd276afefea0e525307676181478fc614c9.diff
LOG: [clang-format] Assert Line->First and State.NextToken->Previous. NFC.
Cf. scan-build reports:
* https://llvm.org/reports/scan-build/report-FormatToken.cpp-precomputeFormattingInfos-35-93e1e1.html#EndPath
* https://llvm.org/reports/scan-build/report-ContinuationIndenter.cpp-addTokenOnCurrentLine-15-dfdc6d.html#EndPath
Added:
Modified:
clang/lib/Format/ContinuationIndenter.cpp
clang/lib/Format/FormatToken.cpp
Removed:
################################################################################
diff --git a/clang/lib/Format/ContinuationIndenter.cpp b/clang/lib/Format/ContinuationIndenter.cpp
index 28f13c06e308..b66584652bc8 100644
--- a/clang/lib/Format/ContinuationIndenter.cpp
+++ b/clang/lib/Format/ContinuationIndenter.cpp
@@ -543,13 +543,15 @@ unsigned ContinuationIndenter::addTokenToState(LineState &State, bool Newline,
bool DryRun,
unsigned ExtraSpaces) {
const FormatToken &Current = *State.NextToken;
+ assert(State.NextToken->Previous);
+ const FormatToken &Previous = *State.NextToken->Previous;
assert(!State.Stack.empty());
State.NoContinuation = false;
if ((Current.is(TT_ImplicitStringLiteral) &&
- (Current.Previous->Tok.getIdentifierInfo() == nullptr ||
- Current.Previous->Tok.getIdentifierInfo()->getPPKeywordID() ==
+ (Previous.Tok.getIdentifierInfo() == nullptr ||
+ Previous.Tok.getIdentifierInfo()->getPPKeywordID() ==
tok::pp_not_keyword))) {
unsigned EndColumn =
SourceMgr.getSpellingColumnNumber(Current.WhitespaceRange.getEnd());
@@ -579,7 +581,9 @@ unsigned ContinuationIndenter::addTokenToState(LineState &State, bool Newline,
void ContinuationIndenter::addTokenOnCurrentLine(LineState &State, bool DryRun,
unsigned ExtraSpaces) {
FormatToken &Current = *State.NextToken;
+ assert(State.NextToken->Previous);
const FormatToken &Previous = *State.NextToken->Previous;
+
if (Current.is(tok::equal) &&
(State.Line->First->is(tok::kw_for) || Current.NestingLevel == 0) &&
State.Stack.back().VariablePos == 0) {
@@ -775,6 +779,7 @@ void ContinuationIndenter::addTokenOnCurrentLine(LineState &State, bool DryRun,
unsigned ContinuationIndenter::addTokenOnNewLine(LineState &State,
bool DryRun) {
FormatToken &Current = *State.NextToken;
+ assert(State.NextToken->Previous);
const FormatToken &Previous = *State.NextToken->Previous;
// Extra penalty that needs to be added because of the way certain line
diff --git a/clang/lib/Format/FormatToken.cpp b/clang/lib/Format/FormatToken.cpp
index def5663d0449..59d6f29bb54d 100644
--- a/clang/lib/Format/FormatToken.cpp
+++ b/clang/lib/Format/FormatToken.cpp
@@ -189,6 +189,7 @@ void CommaSeparatedList::precomputeFormattingInfos(const FormatToken *Token) {
bool HasSeparatingComment = false;
for (unsigned i = 0, e = Commas.size() + 1; i != e; ++i) {
+ assert(ItemBegin);
// Skip comments on their own line.
while (ItemBegin->HasUnescapedNewline && ItemBegin->isTrailingComment()) {
ItemBegin = ItemBegin->Next;
More information about the cfe-commits
mailing list