diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2017-03-17 15:01:12 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2017-03-17 14:28:43 +0000 |
commit | 2ab4062e9d07a821e4d205dde7dead85e4c69161 (patch) | |
tree | f4f8af7b10082b7d221c59bae3468b9425736105 | |
parent | a9cfd514d33361c34d752cbea56d8a8ca9f9dede (diff) |
Mention class name in warning about Unknown Operator
Currently happens with Clang 4.0 for operator! for Point[F].
Task-number: PYSIDE-323
Change-Id: I212d107ce15dc98b400e898181655abdebdfc848
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
-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__"); |