diff options
-rw-r--r-- | cppgenerator.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/cppgenerator.cpp b/cppgenerator.cpp index 2a70d94fc..6f9a20538 100644 --- a/cppgenerator.cpp +++ b/cppgenerator.cpp @@ -546,11 +546,17 @@ void CppGenerator::writeVirtualMethodNative(QTextStream &s, const AbstractMetaFu s << INDENT << INDENT << ";" << endl; s << INDENT << "}" << endl; - s << INDENT; - s << translateTypeForWrapperMethod(func->type(), func->implementingClass()) << ' ' << CPP_RETURN_VAR << "("; - writeToCppConversion(s, func->type(), func->implementingClass(), PYTHON_RETURN_VAR); - s << ')'; - s << ';' << endl; + bool hasConversionRule = !func->conversionRule(TypeSystem::NativeCode, 0).isEmpty(); + if (hasConversionRule) { + CodeSnipList convRule = getReturnConversionRule(TypeSystem::NativeCode, func, "", CPP_RETURN_VAR); + writeCodeSnips(s, convRule, CodeSnip::Any, TypeSystem::NativeCode, func); + } else if (!injectedCodeHasReturnValueAttribution(func, TypeSystem::NativeCode)) { + s << INDENT; + s << translateTypeForWrapperMethod(func->type(), func->implementingClass()) << ' ' << CPP_RETURN_VAR << "("; + writeToCppConversion(s, func->type(), func->implementingClass(), PYTHON_RETURN_VAR); + s << ')'; + s << ';' << endl; + } } } |