aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2022-07-01 10:56:17 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2022-07-03 13:32:14 +0200
commitf0f589285f98197b4c46ad8aa028e6da3e4bfed9 (patch)
treed503e2d81d7bdc6817e8f61465808330da378484
parent016d3160a7302b1954f9842b518d825bf71312fb (diff)
shiboken6: Simplify smart pointer types when searching instantiations
When the code model first sees a "foo(const SmartPtr &)" instead of "foo(SmartPtr)", compilation would break since const, & propagate into the generated type name. Simplify types as is done for containers as well. Task-number: PYSIDE-454 Change-Id: I1d9f75aceb983f8e9c4a28314db94b8d83b1c1ca Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> (cherry picked from commit 6d81913ed1189a5c7b1e26d2456f05e8e8684914) Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Christian Tismer <tismer@stackless.com>
-rw-r--r--sources/shiboken6/ApiExtractor/apiextractor.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/sources/shiboken6/ApiExtractor/apiextractor.cpp b/sources/shiboken6/ApiExtractor/apiextractor.cpp
index 4a06c1320..d45f2c543 100644
--- a/sources/shiboken6/ApiExtractor/apiextractor.cpp
+++ b/sources/shiboken6/ApiExtractor/apiextractor.cpp
@@ -422,6 +422,15 @@ static inline const TypeEntry *pointeeTypeEntry(const AbstractMetaType &smartPtr
return smartPtrType.instantiations().constFirst().typeEntry();
}
+static AbstractMetaType simplifiedType(AbstractMetaType type)
+{
+ type.setIndirections(0);
+ type.setConstant(false);
+ type.setReferenceType(NoReference);
+ type.decideUsagePattern();
+ return type;
+}
+
void
ApiExtractorPrivate::addInstantiatedContainersAndSmartPointers(InstantiationCollectContext &context,
const AbstractMetaType &type,
@@ -451,12 +460,7 @@ ApiExtractorPrivate::addInstantiatedContainersAndSmartPointers(InstantiationColl
const QString typeName = getSimplifiedContainerTypeName(type);
if (!context.instantiatedContainersNames.contains(typeName)) {
context.instantiatedContainersNames.append(typeName);
- auto simplifiedType = type;
- simplifiedType.setIndirections(0);
- simplifiedType.setConstant(false);
- simplifiedType.setReferenceType(NoReference);
- simplifiedType.decideUsagePattern();
- context.instantiatedContainers.append(simplifiedType);
+ context.instantiatedContainers.append(simplifiedType(type));
}
return;
}
@@ -479,7 +483,7 @@ void ApiExtractorPrivate::addInstantiatedSmartPointer(InstantiationCollectContex
const AbstractMetaType &type)
{
InstantiatedSmartPointer smp;
- smp.type = type;
+ smp.type = simplifiedType(type);
smp.smartPointer = AbstractMetaClass::findClass(m_builder->smartPointers(),
type.typeEntry());
Q_ASSERT(smp.smartPointer);