aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Cummings <jcummings2@users.sf.net>2012-09-11 10:59:08 -0500
committerHugo Parente Lima <hugo.lima@openbossa.org>2012-09-11 19:02:21 +0200
commiteb293c2839cfbc726f0e085e1435c94b6f6561f9 (patch)
treee49248f46dbe7c82a48bccd8b432b622e04da88a
parenta3cecbab9735d40f97c0a031dd17ac594cf39e82 (diff)
Fix PYSIDE-108 bug and add example
Replace "::" with "_" in protected enum name to fix issue Add test case to libsample and samplebinding Change-Id: I2edea2dfa8adecfe5fa34f777da9f60cfe4c6ee4 Reviewed-by: Hugo Parente Lima <hugo.lima@openbossa.org>
-rw-r--r--generator/shiboken/shibokengenerator.cpp2
-rw-r--r--tests/libsample/samplenamespace.h10
-rw-r--r--tests/samplebinding/namespace_test.py4
-rw-r--r--tests/samplebinding/typesystem_sample.xml2
4 files changed, 17 insertions, 1 deletions
diff --git a/generator/shiboken/shibokengenerator.cpp b/generator/shiboken/shibokengenerator.cpp
index 2ae213d..ba6c550 100644
--- a/generator/shiboken/shibokengenerator.cpp
+++ b/generator/shiboken/shibokengenerator.cpp
@@ -314,7 +314,7 @@ QString ShibokenGenerator::fullPythonFunctionName(const AbstractMetaFunction* fu
QString ShibokenGenerator::protectedEnumSurrogateName(const AbstractMetaEnum* metaEnum)
{
- return metaEnum->fullName().replace(".", "_") + "_Surrogate";
+ return metaEnum->fullName().replace(".", "_").replace("::", "_") + "_Surrogate";
}
QString ShibokenGenerator::protectedFieldGetterName(const AbstractMetaField* field)
diff --git a/tests/libsample/samplenamespace.h b/tests/libsample/samplenamespace.h
index d75afd8..ed18951 100644
--- a/tests/libsample/samplenamespace.h
+++ b/tests/libsample/samplenamespace.h
@@ -107,10 +107,20 @@ public:
inline int someMethod(SomeInnerClass*) { return 0; }
virtual OkThisIsRecursiveEnough* someVirtualMethod(OkThisIsRecursiveEnough* arg) { return arg; }
};
+ protected:
+ enum ProtectedEnum {
+ ProtectedItem0,
+ ProtectedItem1
+ };
};
struct SomeOtherInnerClass {
std::list<SomeInnerClass> someInnerClasses;
};
+protected:
+ enum ProtectedEnum {
+ ProtectedItem0,
+ ProtectedItem1
+ };
};
class DerivedFromNamespace : public SomeClass::SomeInnerClass::OkThisIsRecursiveEnough
diff --git a/tests/samplebinding/namespace_test.py b/tests/samplebinding/namespace_test.py
index 310f64a..efee9d5 100644
--- a/tests/samplebinding/namespace_test.py
+++ b/tests/samplebinding/namespace_test.py
@@ -43,7 +43,9 @@ class TestEnumUnderNamespace(unittest.TestCase):
class TestClassesUnderNamespace(unittest.TestCase):
def testIt(self):
c1 = SampleNamespace.SomeClass()
+ e1 = SampleNamespace.SomeClass.ProtectedEnum()
c2 = SampleNamespace.SomeClass.SomeInnerClass()
+ e2 = SampleNamespace.SomeClass.SomeInnerClass.ProtectedEnum()
c3 = SampleNamespace.SomeClass.SomeInnerClass.OkThisIsRecursiveEnough()
e3 = SampleNamespace.SomeClass.SomeInnerClass.OkThisIsRecursiveEnough.NiceEnum()
@@ -53,6 +55,8 @@ class TestClassesUnderNamespace(unittest.TestCase):
def testTpNames(self):
self.assertEquals(str(SampleNamespace.SomeClass), "<%s 'sample.SampleNamespace.SomeClass'>"%TYPE_STR)
+ self.assertEquals(str(SampleNamespace.SomeClass.ProtectedEnum), "<%s 'sample.SampleNamespace.SomeClass.ProtectedEnum'>"%TYPE_STR)
+ self.assertEquals(str(SampleNamespace.SomeClass.SomeInnerClass.ProtectedEnum), "<%s 'sample.SampleNamespace.SomeClass.SomeInnerClass.ProtectedEnum'>"%TYPE_STR)
self.assertEquals(str(SampleNamespace.SomeClass.SomeInnerClass.OkThisIsRecursiveEnough), "<%s 'sample.SampleNamespace.SomeClass.SomeInnerClass.OkThisIsRecursiveEnough'>"%TYPE_STR)
self.assertEquals(str(SampleNamespace.SomeClass.SomeInnerClass.OkThisIsRecursiveEnough.NiceEnum), "<%s 'sample.SampleNamespace.SomeClass.SomeInnerClass.OkThisIsRecursiveEnough.NiceEnum'>"%TYPE_STR)
diff --git a/tests/samplebinding/typesystem_sample.xml b/tests/samplebinding/typesystem_sample.xml
index f7c0645..6379dba 100644
--- a/tests/samplebinding/typesystem_sample.xml
+++ b/tests/samplebinding/typesystem_sample.xml
@@ -530,8 +530,10 @@
<object-type name="OkThisIsRecursiveEnough">
<enum-type name="NiceEnum" />
</object-type>
+ <enum-type name="ProtectedEnum"/>
</value-type>
<value-type name="SomeOtherInnerClass"/>
+ <enum-type name="ProtectedEnum"/>
</value-type>
<modify-function signature="doSomethingWithArray(const unsigned char*, unsigned int, const char*)">