aboutsummaryrefslogtreecommitdiffstats
path: root/tests/testtemplates.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/testtemplates.cpp')
-rw-r--r--tests/testtemplates.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/testtemplates.cpp b/tests/testtemplates.cpp
index 97738fda7..2eb66acb2 100644
--- a/tests/testtemplates.cpp
+++ b/tests/testtemplates.cpp
@@ -142,6 +142,41 @@ void TestTemplates::testTemplateInheritanceMixedWithForwardDeclaration()
QCOMPARE(classB->functions().count(), 3);
}
+void TestTemplates::testTemplateInheritanceMixedWithNamespaceAndForwardDeclaration()
+{
+ const char cppCode[] = "\
+ namespace Namespace {\
+ enum SomeEnum { E1, E2 };\
+ template<SomeEnum type> struct Future;\
+ template<SomeEnum type>\
+ struct A {\
+ A();\
+ void method();\
+ friend struct Future<type>;\
+ };\
+ typedef A<E1> B;\
+ template<SomeEnum type> struct Future {};\
+ };\
+ ";
+ const char xmlCode[] = "\
+ <typesystem package='Package'>\
+ <namespace-type name='Namespace' />\
+ <enum-type name='Namespace::SomeEnum' />\
+ <value-type name='Namespace::A' generate='no' />\
+ <value-type name='Namespace::B' />\
+ <value-type name='Namespace::Future' generate='no' />\
+ </typesystem>";
+
+ TestUtil t(cppCode, xmlCode, false);
+ AbstractMetaClassList classes = t.builder()->classes();
+
+ AbstractMetaClass* classB = classes.findClass("Namespace::B");
+ QVERIFY(!classB->baseClass());
+ QVERIFY(classB->baseClassName().isNull());
+ // 3 functions: simple constructor, copy constructor and "method()".
+ QCOMPARE(classB->functions().count(), 3);
+}
+
QTEST_APPLESS_MAIN(TestTemplates)
#include "testtemplates.moc"