Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions lib/checkunusedvar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1198,6 +1198,7 @@ void CheckUnusedVar::checkFunctionVariableUsage()
const Token *nextStructuredBindingTok = nullptr;
std::vector<std::pair<const Token*, const Token*>> unusedStructuredBindingTokens;
size_t structuredBindingTokCount = 0;
std::set<const Variable*> diagUnreadVariable; // prevent duplicate warnings

for (const Token *tok = scope->bodyStart; tok != scope->bodyEnd; tok = tok->next()) {
if (nextStructuredBindingTok) {
Expand Down Expand Up @@ -1366,8 +1367,10 @@ void CheckUnusedVar::checkFunctionVariableUsage()
if (!expr->variable() || !expr->variable()->isMaybeUnused()) {
if (structuredBindingTokCount > 0)
unusedStructuredBindingTokens.emplace_back(tok, expr);
else
else {
unreadVariableError(tok, expr->expressionString(), false);
diagUnreadVariable.emplace(expr->variable());
}
}
}
}
Expand Down Expand Up @@ -1420,7 +1423,7 @@ void CheckUnusedVar::checkFunctionVariableUsage()
!(var->valueType() && var->valueType()->container) &&
!(var->isStatic() && isReturnedByRef(var, scope->function)))
unassignedVariableError(usage._var->nameToken(), varname);
else if (!usage._var->isMaybeUnused() && !usage._modified && !usage._read && var) {
else if (!usage._var->isMaybeUnused() && !usage._modified && !usage._read && var && diagUnreadVariable.find(usage._var) == diagUnreadVariable.end()) {
Comment thread
chrchr-github marked this conversation as resolved.
Outdated
const Token* vnt = var->nameToken();
bool error = false;
if (vnt->next()->isSplittedVarDeclEq() || (!var->isReference() && vnt->strAt(1) == "=")) {
Expand Down
3 changes: 0 additions & 3 deletions samples/unreadVariable/out.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
samples\unreadVariable\bad.cpp:5:34: style: Variable 's2' is assigned a value that is never used. [unreadVariable]
std::string s1 = "test1", s2 = "test2";
^
samples\unreadVariable\bad.cpp:5:31: style: Variable 's2' is assigned a value that is never used. [unreadVariable]
std::string s1 = "test1", s2 = "test2";
^
Loading
Loading