From 517a48de8ec497f7e8367d64a28bf4c19e8a4744 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Thu, 12 Nov 2009 10:45:53 +1000 Subject: QML C++ class-in-namespace test --- src/tools/moc/generator.cpp | 3 ++- tests/auto/declarative/qmllanguage/testtypes.cpp | 1 + tests/auto/declarative/qmllanguage/testtypes.h | 12 ++++++++++++ .../declarative/qmllanguage/tst_qmllanguage.cpp | 21 ++++++++++++++++----- 4 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/tools/moc/generator.cpp b/src/tools/moc/generator.cpp index 1ed6586..b67b4cf 100644 --- a/src/tools/moc/generator.cpp +++ b/src/tools/moc/generator.cpp @@ -292,7 +292,8 @@ void Generator::generateCode() QList extraList; for (int i = 0; i < cdef->propertyList.count(); ++i) { const PropertyDef &p = cdef->propertyList.at(i); - if (!isVariantType(p.type) && !metaTypes.contains(p.type)) { + if (!isVariantType(p.type) && !metaTypes.contains(p.type) && !p.type.contains('*') && + !p.type.contains('<') && !p.type.contains('>')) { int s = p.type.lastIndexOf("::"); if (s > 0) { QByteArray scope = p.type.left(s); diff --git a/tests/auto/declarative/qmllanguage/testtypes.cpp b/tests/auto/declarative/qmllanguage/testtypes.cpp index c370c09..933431d 100644 --- a/tests/auto/declarative/qmllanguage/testtypes.cpp +++ b/tests/auto/declarative/qmllanguage/testtypes.cpp @@ -47,4 +47,5 @@ QML_DEFINE_TYPE(Test,1,0,MyContainer,MyContainer); QML_DEFINE_TYPE(Test,1,0,MyPropertyValueSource,MyPropertyValueSource); QML_DEFINE_TYPE(Test,1,0,MyDotPropertyObject,MyDotPropertyObject); QML_DEFINE_TYPE(Test,1,0,MyNamespacedType,MyNamespace::MyNamespacedType); +QML_DEFINE_TYPE(Test,1,0,MySecondNamespacedType,MyNamespace::MySecondNamespacedType); QML_DEFINE_NOCREATE_TYPE(MyGroupedObject); diff --git a/tests/auto/declarative/qmllanguage/testtypes.h b/tests/auto/declarative/qmllanguage/testtypes.h index b251f87..3598d68 100644 --- a/tests/auto/declarative/qmllanguage/testtypes.h +++ b/tests/auto/declarative/qmllanguage/testtypes.h @@ -535,7 +535,19 @@ namespace MyNamespace { { Q_OBJECT }; + + class MySecondNamespacedType : public QObject + { + Q_OBJECT + Q_PROPERTY(QmlList *list READ list); + public: + QmlList *list() { return &m_list; } + + private: + QmlConcreteList m_list; + }; } QML_DECLARE_TYPE(MyNamespace::MyNamespacedType); +QML_DECLARE_TYPE(MyNamespace::MySecondNamespacedType); #endif // TESTTYPES_H diff --git a/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp b/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp index a05ee06..d5c5c4d 100644 --- a/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp +++ b/tests/auto/declarative/qmllanguage/tst_qmllanguage.cpp @@ -693,11 +693,22 @@ void tst_qmllanguage::valueTypes() void tst_qmllanguage::cppnamespace() { - QmlComponent component(&engine, TEST_FILE("cppnamespace.qml")); - VERIFY_ERRORS(0); - QObject *object = component.create(); - QVERIFY(object != 0); - delete object; + { + QmlComponent component(&engine, TEST_FILE("cppnamespace.qml")); + VERIFY_ERRORS(0); + QObject *object = component.create(); + QVERIFY(object != 0); + delete object; + } + + { + QmlComponent component(&engine, TEST_FILE("cppnamespace.2.qml")); + qWarning() << component.errors(); + VERIFY_ERRORS(0); + QObject *object = component.create(); + QVERIFY(object != 0); + delete object; + } } void tst_qmllanguage::aliasProperties() -- cgit v0.12