parent
c74eeb6bad
commit
d55010c441
|
@ -5176,6 +5176,11 @@ const Function* Scope::findFunction(const Token *tok, bool requireConst) const
|
||||||
// Try to evaluate the apparently more complex expression
|
// Try to evaluate the apparently more complex expression
|
||||||
else if (check->isCPP()) {
|
else if (check->isCPP()) {
|
||||||
const Token *vartok = arguments[j];
|
const Token *vartok = arguments[j];
|
||||||
|
if (vartok->str() == ".") {
|
||||||
|
const Token* rml = nextAfterAstRightmostLeaf(vartok);
|
||||||
|
if (rml)
|
||||||
|
vartok = rml->previous();
|
||||||
|
}
|
||||||
while (vartok->isUnaryOp("&") || vartok->isUnaryOp("*"))
|
while (vartok->isUnaryOp("&") || vartok->isUnaryOp("*"))
|
||||||
vartok = vartok->astOperand1();
|
vartok = vartok->astOperand1();
|
||||||
const Variable* var = vartok->variable();
|
const Variable* var = vartok->variable();
|
||||||
|
|
|
@ -129,6 +129,7 @@ private:
|
||||||
TEST_CASE(initvar_nocopy1); // ticket #2474
|
TEST_CASE(initvar_nocopy1); // ticket #2474
|
||||||
TEST_CASE(initvar_nocopy2); // ticket #2484
|
TEST_CASE(initvar_nocopy2); // ticket #2484
|
||||||
TEST_CASE(initvar_nocopy3); // ticket #3611
|
TEST_CASE(initvar_nocopy3); // ticket #3611
|
||||||
|
TEST_CASE(initvar_nocopy4); // ticket #9247
|
||||||
TEST_CASE(initvar_with_member_function_this); // ticket #4824
|
TEST_CASE(initvar_with_member_function_this); // ticket #4824
|
||||||
|
|
||||||
TEST_CASE(initvar_destructor); // No variables need to be initialized in a destructor
|
TEST_CASE(initvar_destructor); // No variables need to be initialized in a destructor
|
||||||
|
@ -1598,6 +1599,22 @@ private:
|
||||||
ASSERT_EQUALS("[test.cpp:4]: (warning, inconclusive) Member variable 'A::b' is not assigned in the copy constructor. Should it be copied?\n", errout.str());
|
ASSERT_EQUALS("[test.cpp:4]: (warning, inconclusive) Member variable 'A::b' is not assigned in the copy constructor. Should it be copied?\n", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void initvar_nocopy4() { // #9247
|
||||||
|
check("struct S {\n"
|
||||||
|
" S(const S & s);\n"
|
||||||
|
" void S::Set(const T& val);\n"
|
||||||
|
" void S::Set(const U& val);\n"
|
||||||
|
" T t;\n"
|
||||||
|
"};\n"
|
||||||
|
"S::S(const S& s) {\n"
|
||||||
|
" Set(s.t);\n"
|
||||||
|
"}\n"
|
||||||
|
"void S::Set(const T& val) {\n"
|
||||||
|
" t = val;\n"
|
||||||
|
"}", /*inconclusive*/ true);
|
||||||
|
ASSERT_EQUALS("", errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
void initvar_with_member_function_this() {
|
void initvar_with_member_function_this() {
|
||||||
check("struct Foo {\n"
|
check("struct Foo {\n"
|
||||||
" Foo(int m) { this->setMember(m); }\n"
|
" Foo(int m) { this->setMember(m); }\n"
|
||||||
|
|
Loading…
Reference in New Issue