diff options
| author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-11-27 17:11:47 +0100 |
|---|---|---|
| committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-11-30 15:53:54 +0000 |
| commit | 30cdcd7b8e7f70bf6b64450ca622dd4494e3a0ea (patch) | |
| tree | 044002feaeb24281e9000648a1342073701ee29c /sources/shiboken6/ApiExtractor/tests/testimplicitconversions.cpp | |
| parent | f4fd97655f20e2ce4d24704056b7a7a9ab9db355 (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.cpp | 16 |
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); } |
