aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sources/shiboken6/ApiExtractor/abstractmetabuilder.cpp40
-rw-r--r--sources/shiboken6/ApiExtractor/abstractmetabuilder_p.h1
-rw-r--r--sources/shiboken6/ApiExtractor/abstractmetalang.cpp16
-rw-r--r--sources/shiboken6/ApiExtractor/abstractmetalang.h3
-rw-r--r--sources/shiboken6/ApiExtractor/tests/testabstractmetaclass.cpp3
5 files changed, 3 insertions, 60 deletions
diff --git a/sources/shiboken6/ApiExtractor/abstractmetabuilder.cpp b/sources/shiboken6/ApiExtractor/abstractmetabuilder.cpp
index 3f8b9543b..f0f0ddcd3 100644
--- a/sources/shiboken6/ApiExtractor/abstractmetabuilder.cpp
+++ b/sources/shiboken6/ApiExtractor/abstractmetabuilder.cpp
@@ -632,7 +632,6 @@ void AbstractMetaBuilderPrivate::traverseDom(const FileModelItem &dom,
for (AbstractMetaClass *cls : qAsConst(m_metaClasses)) {
// setupEquals(cls);
// setupComparable(cls);
- setupClonable(cls);
setupExternalConversion(cls);
// sort all inner classes topologically
@@ -3165,7 +3164,6 @@ void AbstractMetaBuilderPrivate::inheritTemplateFunctions(AbstractMetaClass *sub
auto templateClass = subclass->templateBaseClass();
if (subclass->isTypeDef()) {
- subclass->setHasCloneOperator(templateClass->hasCloneOperator());
subclass->setHasEqualsOperator(templateClass->hasEqualsOperator());
subclass->setHasHashFunction(templateClass->hasHashFunction());
subclass->setHasNonPrivateConstructor(templateClass->hasNonPrivateConstructor());
@@ -3250,44 +3248,6 @@ void AbstractMetaBuilderPrivate::parseQ_Properties(AbstractMetaClass *metaClass,
}
}
-static AbstractMetaFunctionCPtr findCopyCtor(AbstractMetaClass* cls)
-{
- for (const auto &f : cls->functions()) {
- const AbstractMetaFunction::FunctionType t = f->functionType();
- if (t == AbstractMetaFunction::CopyConstructorFunction || t == AbstractMetaFunction::AssignmentOperatorFunction)
- return f;
- }
- return {};
-}
-
-void AbstractMetaBuilderPrivate::setupClonable(AbstractMetaClass *cls)
-{
- bool result = true;
-
- // find copy ctor for the current class
- auto copyCtor = findCopyCtor(cls);
- if (!copyCtor.isNull()) { // if exists a copy ctor in this class
- result = copyCtor->isPublic();
- } else { // else... lets find one in the parent class
- QQueue<AbstractMetaClass*> baseClasses;
- if (cls->baseClass())
- baseClasses.enqueue(cls->baseClass());
-
- while (!baseClasses.isEmpty()) {
- AbstractMetaClass* currentClass = baseClasses.dequeue();
- if (currentClass->baseClass())
- baseClasses.enqueue(currentClass->baseClass());
-
- copyCtor = findCopyCtor(currentClass);
- if (copyCtor) {
- result = copyCtor->isPublic();
- break;
- }
- }
- }
- cls->setHasCloneOperator(result);
-}
-
void AbstractMetaBuilderPrivate::setupExternalConversion(AbstractMetaClass *cls)
{
const auto &convOps = cls->operatorOverloads(OperatorQueryOption::ConversionOp);
diff --git a/sources/shiboken6/ApiExtractor/abstractmetabuilder_p.h b/sources/shiboken6/ApiExtractor/abstractmetabuilder_p.h
index 152a39345..791986298 100644
--- a/sources/shiboken6/ApiExtractor/abstractmetabuilder_p.h
+++ b/sources/shiboken6/ApiExtractor/abstractmetabuilder_p.h
@@ -151,7 +151,6 @@ public:
void parseQ_Properties(AbstractMetaClass *metaClass, const QStringList &declarations);
void setupEquals(AbstractMetaClass *metaClass);
void setupComparable(AbstractMetaClass *metaClass);
- static void setupClonable(AbstractMetaClass *cls);
void setupExternalConversion(AbstractMetaClass *cls);
static bool isQualifiedCppIdentifier(QStringView e);
diff --git a/sources/shiboken6/ApiExtractor/abstractmetalang.cpp b/sources/shiboken6/ApiExtractor/abstractmetalang.cpp
index 59f3000c0..9b9ba31a0 100644
--- a/sources/shiboken6/ApiExtractor/abstractmetalang.cpp
+++ b/sources/shiboken6/ApiExtractor/abstractmetalang.cpp
@@ -68,7 +68,6 @@ public:
m_hasVirtualDestructor(false),
m_hasHashFunction(false),
m_hasEqualsOperator(false),
- m_hasCloneOperator(false),
m_isTypeDef(false),
m_hasToStringCapability(false),
m_valueTypeWithCopyConstructorOnly(false),
@@ -109,7 +108,6 @@ public:
uint m_hasVirtualDestructor : 1;
uint m_hasHashFunction : 1;
uint m_hasEqualsOperator : 1;
- uint m_hasCloneOperator : 1;
uint m_isTypeDef : 1;
uint m_hasToStringCapability : 1;
uint m_valueTypeWithCopyConstructorOnly : 1;
@@ -231,7 +229,7 @@ AbstractMetaFunctionCList AbstractMetaClass::functionsInTargetLang() const
AbstractMetaFunctionCList AbstractMetaClass::implicitConversions() const
{
- if (!hasCloneOperator() && !hasExternalConversionOperators())
+ if (!isCopyConstructible() && !hasExternalConversionOperators())
return {};
AbstractMetaFunctionCList returned;
@@ -392,16 +390,6 @@ void AbstractMetaClass::setHasEqualsOperator(bool on)
d->m_hasEqualsOperator = on;
}
-bool AbstractMetaClass::hasCloneOperator() const
-{
- return d->m_hasCloneOperator;
-}
-
-void AbstractMetaClass::setHasCloneOperator(bool on)
-{
- d->m_hasCloneOperator = on;
-}
-
const QList<QPropertySpec> &AbstractMetaClass::propertySpecs() const
{
return d->m_propertySpecs;
@@ -1816,7 +1804,7 @@ bool AbstractMetaClass::isCopyable() const
return false;
auto copyable = d->m_typeEntry->copyable();
return copyable == ComplexTypeEntry::CopyableSet
- || (copyable == ComplexTypeEntry::Unknown && hasCloneOperator());
+ || (copyable == ComplexTypeEntry::Unknown && isCopyConstructible());
}
bool AbstractMetaClass::isValueTypeWithCopyConstructorOnly() const
diff --git a/sources/shiboken6/ApiExtractor/abstractmetalang.h b/sources/shiboken6/ApiExtractor/abstractmetalang.h
index df978f598..a1709fcd0 100644
--- a/sources/shiboken6/ApiExtractor/abstractmetalang.h
+++ b/sources/shiboken6/ApiExtractor/abstractmetalang.h
@@ -291,9 +291,6 @@ public:
bool hasEqualsOperator() const;
void setHasEqualsOperator(bool on);
- bool hasCloneOperator() const;
- void setHasCloneOperator(bool on);
-
const QList<QPropertySpec> &propertySpecs() const;
void addPropertySpec(const QPropertySpec &spec);
diff --git a/sources/shiboken6/ApiExtractor/tests/testabstractmetaclass.cpp b/sources/shiboken6/ApiExtractor/tests/testabstractmetaclass.cpp
index 755947ec4..1572c90ee 100644
--- a/sources/shiboken6/ApiExtractor/tests/testabstractmetaclass.cpp
+++ b/sources/shiboken6/ApiExtractor/tests/testabstractmetaclass.cpp
@@ -82,8 +82,7 @@ void TestAbstractMetaClass::testClassNameUnderNamespace()
QCOMPARE(ctors[1]->minimalSignature(), QLatin1String("ClassName(Namespace::ClassName)"));
QVERIFY(!classes[0]->hasPrivateDestructor());
- QVERIFY(classes[0]->hasCloneOperator()); // implicit default copy ctor
- QVERIFY(!classes[0]->hasHashFunction());
+ QVERIFY(classes[0]->isCopyConstructible()); // implicit default copy ctor
// This method is buggy and nobody wants to fix it or needs it fixed :-/
// QVERIFY(classes[0]->hasNonPrivateConstructor());