53 return std::make_pair(tok->
values().front().intvalue, !tok->
values().front().intvalue);
56 return v.isIntValue();
61 return v.intvalue == it->intvalue;
65 return std::make_pair(it->intvalue, !it->intvalue);
67 return std::make_pair(
true,
true);
103 const Token * blockStart = tok->
link()->linkAt(-1)->previous();
107 info.
errorPath.emplace_back(condTok,
"Assuming condition is true.");
111 bool traverseLoop =
true;
114 traverseLoop =
false;
137 i.
errorPath.emplace_back(condTok,
"Assuming condition is true.");
140 bool checkThen =
false;
141 bool checkElse =
false;
152 i.
errorPath.back().second =
"Assuming condition is false.";
157 tok = endBlock->
linkAt(2);
188 return (i.
tok == dest);
bool precedes(const Token *tok1, const Token *tok2)
If tok2 comes after tok1.
bool astIsLHS(const Token *tok)
Token * getCondTok(Token *tok)
const Token * nextAfterAstRightmostLeaf(const Token *tok)
Library definitions handling.
const Token * bodyEnd
'}' token
The token list that the TokenList generates is a linked-list of this class.
static bool Match(const Token *tok, const char pattern[], nonneg int varid=0)
Match given token (or list of tokens) to a pattern list.
bool hasKnownIntValue() const
void astOperand1(Token *tok)
const Token * tokAt(int index) const
void astOperand2(Token *tok)
void scope(const Scope *s)
Associate this token with given scope.
void link(Token *linkToToken)
Create link to given token.
const Token * linkAt(int index) const
const std::list< ValueFlow::Value > & values() const
static bool simpleMatch(const Token *tok, const char(&pattern)[count])
Match given token (or list of tokens) to a pattern list.
void astParent(Token *tok)
std::list< ErrorPathItem > ErrorPath
static const Token * assignExpr(const Token *tok)
bool reaches(const Token *start, const Token *dest, const Library &library, ErrorPath *errorPath)
Returns true if there is a path between the two tokens.
static Progress forwardRecursive(const Token *tok, Info info, const std::function< PathAnalysis::Progress(const Info &)> &f)
Progress forwardRange(const Token *startToken, const Token *endToken, Info info, const std::function< Progress(const Info &)> &f) const
static const Scope * findOuterScope(const Scope *scope)
static std::pair< bool, bool > checkCond(const Token *tok, bool &known)
void forward(const std::function< Progress(const Info &)> &f) const