ValueFlow: Clarify note when impossible value is assigned (#10297)

This commit is contained in:
Daniel Marjamäki 2021-06-24 17:10:06 +02:00
parent 79f59d8f39
commit 769b20b426
2 changed files with 13 additions and 4 deletions

View File

@ -4086,7 +4086,16 @@ static void valueFlowForwardAssign(Token* const tok,
values.remove_if(std::mem_fn(&ValueFlow::Value::isTokValue)); values.remove_if(std::mem_fn(&ValueFlow::Value::isTokValue));
if (tok->astParent()) { if (tok->astParent()) {
for (ValueFlow::Value& value : values) { for (ValueFlow::Value& value : values) {
const std::string info = "Assignment '" + tok->astParent()->expressionString() + "', assigned value is " + value.infoString(); std::string valueKind;
if (value.valueKind == ValueFlow::Value::ValueKind::Impossible) {
if (value.bound == ValueFlow::Value::Bound::Point)
valueKind = "never ";
else if (value.bound == ValueFlow::Value::Bound::Lower)
valueKind = "less than ";
else if (value.bound == ValueFlow::Value::Bound::Upper)
valueKind = "greater than ";
}
const std::string info = "Assignment '" + tok->astParent()->expressionString() + "', assigned value is " + valueKind + value.infoString();
value.errorPath.emplace_back(tok, info); value.errorPath.emplace_back(tok, info);
} }
} }