This commit is contained in:
parent
3e47acd580
commit
61bd8fddbf
|
@ -747,8 +747,8 @@ bool CheckStl::checkIteratorPair(const Token* tok1, const Token* tok2)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Token::Match(tok1->astParent(), "%comp%|-")) {
|
if (Token::Match(tok1->astParent(), "%comp%|-")) {
|
||||||
if (astIsIntegral(tok1, false) || astIsIntegral(tok2, false) || astIsFloat(tok1, false) ||
|
if (astIsIntegral(tok1, true) || astIsIntegral(tok2, true) ||
|
||||||
astIsFloat(tok2, false))
|
astIsFloat(tok1, true) || astIsFloat(tok2, true))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
const Token* iter1 = getIteratorExpression(tok1);
|
const Token* iter1 = getIteratorExpression(tok1);
|
||||||
|
|
|
@ -1989,6 +1989,23 @@ private:
|
||||||
" }\n"
|
" }\n"
|
||||||
"}\n");
|
"}\n");
|
||||||
ASSERT_EQUALS("", errout.str());
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
|
||||||
|
check("bool f(const std::vector<int>& a, const std::vector<int>& b) {\n" // #11469
|
||||||
|
" return (a.begin() - a.end()) == (b.begin() - b.end());\n"
|
||||||
|
"}\n");
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
|
||||||
|
check("struct S {\n"
|
||||||
|
" const std::vector<int>* vec() const { return &v; }\n"
|
||||||
|
" const std::vector<int> v;\n"
|
||||||
|
"};\n"
|
||||||
|
"void f(const S& a, const S& b) {\n"
|
||||||
|
" if (a.vec()->begin() - a.vec()->end() != b.vec()->begin() - b.vec()->end()) {}\n"
|
||||||
|
"}\n");
|
||||||
|
TODO_ASSERT_EQUALS("",
|
||||||
|
"[test.cpp:6]: (warning) Iterators to containers from different expressions 'a.vec()' and 'a.vec()' are used together.\n"
|
||||||
|
"[test.cpp:6]: (warning) Iterators to containers from different expressions 'b.vec()' and 'b.vec()' are used together.\n",
|
||||||
|
errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void iteratorSameExpression() {
|
void iteratorSameExpression() {
|
||||||
|
|
Loading…
Reference in New Issue