Skip to content

Commit b7360ce

Browse files
authored
changed most Settings pointers to references (#6298)
1 parent 047b608 commit b7360ce

35 files changed

Lines changed: 498 additions & 494 deletions

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -583,7 +583,7 @@ $(libcppdir)/errortypes.o: lib/errortypes.cpp lib/config.h lib/errortypes.h lib/
583583
$(libcppdir)/forwardanalyzer.o: lib/forwardanalyzer.cpp lib/addoninfo.h lib/analyzer.h lib/astutils.h lib/color.h lib/config.h lib/errorlogger.h lib/errortypes.h lib/forwardanalyzer.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/smallvector.h lib/sourcelocation.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/token.h lib/tokenlist.h lib/utils.h lib/valueptr.h lib/vfvalue.h
584584
$(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $(libcppdir)/forwardanalyzer.cpp
585585

586-
$(libcppdir)/fwdanalysis.o: lib/fwdanalysis.cpp lib/astutils.h lib/config.h lib/errortypes.h lib/fwdanalysis.h lib/library.h lib/mathlib.h lib/smallvector.h lib/sourcelocation.h lib/standards.h lib/symboldatabase.h lib/templatesimplifier.h lib/token.h lib/utils.h lib/vfvalue.h
586+
$(libcppdir)/fwdanalysis.o: lib/fwdanalysis.cpp lib/addoninfo.h lib/astutils.h lib/config.h lib/errortypes.h lib/fwdanalysis.h lib/library.h lib/mathlib.h lib/platform.h lib/settings.h lib/smallvector.h lib/sourcelocation.h lib/standards.h lib/suppressions.h lib/symboldatabase.h lib/templatesimplifier.h lib/token.h lib/utils.h lib/vfvalue.h
587587
$(CXX) ${INCLUDE_FOR_LIB} $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $(libcppdir)/fwdanalysis.cpp
588588

589589
$(libcppdir)/importproject.o: lib/importproject.cpp externals/picojson/picojson.h externals/tinyxml2/tinyxml2.h lib/addoninfo.h lib/config.h lib/errortypes.h lib/filesettings.h lib/importproject.h lib/json.h lib/library.h lib/mathlib.h lib/path.h lib/platform.h lib/settings.h lib/standards.h lib/suppressions.h lib/templatesimplifier.h lib/token.h lib/tokenlist.h lib/utils.h lib/vfvalue.h lib/xml.h

lib/astutils.cpp

Lines changed: 96 additions & 97 deletions
Large diffs are not rendered by default.

lib/astutils.h

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ const Token* getParentLifetime(const Token* tok);
212212
const Token* getParentLifetime(const Token* tok, const Library& library);
213213

214214
std::vector<ValueType> getParentValueTypes(const Token* tok,
215-
const Settings* settings = nullptr,
215+
const Settings& settings,
216216
const Token** parent = nullptr);
217217

218218
bool astIsLHS(const Token* tok);
@@ -262,7 +262,7 @@ SmallVector<ReferenceToken> followAllReferences(const Token* tok,
262262
int depth = 20);
263263
const Token* followReferences(const Token* tok, ErrorPath* errors = nullptr);
264264

265-
CPPCHECKLIB bool isSameExpression(bool macro, const Token *tok1, const Token *tok2, const Library& library, bool pure, bool followVar, ErrorPath* errors=nullptr);
265+
CPPCHECKLIB bool isSameExpression(bool macro, const Token *tok1, const Token *tok2, const Settings& settings, bool pure, bool followVar, ErrorPath* errors=nullptr);
266266

267267
bool isEqualKnownValue(const Token * const tok1, const Token * const tok2);
268268

@@ -273,7 +273,7 @@ const Token* isInLoopCondition(const Token* tok);
273273
/**
274274
* Is token used as boolean, that is to say cast to a bool, or used as a condition in a if/while/for
275275
*/
276-
CPPCHECKLIB bool isUsedAsBool(const Token* const tok, const Settings* settings = nullptr);
276+
CPPCHECKLIB bool isUsedAsBool(const Token* const tok, const Settings& settings);
277277

278278
/**
279279
* Are the tokens' flags equal?
@@ -285,12 +285,12 @@ bool compareTokenFlags(const Token* tok1, const Token* tok2, bool macro);
285285
* @param isNot do you want to know if cond1 is !cond2 or if cond1 and cond2 are non-overlapping. true: cond1==!cond2 false: cond1==true => cond2==false
286286
* @param cond1 condition1
287287
* @param cond2 condition2
288-
* @param library files data
288+
* @param settings settings
289289
* @param pure boolean
290290
*/
291-
bool isOppositeCond(bool isNot, const Token * const cond1, const Token * const cond2, const Library& library, bool pure, bool followVar, ErrorPath* errors=nullptr);
291+
bool isOppositeCond(bool isNot, const Token * const cond1, const Token * const cond2, const Settings& settings, bool pure, bool followVar, ErrorPath* errors=nullptr);
292292

293-
bool isOppositeExpression(const Token * const tok1, const Token * const tok2, const Library& library, bool pure, bool followVar, ErrorPath* errors=nullptr);
293+
bool isOppositeExpression(const Token * const tok1, const Token * const tok2, const Settings& settings, bool pure, bool followVar, ErrorPath* errors=nullptr);
294294

295295
bool isConstFunctionCall(const Token* ftok, const Library& library);
296296

@@ -328,7 +328,7 @@ std::vector<const Variable*> getArgumentVars(const Token* tok, int argnr);
328328
* @param settings program settings
329329
* @param inconclusive pointer to output variable which indicates that the answer of the question is inconclusive
330330
*/
331-
bool isVariableChangedByFunctionCall(const Token *tok, int indirect, nonneg int varid, const Settings *settings, bool *inconclusive);
331+
bool isVariableChangedByFunctionCall(const Token *tok, int indirect, nonneg int varid, const Settings &settings, bool *inconclusive);
332332

333333
/** Is variable changed by function call?
334334
* In case the answer of the question is inconclusive, e.g. because the function declaration is not known
@@ -338,46 +338,45 @@ bool isVariableChangedByFunctionCall(const Token *tok, int indirect, nonneg int
338338
* @param settings program settings
339339
* @param inconclusive pointer to output variable which indicates that the answer of the question is inconclusive
340340
*/
341-
CPPCHECKLIB bool isVariableChangedByFunctionCall(const Token *tok, int indirect, const Settings *settings, bool *inconclusive);
341+
CPPCHECKLIB bool isVariableChangedByFunctionCall(const Token *tok, int indirect, const Settings &settings, bool *inconclusive);
342342

343343
/** Is variable changed in block of code? */
344-
CPPCHECKLIB bool isVariableChanged(const Token *start, const Token *end, const nonneg int exprid, bool globalvar, const Settings *settings, int depth = 20);
345-
bool isVariableChanged(const Token *start, const Token *end, int indirect, const nonneg int exprid, bool globalvar, const Settings *settings, int depth = 20);
344+
CPPCHECKLIB bool isVariableChanged(const Token *start, const Token *end, const nonneg int exprid, bool globalvar, const Settings &settings, int depth = 20);
345+
bool isVariableChanged(const Token *start, const Token *end, int indirect, const nonneg int exprid, bool globalvar, const Settings &settings, int depth = 20);
346346

347-
bool isVariableChanged(const Token *tok, int indirect, const Settings *settings, int depth = 20);
347+
bool isVariableChanged(const Token *tok, int indirect, const Settings &settings, int depth = 20);
348348

349-
bool isVariableChanged(const Variable * var, const Settings *settings, int depth = 20);
349+
bool isVariableChanged(const Variable * var, const Settings &settings, int depth = 20);
350350

351351
bool isVariablesChanged(const Token* start,
352352
const Token* end,
353353
int indirect,
354354
const std::vector<const Variable*> &vars,
355-
const Settings* settings);
355+
const Settings& settings);
356356

357-
bool isThisChanged(const Token* tok, int indirect, const Settings* settings);
358-
const Token* findThisChanged(const Token* start, const Token* end, int indirect, const Settings* settings);
357+
bool isThisChanged(const Token* tok, int indirect, const Settings& settings);
359358

360-
const Token* findVariableChanged(const Token *start, const Token *end, int indirect, const nonneg int exprid, bool globalvar, const Settings *settings, int depth = 20);
361-
Token* findVariableChanged(Token *start, const Token *end, int indirect, const nonneg int exprid, bool globalvar, const Settings *settings, int depth = 20);
359+
const Token* findVariableChanged(const Token *start, const Token *end, int indirect, const nonneg int exprid, bool globalvar, const Settings &settings, int depth = 20);
360+
Token* findVariableChanged(Token *start, const Token *end, int indirect, const nonneg int exprid, bool globalvar, const Settings &settings, int depth = 20);
362361

363362
CPPCHECKLIB const Token* findExpressionChanged(const Token* expr,
364363
const Token* start,
365364
const Token* end,
366-
const Settings* settings,
365+
const Settings& settings,
367366
int depth = 20);
368367

369368
const Token* findExpressionChangedSkipDeadCode(const Token* expr,
370369
const Token* start,
371370
const Token* end,
372-
const Settings* settings,
371+
const Settings& settings,
373372
const std::function<std::vector<MathLib::bigint>(const Token* tok)>& evaluate,
374373
int depth = 20);
375374

376375
bool isExpressionChangedAt(const Token* expr,
377376
const Token* tok,
378377
int indirect,
379378
bool globalvar,
380-
const Settings* settings,
379+
const Settings& settings,
381380
int depth = 20);
382381

383382
/// If token is an alias if another variable

lib/checkautovariables.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,10 @@ static bool isPtrArg(const Token *tok)
5555
return (var && var->isArgument() && var->isPointer());
5656
}
5757

