aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2017-03-17 15:01:12 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2017-03-17 14:28:43 +0000
commit2ab4062e9d07a821e4d205dde7dead85e4c69161 (patch)
treef4f8af7b10082b7d221c59bae3468b9425736105
parenta9cfd514d33361c34d752cbea56d8a8ca9f9dede (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.cpp23
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__");