Fixed #8341 (error:iterators not correct)
This commit is contained in:
parent
7224ee27d9
commit
756c1d8de7
|
@ -363,12 +363,7 @@ void CheckStl::iterators()
|
|||
|
||||
// Reassign the iterator
|
||||
else if (Token::Match(tok2, "%varid% =", iteratorId)) {
|
||||
// Assume that the iterator becomes valid.
|
||||
// TODO: add checking that checks if the iterator becomes valid or not
|
||||
validatingToken = Token::findmatch(tok2->tokAt(2), "[;)]");
|
||||
|
||||
// skip ahead
|
||||
tok2 = tok2->tokAt(2);
|
||||
break;
|
||||
}
|
||||
|
||||
// Passing iterator to function. Iterator might be initialized
|
||||
|
|
|
@ -56,6 +56,7 @@ private:
|
|||
TEST_CASE(iterator12);
|
||||
TEST_CASE(iterator13);
|
||||
TEST_CASE(iterator14); // #8191
|
||||
TEST_CASE(iterator15); // #8341
|
||||
TEST_CASE(iteratorExpression);
|
||||
TEST_CASE(iteratorSameExpression);
|
||||
|
||||
|
@ -599,6 +600,14 @@ private:
|
|||
ASSERT_EQUALS("", errout.str());
|
||||
}
|
||||
|
||||
void iterator15() {
|
||||
check("void f(C1* x, std::list<int> a) {\n"
|
||||
" std::list<int>::iterator pos = a.begin();\n"
|
||||
" for(pos = x[0]->plist.begin(); pos != x[0]->plist.end(); ++pos) {}\n"
|
||||
"}");
|
||||
ASSERT_EQUALS("", errout.str());
|
||||
}
|
||||
|
||||
void iteratorExpression() {
|
||||
check("std::vector<int>& f();\n"
|
||||
"std::vector<int>& g();\n"
|
||||
|
|
Loading…
Reference in New Issue