aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken6/ApiExtractor/tests/testimplicitconversions.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2020-11-27 17:11:47 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2020-11-30 15:53:54 +0000
commit30cdcd7b8e7f70bf6b64450ca622dd4494e3a0ea (patch)
tree044002feaeb24281e9000648a1342073701ee29c /sources/shiboken6/ApiExtractor/tests/testimplicitconversions.cpp
parentf4fd97655f20e2ce4d24704056b7a7a9ab9db355 (diff)
shiboken6: Store AbstractMetaFunction using a QSharedPointer
Store the list functions (global / class member) as a QList<QSharedPointer<const AbstractMetaFunction> instead of a raw pointer list. This makes passing around function lists easier and solves the memory leaks caused by mixing cloned and unmodified functions while collecting the overload lists in the generators. - Change the function signatures accordingly - Add a qSharedPointerConstCast() for non-const access. - Restructure the traversing of added functions in the AbstractMetaBuilder - Remove some unused typedefs and functions unearthed by the change Change-Id: I08a6c5243750e3eb3813bc3f7172899ad2b13e22 Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'sources/shiboken6/ApiExtractor/tests/testimplicitconversions.cpp')
-rw-r--r--sources/shiboken6/ApiExtractor/tests/testimplicitconversions.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/sources/shiboken6/ApiExtractor/tests/testimplicitconversions.cpp b/sources/shiboken6/ApiExtractor/tests/testimplicitconversions.cpp
index ef9699cad..928122967 100644
--- a/sources/shiboken6/ApiExtractor/tests/testimplicitconversions.cpp
+++ b/sources/shiboken6/ApiExtractor/tests/testimplicitconversions.cpp
@@ -58,7 +58,7 @@ void TestImplicitConversions::testWithPrivateCtors()
const AbstractMetaClass *classA = AbstractMetaClass::findClass(classes, QLatin1String("A"));
const AbstractMetaClass *classC = AbstractMetaClass::findClass(classes, QLatin1String("C"));
- AbstractMetaFunctionList implicitConvs = classA->implicitConversions();
+ const auto implicitConvs = classA->implicitConversions();
QCOMPARE(implicitConvs.count(), 1);
QCOMPARE(implicitConvs.constFirst()->arguments().constFirst().type().typeEntry(),
classC->typeEntry());
@@ -88,7 +88,7 @@ void TestImplicitConversions::testWithModifiedVisibility()
QCOMPARE(classes.count(), 2);
const AbstractMetaClass *classA = AbstractMetaClass::findClass(classes, QLatin1String("A"));
const AbstractMetaClass *classB = AbstractMetaClass::findClass(classes, QLatin1String("B"));
- AbstractMetaFunctionList implicitConvs = classA->implicitConversions();
+ const auto implicitConvs = classA->implicitConversions();
QCOMPARE(implicitConvs.count(), 1);
QCOMPARE(implicitConvs.constFirst()->arguments().constFirst().type().typeEntry(),
classB->typeEntry());
@@ -122,7 +122,7 @@ void TestImplicitConversions::testWithAddedCtor()
QCOMPARE(classes.count(), 3);
const AbstractMetaClass *classA = AbstractMetaClass::findClass(classes, QLatin1String("A"));
- AbstractMetaFunctionList implicitConvs = classA->implicitConversions();
+ auto implicitConvs = classA->implicitConversions();
QCOMPARE(implicitConvs.count(), 2);
// Added constructors with custom types should never result in implicit converters.
@@ -149,17 +149,17 @@ void TestImplicitConversions::testWithExternalConversionOperator()
QCOMPARE(classes.count(), 2);
AbstractMetaClass* classA = AbstractMetaClass::findClass(classes, QLatin1String("A"));
AbstractMetaClass* classB = AbstractMetaClass::findClass(classes, QLatin1String("B"));
- AbstractMetaFunctionList implicitConvs = classA->implicitConversions();
+ const auto implicitConvs = classA->implicitConversions();
QCOMPARE(implicitConvs.count(), 1);
- AbstractMetaFunctionList externalConvOps = classA->externalConversionOperators();
+ const auto &externalConvOps = classA->externalConversionOperators();
QCOMPARE(externalConvOps.count(), 1);
- const AbstractMetaFunction *convOp = nullptr;
- for (const AbstractMetaFunction *func : classB->functions()) {
+ AbstractMetaFunctionCPtr convOp;
+ for (const auto &func : classB->functions()) {
if (func->isConversionOperator())
convOp = func;
}
- QVERIFY(convOp);
+ QVERIFY(!convOp.isNull());
QCOMPARE(implicitConvs.constFirst(), convOp);
}