Fixed #4019 (false positive: (style) Variable 'dest' is assigned a value that is never used)
This commit is contained in:
parent
1601baa974
commit
6a5cc4727d
|
@ -4156,7 +4156,7 @@ void Tokenizer::simplifyConditionOperator()
|
||||||
bool isReturn = false;
|
bool isReturn = false;
|
||||||
if (tok->next()->str() == "*") {
|
if (tok->next()->str() == "*") {
|
||||||
tok = tok->next();
|
tok = tok->next();
|
||||||
var += " " + tok->next()->str();
|
var = tok->next()->str();
|
||||||
isPointer = true;
|
isPointer = true;
|
||||||
} else if (tok->next()->str() == "return") {
|
} else if (tok->next()->str() == "return") {
|
||||||
isReturn = true;
|
isReturn = true;
|
||||||
|
@ -4189,10 +4189,17 @@ void Tokenizer::simplifyConditionOperator()
|
||||||
if (isReturn)
|
if (isReturn)
|
||||||
str = "if ( condition ) { return value1 ; } return value2 ;";
|
str = "if ( condition ) { return value1 ; } return value2 ;";
|
||||||
else
|
else
|
||||||
str = "if ( condition ) { var = value1 ; } else { var = value2 ; }";
|
str = "if ( condition ) { * var = value1 ; } else { * var = value2 ; }";
|
||||||
|
|
||||||
std::string::size_type pos1 = 0;
|
std::string::size_type pos1 = 0;
|
||||||
while (pos1 != std::string::npos) {
|
while (pos1 != std::string::npos) {
|
||||||
|
if (str[pos1] == '*') {
|
||||||
|
pos1 += 2;
|
||||||
|
if (isPointer) {
|
||||||
|
tok->insertToken("*");
|
||||||
|
tok = tok->next();
|
||||||
|
}
|
||||||
|
}
|
||||||
std::string::size_type pos2 = str.find(" ", pos1);
|
std::string::size_type pos2 = str.find(" ", pos1);
|
||||||
if (pos2 == std::string::npos) {
|
if (pos2 == std::string::npos) {
|
||||||
tok->insertToken(str.substr(pos1));
|
tok->insertToken(str.substr(pos1));
|
||||||
|
|
|
@ -457,6 +457,21 @@ private:
|
||||||
return tokenizer.tokens()->stringifyList(0, false);
|
return tokenizer.tokens()->stringifyList(0, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string tokenizeDebugListing(const std::string &code, bool simplify = false, const char filename[] = "test.cpp") {
|
||||||
|
errout.str("");
|
||||||
|
|
||||||
|
Settings settings;
|
||||||
|
|
||||||
|
Tokenizer tokenizer(&settings, this);
|
||||||
|
std::istringstream istr(code);
|
||||||
|
tokenizer.tokenize(istr, filename);
|
||||||
|
|
||||||
|
if (simplify)
|
||||||
|
tokenizer.simplifyTokenList();
|
||||||
|
|
||||||
|
// result..
|
||||||
|
return tokenizer.tokens()->stringifyList(true);
|
||||||
|
}
|
||||||
|
|
||||||
void simplifyTokenList1() {
|
void simplifyTokenList1() {
|
||||||
// #1717 : The simplifyErrNoInWhile needs to be used before simplifyIfAssign..
|
// #1717 : The simplifyErrNoInWhile needs to be used before simplifyIfAssign..
|
||||||
|
@ -2769,6 +2784,14 @@ private:
|
||||||
}
|
}
|
||||||
// Ticket #3572 (segmentation fault)
|
// Ticket #3572 (segmentation fault)
|
||||||
ASSERT_EQUALS("0 ; x = { ? y : z ; }", tok("0; x = { ? y : z; }"));
|
ASSERT_EQUALS("0 ; x = { ? y : z ; }", tok("0; x = { ? y : z; }"));
|
||||||
|
|
||||||
|
{
|
||||||
|
// #4019 - varid
|
||||||
|
const char code[] = "; char *p; *p = a ? 1 : 0;";
|
||||||
|
const char expected[] = "\n\n##file 0\n"
|
||||||
|
"1: ; char * p@1 ; if ( a ) { * p@1 = 1 ; } else { * p@1 = 0 ; }\n";
|
||||||
|
ASSERT_EQUALS(expected, tokenizeDebugListing(code, true));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void calculations() {
|
void calculations() {
|
||||||
|
|
Loading…
Reference in New Issue