diff options
Diffstat (limited to 'generator/shiboken2/shibokengenerator.cpp')
-rw-r--r-- | generator/shiboken2/shibokengenerator.cpp | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/generator/shiboken2/shibokengenerator.cpp b/generator/shiboken2/shibokengenerator.cpp index 6238c31..8985891 100644 --- a/generator/shiboken2/shibokengenerator.cpp +++ b/generator/shiboken2/shibokengenerator.cpp @@ -779,12 +779,25 @@ QString ShibokenGenerator::cpythonTypeNameExt(const AbstractMetaType* type) + getTypeIndexVariableName(type) + QLatin1Char(']'); } +static QString msgUnknownOperator(const AbstractMetaFunction* func) +{ + QString result = QLatin1String("Unknown operator: \"") + func->originalName() + QLatin1Char('"'); + if (const AbstractMetaClass *c = func->implementingClass()) + result += QLatin1String(" in class: ") + c->name(); + return result; +} + +static inline QString unknownOperator() { return QStringLiteral("__UNKNOWN_OPERATOR__"); } + QString ShibokenGenerator::cpythonOperatorFunctionName(const AbstractMetaFunction* func) { if (!func->isOperatorOverload()) return QString(); + const QString pythonOp = pythonOperatorFunctionName(func->originalName()); + if (pythonOp == unknownOperator()) + qCWarning(lcShiboken).noquote().nospace() << msgUnknownOperator(func); return QLatin1String("Sbk") + func->ownerClass()->name() - + QLatin1Char('_') + pythonOperatorFunctionName(func->originalName()); + + QLatin1Char('_') + pythonOp; } QString ShibokenGenerator::fixedCppTypeName(const CustomConversion::TargetToNativeConversion* toNative) @@ -847,10 +860,8 @@ QString ShibokenGenerator::pythonPrimitiveTypeName(const PrimitiveTypeEntry* typ QString ShibokenGenerator::pythonOperatorFunctionName(QString cppOpFuncName) { QString value = m_pythonOperators.value(cppOpFuncName); - if (value.isEmpty()) { - qCWarning(lcShiboken).noquote().nospace() << "Unknown operator: " << cppOpFuncName; - value = QLatin1String("UNKNOWN_OPERATOR"); - } + if (value.isEmpty()) + return unknownOperator(); value.prepend(QLatin1String("__")); value.append(QLatin1String("__")); return value; @@ -859,6 +870,8 @@ QString ShibokenGenerator::pythonOperatorFunctionName(QString cppOpFuncName) QString ShibokenGenerator::pythonOperatorFunctionName(const AbstractMetaFunction* func) { QString op = pythonOperatorFunctionName(func->originalName()); + if (op == unknownOperator()) + qCWarning(lcShiboken).noquote().nospace() << msgUnknownOperator(func); if (func->arguments().isEmpty()) { if (op == QLatin1String("__sub__")) op = QLatin1String("__neg__"); |