58-
static bool isArrayArg(const Token *tok, const Settings* settings)
58+
static bool isArrayArg(const Token *tok, const Settings& settings)
5959
{
6060
const Variable *var = tok->variable();
61-
return (var && var->isArgument() && var->isArray() && !settings->library.isentrypoint(var->scope()->className));
61+
return (var && var->isArgument() && var->isArray() && !settings.library.isentrypoint(var->scope()->className));
6262
}
6363

6464
static bool isArrayVar(const Token *tok)
@@ -290,7 +290,7 @@ void CheckAutoVariables::autoVariables()
290290
checkAutoVariableAssignment(tok->next(), inconclusive);
291291
tok = tok->tokAt(5);
292292
} else if (Token::Match(tok, "[;{}] %var% [") && Token::simpleMatch(tok->linkAt(2), "] =") &&
293-
(isPtrArg(tok->next()) || isArrayArg(tok->next(), mSettings)) &&
293+
(isPtrArg(tok->next()) || isArrayArg(tok->next(), *mSettings)) &&
294294
isAutoVariableRHS(tok->linkAt(2)->next()->astOperand2())) {
295295
errorAutoVariableAssignment(tok->next(), false);
296296
}
@@ -553,7 +553,7 @@ void CheckAutoVariables::checkVarLifetimeScope(const Token * start, const Token
553553
for (const Token *tok = start; tok && tok != end; tok = tok->next()) {
554554
// Return reference from function
555555
if (returnRef && Token::simpleMatch(tok->astParent(), "return")) {
556-
for (const ValueFlow::LifetimeToken& lt : ValueFlow::getLifetimeTokens(tok, true)) {
556+
for (const ValueFlow::LifetimeToken& lt : ValueFlow::getLifetimeTokens(tok, *mSettings, true)) {
557557
if (!printInconclusive && lt.inconclusive)
558558
continue;
559559
const Variable* var = lt.token->variable();
@@ -573,14 +573,14 @@ void CheckAutoVariables::checkVarLifetimeScope(const Token * start, const Token
573573
tok->variable()->declarationId() == tok->varId() && tok->variable()->isStatic() &&
574574
!tok->variable()->isArgument()) {
575575
ErrorPath errorPath;
576-
const Variable *var = ValueFlow::getLifetimeVariable(tok, errorPath);
576+
const Variable *var = ValueFlow::getLifetimeVariable(tok, errorPath, *mSettings);
577577
if (var && isInScope(var->nameToken(), tok->scope())) {
578578
errorDanglingReference(tok, var, std::move(errorPath));
579579
continue;
580580
}
581581
// Reference to temporary
582582
} else if (tok->variable() && (tok->variable()->isReference() || tok->variable()->isRValueReference())) {
583-
for (const ValueFlow::LifetimeToken& lt : ValueFlow::getLifetimeTokens(getParentLifetime(tok))) {
583+
for (const ValueFlow::LifetimeToken& lt : ValueFlow::getLifetimeTokens(getParentLifetime(tok), *mSettings)) {
584584
if (!printInconclusive && lt.inconclusive)
585585
continue;
586586
const Token * tokvalue = lt.token;
@@ -601,7 +601,7 @@ void CheckAutoVariables::checkVarLifetimeScope(const Token * start, const Token
601601
const Token* parent = getParentLifetime(val.tokvalue, mSettings->library);
602602
if (!exprs.insert(parent).second)
603603
continue;
604-
for (const ValueFlow::LifetimeToken& lt : ValueFlow::getLifetimeTokens(parent, escape || isAssignedToNonLocal(tok))) {
604+
for (const ValueFlow::LifetimeToken& lt : ValueFlow::getLifetimeTokens(parent, *mSettings, escape || isAssignedToNonLocal(tok))) {
605605
const Token * tokvalue = lt.token;
606606
if (val.isLocalLifetimeValue()) {
607607
if (escape) {
@@ -650,7 +650,7 @@ void CheckAutoVariables::checkVarLifetimeScope(const Token * start, const Token
650650
tok->scope()->bodyEnd,
651651
var->declarationId(),
652652
var->isGlobal(),
653-
mSettings)) {
653+
*mSettings)) {
654654
errorDanglngLifetime(tok2, &val);
655655
break;
656656
}

lib/checkbool.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -379,13 +379,13 @@ void CheckBool::checkComparisonOfBoolExpressionWithInt()
379379
if (astIsBool(numTok))
380380
continue;
381381

382-
const ValueFlow::Value *minval = numTok->getValueLE(0, mSettings);
382+
const ValueFlow::Value *minval = numTok->getValueLE(0, *mSettings);
383383
if (minval && minval->intvalue == 0 &&
384384
(numInRhs ? Token::Match(tok, ">|==|!=")
385385
: Token::Match(tok, "<|==|!=")))
386386
minval = nullptr;
387387

388-
const ValueFlow::Value *maxval = numTok->getValueGE(1, mSettings);
388+
const ValueFlow::Value *maxval = numTok->getValueGE(1, *mSettings);
389389
if (maxval && maxval->intvalue == 1 &&
390390
(numInRhs ? Token::Match(tok, "<|==|!=")
391391
: Token::Match(tok, ">|==|!=")))
@@ -506,7 +506,7 @@ void CheckBool::returnValueOfFunctionReturningBool()
506506
else if (tok->scope() && tok->scope()->isClassOrStruct())
507507
tok = tok->scope()->bodyEnd;
508508
else if (Token::simpleMatch(tok, "return") && tok->astOperand1() &&
509-
(tok->astOperand1()->getValueGE(2, mSettings) || tok->astOperand1()->getValueLE(-1, mSettings)) &&
509+
(tok->astOperand1()->getValueGE(2, *mSettings) || tok->astOperand1()->getValueLE(-1, *mSettings)) &&
510510
!(tok->astOperand1()->astOperand1() && Token::Match(tok->astOperand1(), "&|%or%")))
511511
returnValueBoolError(tok);
512512
}

0 commit comments

Comments
 (0)