parent
19eef2c584
commit
3d965b5b81
|
@ -2313,7 +2313,7 @@ bool CheckClass::checkConstFunc(const Scope *scope, const Function *func, bool&
|
||||||
mayModifyArgs = false;
|
mayModifyArgs = false;
|
||||||
for (nonneg int argIndex = 0; argIndex < argMax; ++argIndex) {
|
for (nonneg int argIndex = 0; argIndex < argMax; ++argIndex) {
|
||||||
const Variable* const argVar = f->getArgumentVar(argIndex);
|
const Variable* const argVar = f->getArgumentVar(argIndex);
|
||||||
if (!argVar || !argVar->valueType() || ((argVar->valueType()->pointer || argVar->valueType()->reference != Reference::None) && !argVar->isConst())) {
|
if (!argVar || ((argVar->isArrayOrPointer() || argVar->isReference()) && !argVar->isConst())) {
|
||||||
mayModifyArgs = true;
|
mayModifyArgs = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,6 +197,7 @@ private:
|
||||||
TEST_CASE(const81); // ticket #11330
|
TEST_CASE(const81); // ticket #11330
|
||||||
TEST_CASE(const82); // ticket #11513
|
TEST_CASE(const82); // ticket #11513
|
||||||
TEST_CASE(const83);
|
TEST_CASE(const83);
|
||||||
|
TEST_CASE(const84);
|
||||||
|
|
||||||
TEST_CASE(const_handleDefaultParameters);
|
TEST_CASE(const_handleDefaultParameters);
|
||||||
TEST_CASE(const_passThisToMemberOfOtherClass);
|
TEST_CASE(const_passThisToMemberOfOtherClass);
|
||||||
|
@ -6360,6 +6361,19 @@ private:
|
||||||
ASSERT_EQUALS("", errout.str());
|
ASSERT_EQUALS("", errout.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void const84() { // #11618
|
||||||
|
checkConst("struct S {\n"
|
||||||
|
" int a[2], b[2];\n"
|
||||||
|
" void f() { f(a, b); }\n"
|
||||||
|
" static void f(const int p[2], int q[2]);\n"
|
||||||
|
"};\n"
|
||||||
|
"void S::f(const int p[2], int q[2]) {\n"
|
||||||
|
" q[0] = p[0];\n"
|
||||||
|
" q[1] = p[1];\n"
|
||||||
|
"}\n");
|
||||||
|
ASSERT_EQUALS("", 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