diff --git a/lib/checkclass.cpp b/lib/checkclass.cpp index ebca5a791ab..df2170050ce 100644 --- a/lib/checkclass.cpp +++ b/lib/checkclass.cpp @@ -2192,7 +2192,11 @@ void CheckClass::checkConst() if (suggestStatic && func.isConst()) { const auto overloads = func.getOverloadedFunctions(); if (overloads.size() > 1 && std::any_of(overloads.begin(), overloads.end(), [&](const Function* ovl) { - return &func != ovl && func.argCount() == ovl->argCount() && func.argsMatch(ovl->functionScope, ovl->argDef, func.argDef, emptyString, 0); + if (&func == ovl) + return false; + if (!ovl->functionScope) + return true; + return func.argCount() == ovl->argCount() && func.argsMatch(ovl->functionScope, ovl->argDef, func.argDef, emptyString, 0); })) continue; } diff --git a/test/testclass.cpp b/test/testclass.cpp index 8738744c369..e0a77044b3e 100644 --- a/test/testclass.cpp +++ b/test/testclass.cpp @@ -6863,6 +6863,12 @@ class TestClass : public TestFixture { " int i;\n" "};\n"); ASSERT_EQUALS("", errout_str()); + + checkConst("struct S {\n" // #14033 + " void f();\n" + " void f() const {}\n" + "};\n"); + ASSERT_EQUALS("", errout_str()); // don't crash } void const_handleDefaultParameters() {