diff options
-rw-r--r-- | generator/cppgenerator.cpp | 8 | ||||
-rw-r--r-- | libshiboken/basewrapper.cpp | 6 | ||||
-rw-r--r-- | tests/libsample/samplenamespace.h | 3 | ||||
-rw-r--r-- | tests/samplebinding/typesystem_sample.xml | 4 |
4 files changed, 15 insertions, 6 deletions
diff --git a/generator/cppgenerator.cpp b/generator/cppgenerator.cpp index 1ad7a2d1..79cabead 100644 --- a/generator/cppgenerator.cpp +++ b/generator/cppgenerator.cpp @@ -533,7 +533,7 @@ void CppGenerator::writeVirtualMethodNative(QTextStream &s, const AbstractMetaFu s << INDENT << THREAD_STATE_SAVER_VAR ".save();" << endl; } - s << INDENT << "return this->" << func->implementingClass()->qualifiedCppName() << "::"; + s << INDENT << "return this->::" << func->implementingClass()->qualifiedCppName() << "::"; writeFunctionCall(s, func, Generator::VirtualCall); } } @@ -2041,7 +2041,7 @@ void CppGenerator::writeMethodCall(QTextStream& s, const AbstractMetaFunction* f if (!func->isStatic()) mc << CPP_SELF_VAR "->"; if (!func->isAbstract()) - mc << func->ownerClass()->qualifiedCppName() << "::"; + mc << "::" << func->ownerClass()->qualifiedCppName() << "::"; mc << func->originalName(); #else if (!func->isStatic()) { @@ -2050,7 +2050,7 @@ void CppGenerator::writeMethodCall(QTextStream& s, const AbstractMetaFunction* f mc << CPP_SELF_VAR << (func->isProtected() ? ")" : "") << "->"; } if (!func->isAbstract()) - mc << (func->isProtected() ? wrapperName(func->ownerClass()) : func->ownerClass()->qualifiedCppName()) << "::"; + mc << (func->isProtected() ? wrapperName(func->ownerClass()) : "::" + func->ownerClass()->qualifiedCppName()) << "::"; mc << func->originalName() << (func->isProtected() ? "_protected" : ""); #endif } else { @@ -3077,7 +3077,7 @@ void CppGenerator::writeSignalInitialization(QTextStream& s, const AbstractMetaC if ((cppSignature != originalSignature) && !knowTypes.contains(originalSignature)) { knowTypes << originalSignature; - s << INDENT << "Shiboken::TypeResolver::createValueTypeResolver<" + s << INDENT << "Shiboken::TypeResolver::createValueTypeResolver<" << cppSignature << " >" << "(\"" << originalSignature << "\");\n"; } diff --git a/libshiboken/basewrapper.cpp b/libshiboken/basewrapper.cpp index 7f7b8da8..2c1129b2 100644 --- a/libshiboken/basewrapper.cpp +++ b/libshiboken/basewrapper.cpp @@ -576,7 +576,11 @@ void setErrorAboutWrongArguments(PyObject* args, const char* funcName, const cha for (int i = 0, max = PyTuple_GET_SIZE(args); i < max; ++i) { if (i) params += ", "; - params += PyTuple_GET_ITEM(args, i)->ob_type->tp_name; + PyObject* arg = PyTuple_GET_ITEM(args, i); + if (PyCObject_Check(arg)) + params += "pointer"; + else + params += arg->ob_type->tp_name; } } else { params = args->ob_type->tp_name; diff --git a/tests/libsample/samplenamespace.h b/tests/libsample/samplenamespace.h index d00bbb1f..da01ac1f 100644 --- a/tests/libsample/samplenamespace.h +++ b/tests/libsample/samplenamespace.h @@ -99,6 +99,9 @@ public: class DerivedFromNamespace : public SomeClass::SomeInnerClass::OkThisIsRecursiveEnough { public: + //only cause namespace confusion + enum SampleNamespace { + }; virtual OkThisIsRecursiveEnough* someVirtualMethod(OkThisIsRecursiveEnough* arg) { return arg; } inline OkThisIsRecursiveEnough* methodReturningTypeFromParentScope() { return 0; } }; diff --git a/tests/samplebinding/typesystem_sample.xml b/tests/samplebinding/typesystem_sample.xml index 319cc658..9d14681a 100644 --- a/tests/samplebinding/typesystem_sample.xml +++ b/tests/samplebinding/typesystem_sample.xml @@ -87,7 +87,9 @@ <enum-type name="OutValue"/> <enum-type identified-by-value="AnonymousClassEnum_Value1"/> - <object-type name="DerivedFromNamespace" /> + <object-type name="DerivedFromNamespace"> + <enum-type name="SampleNamespace"/> + </object-type> <value-type name="SomeClass"> <value-type name="SomeInnerClass"> <object-type name="OkThisIsRecursiveEnough"> |