diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-07-22 14:42:50 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-07-22 15:49:00 +0200 |
commit | c58c3e5a99a4dee992fd4c7898185181ecc84ae7 (patch) | |
tree | 89fcc73e03658ade4c0e8155e8aceccaf263b00e /sources/shiboken2/generator | |
parent | 2dc1b659921d72aeac1c12d8c903de9704e6419f (diff) |
Enable adding operators ==, != as functions without code injection
As of Qt 6, there is a trend of hiding bool returns of comparison operators
of container classes behind some template expression which the clang parser
cannot identify. To work arouind such cases, make it possible to add
them as functions without code injection which will generate the
default code.
Task-number: PYSIDE-1339
Task-number: PYSIDE-904
Change-Id: Ia7bf5d583e0f80505fe1b759347955fec5dca600
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'sources/shiboken2/generator')
-rw-r--r-- | sources/shiboken2/generator/shiboken2/cppgenerator.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/sources/shiboken2/generator/shiboken2/cppgenerator.cpp b/sources/shiboken2/generator/shiboken2/cppgenerator.cpp index 54af34180..069431e59 100644 --- a/sources/shiboken2/generator/shiboken2/cppgenerator.cpp +++ b/sources/shiboken2/generator/shiboken2/cppgenerator.cpp @@ -4557,10 +4557,17 @@ void CppGenerator::writeRichCompareFunction(QTextStream &s, const GeneratorConte QString(), func->isUserAdded()); // If the function is user added, use the inject code + bool generateOperatorCode = true; if (func->isUserAdded()) { CodeSnipList snips = func->injectedCodeSnips(); - writeCodeSnips(s, snips, TypeSystem::CodeSnipPositionAny, TypeSystem::TargetLangCode, func, func->arguments().constLast()); - } else { + if (!snips.isEmpty()) { + writeCodeSnips(s, snips, TypeSystem::CodeSnipPositionAny, + TypeSystem::TargetLangCode, func, + func->arguments().constLast()); + generateOperatorCode = false; + } + } + if (generateOperatorCode) { s << INDENT; if (func->type()) s << func->type()->cppSignature() << " " << CPP_RETURN_VAR << " = "; |