Skip to content

Commit 9820403

Browse files
Fix #13406 FP missingOverride with Q_OBJECT macro (#7090)
1 parent 02063b6 commit 9820403

2 files changed

Lines changed: 12 additions & 0 deletions

File tree

lib/checkclass.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3059,6 +3059,8 @@ static std::vector<DuplMemberFuncInfo> getDuplInheritedMemberFunctionsRecursive(
30593059
for (const Function& classFuncIt : typeCurrent->classScope->functionList) {
30603060
if (classFuncIt.isImplicitlyVirtual())
30613061
continue;
3062+
if (classFuncIt.tokenDef->isExpandedMacro())
3063+
continue;
30623064
for (const Function& parentClassFuncIt : parentClassIt.type->classScope->functionList) {
30633065
if (classFuncIt.name() == parentClassFuncIt.name() &&
30643066
(parentClassFuncIt.access != AccessControl::Private || !skipPrivate) &&
@@ -3200,6 +3202,8 @@ void CheckClass::checkOverride()
32003202
for (const Function &func : classScope->functionList) {
32013203
if (func.hasOverrideSpecifier() || func.hasFinalSpecifier())
32023204
continue;
3205+
if (func.tokenDef->isExpandedMacro())
3206+
continue;
32033207
const Function *baseFunc = func.getOverriddenFunction();
32043208
if (baseFunc)
32053209
overrideError(baseFunc, &func);

test/cfg/qt.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -804,3 +804,11 @@ const QString& unassignedVariable_static_QString() // #12935
804804
static QString qs;
805805
return qs;
806806
}
807+
808+
struct BQObject_missingOverride { // #13406
809+
Q_OBJECT
810+
};
811+
812+
struct DQObject_missingOverride : BQObject_missingOverride {
813+
Q_OBJECT
814+
};

0 commit comments

Comments
 (0)