aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sources/shiboken6/ApiExtractor/abstractmetalang.cpp11
-rw-r--r--sources/shiboken6/ApiExtractor/abstractmetalang.h1
-rw-r--r--sources/shiboken6/generator/shiboken/shibokengenerator.cpp14
3 files changed, 20 insertions, 6 deletions
diff --git a/sources/shiboken6/ApiExtractor/abstractmetalang.cpp b/sources/shiboken6/ApiExtractor/abstractmetalang.cpp
index 0caf4812e..080257346 100644
--- a/sources/shiboken6/ApiExtractor/abstractmetalang.cpp
+++ b/sources/shiboken6/ApiExtractor/abstractmetalang.cpp
@@ -607,6 +607,17 @@ AbstractMetaFunctionCPtr AbstractMetaClass::findFunction(const QString &function
return AbstractMetaFunction::find(d->m_functions, functionName);
}
+AbstractMetaFunctionCList AbstractMetaClass::findFunctions(const QString &functionName) const
+{
+ AbstractMetaFunctionCList result;
+ std::copy_if(d->m_functions.cbegin(), d->m_functions.cend(),
+ std::back_inserter(result),
+ [&functionName](const AbstractMetaFunctionCPtr &f) {
+ return f->name() == functionName;
+ });
+ return result;
+}
+
AbstractMetaFunctionCPtr AbstractMetaClass::findOperatorBool() const
{
auto it = std::find_if(d->m_functions.cbegin(), d->m_functions.cend(),
diff --git a/sources/shiboken6/ApiExtractor/abstractmetalang.h b/sources/shiboken6/ApiExtractor/abstractmetalang.h
index 7b5ef4cc2..6f1971df9 100644
--- a/sources/shiboken6/ApiExtractor/abstractmetalang.h
+++ b/sources/shiboken6/ApiExtractor/abstractmetalang.h
@@ -95,6 +95,7 @@ public:
void addFunction(const AbstractMetaFunctionCPtr &function);
bool hasFunction(const QString &str) const;
AbstractMetaFunctionCPtr findFunction(const QString& functionName) const;
+ AbstractMetaFunctionCList findFunctions(const QString& functionName) const;
AbstractMetaFunctionCPtr findOperatorBool() const;
// Find a Qt-style isNull() method suitable for nb_bool
AbstractMetaFunctionCPtr findQtIsNullMethod() const;
diff --git a/sources/shiboken6/generator/shiboken/shibokengenerator.cpp b/sources/shiboken6/generator/shiboken/shibokengenerator.cpp
index f4c1bb4e1..0202dc619 100644
--- a/sources/shiboken6/generator/shiboken/shibokengenerator.cpp
+++ b/sources/shiboken6/generator/shiboken/shibokengenerator.cpp
@@ -2299,12 +2299,14 @@ AbstractMetaFunctionCList
AbstractMetaClass *basis;
if (func->ownerClass() && (basis = func->ownerClass()->baseClass())) {
for (; basis; basis = basis->baseClass()) {
- const auto inFunc = basis->findFunction(func->name());
- if (!inFunc.isNull() && !seen->contains(inFunc->minimalSignature())) {
- seen->insert(inFunc->minimalSignature());
- AbstractMetaFunction *newFunc = inFunc->copy();
- newFunc->setImplementingClass(func->implementingClass());
- results << AbstractMetaFunctionCPtr(newFunc);
+ const auto inFunctions = basis->findFunctions(func->name());
+ for (const auto &inFunc : inFunctions) {
+ if (!seen->contains(inFunc->minimalSignature())) {
+ seen->insert(inFunc->minimalSignature());
+ AbstractMetaFunction *newFunc = inFunc->copy();
+ newFunc->setImplementingClass(func->implementingClass());
+ results << AbstractMetaFunctionCPtr(newFunc);
+ }
}
}
}