aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2022-09-30 10:49:33 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2022-10-06 15:45:53 +0200
commit1a19aaf5476d31ad8c81fdfd2e05f582975a668b (patch)
treec9a4fdb9a2fcbaf0c0fc43e41cfb224700c120f8
parentf49c46c91257955078126c1a678b3881bde9ef45 (diff)
shiboken6: Fix further warnings about unused variables in generated code
Indicate parameters of constructors of abstract classes and removed parameters of virtual methods as unused. Amends c485dbc72d7e4080c5977e516237d3839e67b3d9. Change-Id: I3cc5089a119fe25b0bce7bf95ba97cd304ffb430 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Christian Tismer <tismer@stackless.com>
-rw-r--r--sources/shiboken6/generator/shiboken/cppgenerator.cpp18
1 files changed, 12 insertions, 6 deletions
diff --git a/sources/shiboken6/generator/shiboken/cppgenerator.cpp b/sources/shiboken6/generator/shiboken/cppgenerator.cpp
index eeafbd60b..e2c03b12c 100644
--- a/sources/shiboken6/generator/shiboken/cppgenerator.cpp
+++ b/sources/shiboken6/generator/shiboken/cppgenerator.cpp
@@ -1332,9 +1332,9 @@ void CppGenerator::writeVirtualMethodNativeArgs(TextStream &s,
}
}
-static bool isArgumentRemoved(const AbstractMetaArgument &a)
+static bool isArgumentNotRemoved(const AbstractMetaArgument &a)
{
- return a.isModifiedRemoved();
+ return !a.isModifiedRemoved();
}
void CppGenerator::writeVirtualMethodNative(TextStream &s,
@@ -1353,7 +1353,8 @@ void CppGenerator::writeVirtualMethodNative(TextStream &s,
const QString returnStatement = virtualMethodReturn(s, api(), func,
func->modifications());
- if (func->isAbstract() && func->isModifiedRemoved()) {
+ const bool isAbstract = func->isAbstract();
+ if (isAbstract && func->isModifiedRemoved()) {
qCWarning(lcShiboken, "%s", qPrintable(msgPureVirtualFunctionRemoved(func.data())));
s << returnStatement << '\n' << outdent << "}\n\n";
return;
@@ -1380,7 +1381,7 @@ void CppGenerator::writeVirtualMethodNative(TextStream &s,
<< R"(] << '\n';)" << '\n';
}
// PYSIDE-803: Build a boolean cache for unused overrides
- const bool multi_line = func->isVoid() || !snips.isEmpty() || func->isAbstract();
+ const bool multi_line = func->isVoid() || !snips.isEmpty() || isAbstract;
s << "if (m_PyMethodCache[" << cacheIndex << "])" << (multi_line ? " {\n" : "\n")
<< indent;
writeVirtualMethodCppCall(s, func, funcName, snips, lastArg, retType,
@@ -1441,7 +1442,12 @@ void CppGenerator::writeVirtualMethodNative(TextStream &s,
std::sort(invalidateArgs.begin(), invalidateArgs.end());
auto arguments = func->arguments();
- auto removedEnd = std::remove_if(arguments.begin(), arguments.end(), isArgumentRemoved);
+ auto removedEnd = std::stable_partition(arguments.begin(), arguments.end(),
+ isArgumentNotRemoved);
+ if (isAbstract) { // Base function is not called, indicate unused arguments.
+ for (auto it = removedEnd; it != arguments.end(); ++it)
+ s << sbkUnusedVariableCast(it->name());
+ }
arguments.erase(removedEnd, arguments.end());
writeVirtualMethodNativeArgs(s, func, arguments, invalidateArgs);
s << '\n';
@@ -2258,7 +2264,7 @@ void CppGenerator::writeConstructorWrapper(TextStream &s, const OverloadData &ov
s << "static int\n";
s << cpythonFunctionName(rfunc)
<< "(PyObject *self, PyObject *args, PyObject *kwds)\n{\n" << indent;
- if (overloadData.maxArgs() == 0)
+ if (overloadData.maxArgs() == 0 || metaClass->isAbstract())
s << sbkUnusedVariableCast(u"args"_s);
s << sbkUnusedVariableCast(u"kwds"_s);