aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2021-09-15 10:04:31 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2021-10-01 11:24:55 +0200
commit6c62738a9a051c4e06444c6d37c766f7ccc696c8 (patch)
tree3711f480eb18d78b5216fc83d18a59740e81e178
parent82219d035526f2e587db3adc90c03d4901bfba77 (diff)
shiboken6: Store the AbstractMetaArgument instead of the type in Overloaddata
This makes subsequent refactorings easier. Task-number: PYSIDE-1660 Change-Id: I2ca708c2e3313c48483c8769eb186123bff5da9b Reviewed-by: Christian Tismer <tismer@stackless.com>
-rw-r--r--sources/shiboken6/generator/shiboken/cppgenerator.cpp2
-rw-r--r--sources/shiboken6/generator/shiboken/overloaddata.cpp16
-rw-r--r--sources/shiboken6/generator/shiboken/overloaddata.h13
3 files changed, 19 insertions, 12 deletions
diff --git a/sources/shiboken6/generator/shiboken/cppgenerator.cpp b/sources/shiboken6/generator/shiboken/cppgenerator.cpp
index eacfc681e..4fd5d4094 100644
--- a/sources/shiboken6/generator/shiboken/cppgenerator.cpp
+++ b/sources/shiboken6/generator/shiboken/cppgenerator.cpp
@@ -2463,7 +2463,7 @@ void CppGenerator::writeTypeCheck(TextStream &s,
for (const auto &sibling : siblings) {
for (const auto &func : sibling->overloads()) {
checkTypeViability(func);
- const AbstractMetaType &argType = sibling->argument(func)->type();
+ const AbstractMetaType &argType = sibling->overloadArgument(func)->type();
if (!argType.isPrimitive())
continue;
if (ShibokenGenerator::isNumber(argType.typeEntry()))
diff --git a/sources/shiboken6/generator/shiboken/overloaddata.cpp b/sources/shiboken6/generator/shiboken/overloaddata.cpp
index 103770396..46a2ee201 100644
--- a/sources/shiboken6/generator/shiboken/overloaddata.cpp
+++ b/sources/shiboken6/generator/shiboken/overloaddata.cpp
@@ -485,9 +485,10 @@ OverloadData::OverloadData(const AbstractMetaFunctionCList &overloads,
OverloadDataNode::OverloadDataNode(const AbstractMetaFunctionCPtr &func,
OverloadDataRootNode *parent,
- const AbstractMetaType &argType, int argPos,
+ const AbstractMetaArgument &argument,
+ int argPos,
const QString argTypeReplaced) :
- m_argType(argType),
+ m_argument(argument),
m_argTypeReplaced(argTypeReplaced),
m_parent(parent),
m_argPos(argPos)
@@ -525,7 +526,7 @@ OverloadDataNode *OverloadDataRootNode::addOverloadDataNode(const AbstractMetaFu
if (overloadData.isNull()) {
QString typeReplaced = func->typeReplaced(arg.argumentIndex() + 1);
const int argpos = argPos() + 1;
- overloadData.reset(new OverloadDataNode(func, this, argType, argpos,
+ overloadData.reset(new OverloadDataNode(func, this, arg, argpos,
typeReplaced));
m_children.append(overloadData);
}
@@ -634,7 +635,7 @@ AbstractMetaFunctionCPtr OverloadDataRootNode::referenceFunction() const
return m_overloads.constFirst();
}
-const AbstractMetaArgument *OverloadDataNode::argument(const AbstractMetaFunctionCPtr &func) const
+const AbstractMetaArgument *OverloadDataNode::overloadArgument(const AbstractMetaFunctionCPtr &func) const
{
if (isRoot() || !m_overloads.contains(func))
return nullptr;
@@ -901,7 +902,7 @@ void OverloadDataNode::dumpNodeGraph(QTextStream &s) const
// Show default values (original and modified) for various functions
for (const auto &func : m_overloads) {
- const AbstractMetaArgument *arg = argument(func);
+ const AbstractMetaArgument *arg = overloadArgument(func);
if (!arg)
continue;
const int n = root->functionNumber(func);
@@ -1037,7 +1038,10 @@ void OverloadDataNode::formatDebug(QDebug &d) const
{
d << "OverloadDataNode(";
formatReferenceFunction(d);
- d << ", argType=" << m_argType << ", argPos=" << m_argPos;
+ d << ", argPos=" << m_argPos;
+ if (m_argument.argumentIndex() != m_argPos)
+ d << ", argIndex=" << m_argument.argumentIndex();
+ d << ", argType=\"" << m_argument.type().cppSignature() << '"';
if (!m_argTypeReplaced.isEmpty())
d << ", argTypeReplaced=\"" << m_argTypeReplaced << '"';
formatOverloads(d);
diff --git a/sources/shiboken6/generator/shiboken/overloaddata.h b/sources/shiboken6/generator/shiboken/overloaddata.h
index 0271fd3d0..e72b64778 100644
--- a/sources/shiboken6/generator/shiboken/overloaddata.h
+++ b/sources/shiboken6/generator/shiboken/overloaddata.h
@@ -30,6 +30,7 @@
#define OVERLOADDATA_H
#include <apiextractorresult.h>
+#include <abstractmetaargument.h>
#include <QtCore/QBitArray>
#include <QtCore/QList>
@@ -104,7 +105,7 @@ class OverloadDataNode : public OverloadDataRootNode
public:
explicit OverloadDataNode(const AbstractMetaFunctionCPtr &func,
OverloadDataRootNode *parent,
- const AbstractMetaType &argType, int argPos,
+ const AbstractMetaArgument &arg, int argPos,
const QString argTypeReplaced = {});
void addOverload(const AbstractMetaFunctionCPtr &func);
@@ -112,23 +113,25 @@ public:
const OverloadDataRootNode *parent() const override;
void dumpNodeGraph(QTextStream &s) const;
- const AbstractMetaType &argType() const { return m_argType; }
+ const AbstractMetaArgument &argument() const
+ { return m_argument; }
+ const AbstractMetaType &argType() const { return m_argument.type(); }
bool hasArgumentTypeReplace() const { return !m_argTypeReplaced.isEmpty(); }
const QString &argumentTypeReplaced() const { return m_argTypeReplaced; }
- const AbstractMetaArgument *argument(const AbstractMetaFunctionCPtr &func) const;
+ const AbstractMetaArgument *overloadArgument(const AbstractMetaFunctionCPtr &func) const;
#ifndef QT_NO_DEBUG_STREAM
void formatDebug(QDebug &d) const override;
#endif
private:
- AbstractMetaType m_argType;
+ AbstractMetaArgument m_argument;
QString m_argTypeReplaced;
OverloadDataRootNode *m_parent = nullptr;
- int m_argPos = -1;
+ int m_argPos = -1; // Position excluding modified/removed arguments.
};
class OverloadData : public OverloadDataRootNode