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/testabstractmetatype.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/testabstractmetatype.cpp')
-rw-r--r-- | sources/shiboken6/ApiExtractor/tests/testabstractmetatype.cpp | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/sources/shiboken6/ApiExtractor/tests/testabstractmetatype.cpp b/sources/shiboken6/ApiExtractor/tests/testabstractmetatype.cpp index e65b0f214..897940cd5 100644 --- a/sources/shiboken6/ApiExtractor/tests/testabstractmetatype.cpp +++ b/sources/shiboken6/ApiExtractor/tests/testabstractmetatype.cpp @@ -74,7 +74,7 @@ void TestAbstractMetaType::testConstCharPtrType() QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode)); QVERIFY(!builder.isNull()); QCOMPARE(builder->globalFunctions().size(), 1); - AbstractMetaFunction *func = builder->globalFunctions().constFirst(); + const auto func = builder->globalFunctions().constFirst(); AbstractMetaType rtype = func->type(); // Test properties of const char* QVERIFY(!rtype.isVoid()); @@ -111,8 +111,7 @@ void TestAbstractMetaType::testApiVersionSupported() QCOMPARE(classes.size(), 2); - AbstractMetaFunctionList functions = builder->globalFunctions(); - QCOMPARE(functions.size(), 2); + QCOMPARE(builder->globalFunctions().size(), 2); } @@ -145,9 +144,9 @@ void TestAbstractMetaType::testCharType() QCOMPARE(classes.size(), 1); QCOMPARE(classes.constFirst()->package(), QLatin1String("Foo")); - AbstractMetaFunctionList functions = builder->globalFunctions(); + const auto functions = builder->globalFunctions(); QCOMPARE(functions.size(), 1); - AbstractMetaFunction *func = functions.constFirst(); + const auto func = functions.constFirst(); AbstractMetaType rtype = func->type(); // Test properties of const char* QVERIFY(!rtype.isVoid()); @@ -205,9 +204,9 @@ void TestAbstractMetaType::testTypedefWithTemplates() AbstractMetaClassList classes = builder->classes(); QCOMPARE(classes.size(), 1); - AbstractMetaFunctionList functions = builder->globalFunctions(); + const auto functions = builder->globalFunctions(); QCOMPARE(functions.count(), 1); - AbstractMetaFunction *function = functions.constFirst(); + const auto function = functions.constFirst(); AbstractMetaArgumentList args = function->arguments(); QCOMPARE(args.count(), 1); const AbstractMetaArgument &arg = args.constFirst(); @@ -232,9 +231,9 @@ void TestAbstractMetaType::testObjectTypeUsedAsValue() QCOMPARE(classes.size(), 1); const AbstractMetaClass *classA = AbstractMetaClass::findClass(classes, QLatin1String("A")); QVERIFY(classA); - AbstractMetaFunctionList overloads = classA->queryFunctionsByName(QLatin1String("method")); + const auto overloads = classA->queryFunctionsByName(QLatin1String("method")); QCOMPARE(overloads.count(), 1); - AbstractMetaFunction* method = overloads.constFirst(); + const auto method = overloads.constFirst(); QVERIFY(method); AbstractMetaArgumentList args = method->arguments(); QCOMPARE(args.count(), 1); |