This commit is contained in:
parent
ba57e15cb2
commit
d30f8e18f7
|
@ -2364,7 +2364,9 @@ bool CheckClass::checkConstFunc(const Scope *scope, const Function *func, bool&
|
||||||
}
|
}
|
||||||
|
|
||||||
// non const pointer cast
|
// non const pointer cast
|
||||||
if (tok1->valueType() && tok1->valueType()->pointer > 0 && tok1->astParent() && tok1->astParent()->isCast() && !Token::simpleMatch(tok1->astParent(), "( const"))
|
if (tok1->valueType() && tok1->valueType()->pointer > 0 && tok1->astParent() && tok1->astParent()->isCast() &&
|
||||||
|
!(tok1->astParent()->valueType() &&
|
||||||
|
(tok1->astParent()->valueType()->pointer == 0 || tok1->astParent()->valueType()->isConst(tok1->astParent()->valueType()->pointer))))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
const Token* lhs = tok1->previous();
|
const Token* lhs = tok1->previous();
|
||||||
|
|
|
@ -197,6 +197,7 @@ private:
|
||||||
TEST_CASE(const84);
|
TEST_CASE(const84);
|
||||||
TEST_CASE(const85);
|
TEST_CASE(const85);
|
||||||
TEST_CASE(const86);
|
TEST_CASE(const86);
|
||||||
|
TEST_CASE(const87);
|
||||||
|
|
||||||
TEST_CASE(const_handleDefaultParameters);
|
TEST_CASE(const_handleDefaultParameters);
|
||||||
TEST_CASE(const_passThisToMemberOfOtherClass);
|
TEST_CASE(const_passThisToMemberOfOtherClass);
|
||||||
|
@ -6398,6 +6399,21 @@ private:
|
||||||
ASSERT_EQUALS("", errout.str());
|
ASSERT_EQUALS("", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void const87() { // #11626
|
||||||
|
checkConst("struct S {\n"
|
||||||
|
" bool f() { return static_cast<bool>(p); }\n"
|
||||||
|
" const int* g() { return const_cast<const int*>(p); }\n"
|
||||||
|
" const int* h() { return (const int*)p; }\n"
|
||||||
|
" char* j() { return reinterpret_cast<char*>(p); }\n"
|
||||||
|
" char* k() { return (char*)p; }\n"
|
||||||
|
" int* p;\n"
|
||||||
|
"};\n");
|
||||||
|
ASSERT_EQUALS("[test.cpp:2]: (style, inconclusive) Technically the member function 'S::f' can be const.\n"
|
||||||
|
"[test.cpp:3]: (style, inconclusive) Technically the member function 'S::g' can be const.\n"
|
||||||
|
"[test.cpp:4]: (style, inconclusive) Technically the member function 'S::h' can be const.\n",
|
||||||
|
errout.str());
|
||||||
|
}
|
||||||
|
|
||||||
void const_handleDefaultParameters() {
|
void const_handleDefaultParameters() {
|
||||||
checkConst("struct Foo {\n"
|
checkConst("struct Foo {\n"
|
||||||
" void foo1(int i, int j = 0) {\n"
|
" void foo1(int i, int j = 0) {\n"
|
||||||
|
|
Loading…
Reference in New Issue