From 55d871a8abfd9c29b96ecf7c011c3b3b9fd05d31 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 20 Apr 2018 16:01:25 +0200 Subject: shiboken: Strip parameters of invalid type with a default value expression For example for: void QWebEnginePage::findText(const QString &subString, FindFlags options = FindFlags(), const QWebEngineCallback &resultCallback = QWebEngineCallback()) the resultCallback will be removed and a binding for void QWebEnginePage::findText(const QString &subString, FindFlags options) generated. Task-number: PYSIDE-487 Change-Id: I6299d1735ad6c00e257daecb64d8f2f235140a98 Reviewed-by: Cristian Maureira-Fredes Reviewed-by: Christian Tismer --- sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'sources/shiboken2/ApiExtractor') diff --git a/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp b/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp index 739e32896..b862ba548 100644 --- a/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp +++ b/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp @@ -2088,6 +2088,20 @@ AbstractMetaFunction *AbstractMetaBuilderPrivate::traverseFunction(FunctionModel bool ok; AbstractMetaType* metaType = translateType(arg->type(), &ok); if (!ok) { + // If an invalid argument has a default value, simply remove it + if (arg->defaultValue()) { + if (!m_currentClass + || (m_currentClass->typeEntry()->codeGeneration() + & TypeEntry::GenerateTargetLang)) { + qCWarning(lcShiboken).noquote().nospace() + << "Stripping argument #" << (i + 1) << " of " + << originalQualifiedSignatureWithReturn + << " due to unmatched type \"" << arg->type().toString() + << "\" with default expression \"" + << arg->defaultValueExpression() << "\"."; + } + break; + } Q_ASSERT(metaType == 0); const QString reason = msgUnmatchedParameterType(arg, i); qCWarning(lcShiboken).noquote().nospace() @@ -2123,7 +2137,7 @@ AbstractMetaFunction *AbstractMetaBuilderPrivate::traverseFunction(FunctionModel metaFunction->setArguments(metaArguments); // Find the correct default values - for (int i = 0; i < arguments.size(); ++i) { + for (int i = 0, size = metaArguments.size(); i < size; ++i) { ArgumentModelItem arg = arguments.at(i); AbstractMetaArgument* metaArg = metaArguments.at(i); -- cgit v1.2.3