aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2019-10-25 15:36:38 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2019-10-28 10:14:28 +0200
commit804ea316c174ef5b18658a46d072eedbe03c534b (patch)
tree10a42f3f22e6e11ba21a6b27b711b9126d5800c5
parentec895efb580eacbdcf59d03d6c8fe027b22fa696 (diff)
Properly nest types in type system files
Nesting types by specifying "::" currently works by coincidence (as long as no modifications or further elements apppear) since the lookup is mostly name-based. It might be removed in a follow-up step. Task-number: PYSIDE-990 Task-number: PYSIDE-1074 Change-Id: I43db8a25a192e94b6a6d51f78233c3526f719406 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
-rw-r--r--sources/pyside2/PySide2/QtCore/typesystem_core_common.xml6
-rw-r--r--sources/shiboken2/ApiExtractor/tests/testabstractmetaclass.cpp66
-rw-r--r--sources/shiboken2/ApiExtractor/tests/testcodeinjection.cpp2
-rw-r--r--sources/shiboken2/ApiExtractor/tests/testresolvetype.cpp16
-rw-r--r--sources/shiboken2/ApiExtractor/tests/testtemplates.cpp32
5 files changed, 66 insertions, 56 deletions
diff --git a/sources/pyside2/PySide2/QtCore/typesystem_core_common.xml b/sources/pyside2/PySide2/QtCore/typesystem_core_common.xml
index d3ca86b17..470e253b1 100644
--- a/sources/pyside2/PySide2/QtCore/typesystem_core_common.xml
+++ b/sources/pyside2/PySide2/QtCore/typesystem_core_common.xml
@@ -2844,9 +2844,9 @@
<include file-name="qobjectdefs.h" location="global"/>
<!-- This isn't part of Qt public API -->
<modify-function signature="connect(const QObject*,int,const QObject*,int,int,int*)" remove="all"/>
- </object-type>
- <object-type name="QMetaObject::Connection">
- <include file-name="qobjectdefs.h" location="global"/>
+ <object-type name="Connection">
+ <include file-name="qobjectdefs.h" location="global"/>
+ </object-type>
</object-type>
<value-type name="QMetaProperty" >
<!-- This isn't part of Qt public API -->
diff --git a/sources/shiboken2/ApiExtractor/tests/testabstractmetaclass.cpp b/sources/shiboken2/ApiExtractor/tests/testabstractmetaclass.cpp
index 98b493c67..b85a022b3 100644
--- a/sources/shiboken2/ApiExtractor/tests/testabstractmetaclass.cpp
+++ b/sources/shiboken2/ApiExtractor/tests/testabstractmetaclass.cpp
@@ -47,11 +47,12 @@ void TestAbstractMetaClass::testClassName()
void TestAbstractMetaClass::testClassNameUnderNamespace()
{
const char* cppCode ="namespace Namespace { class ClassName {}; }\n";
- const char* xmlCode = "\
- <typesystem package=\"Foo\">\n\
- <namespace-type name=\"Namespace\"/>\n\
- <value-type name=\"Namespace::ClassName\"/>\n\
- </typesystem>\n";
+ const char* xmlCode = R"XML(
+ <typesystem package="Foo">
+ <namespace-type name="Namespace">
+ <value-type name="ClassName"/>
+ </namespace-type>
+ </typesystem>)XML";
QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode));
QVERIFY(!builder.isNull());
AbstractMetaClassList classes = builder->classes();
@@ -201,11 +202,12 @@ void TestAbstractMetaClass::testDefaultValues()
class B {};\n\
void method(B b = B());\n\
};\n";
- const char* xmlCode = "\
- <typesystem package=\"Foo\">\n\
- <value-type name='A'/>\n\
- <value-type name='A::B'/>\n\
- </typesystem>\n";
+ const char* xmlCode = R"XML(
+ <typesystem package="Foo">
+ <value-type name='A'>
+ <value-type name='B'/>
+ </value-type>
+ </typesystem>)XML";
QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode));
QVERIFY(!builder.isNull());
AbstractMetaClassList classes = builder->classes();
@@ -224,17 +226,17 @@ void TestAbstractMetaClass::testModifiedDefaultValues()
class B {};\n\
void method(B b = B());\n\
};\n";
- const char* xmlCode = "\
- <typesystem package=\"Foo\">\n\
- <value-type name='A'>\n\
- <modify-function signature='method(A::B)'>\n\
- <modify-argument index='1'>\n\
- <replace-default-expression with='Hello'/>\n\
- </modify-argument>\n\
- </modify-function>\n\
- </value-type>\n\
- <value-type name='A::B'/>\n\
- </typesystem>\n";
+ const char* xmlCode = R"XML(
+ <typesystem package="Foo">
+ <value-type name='A'>
+ <modify-function signature='method(A::B)'>
+ <modify-argument index='1'>
+ <replace-default-expression with='Hello'/>
+ </modify-argument>
+ </modify-function>
+ <value-type name='B'/>
+ </value-type>
+ </typesystem>)XML";
QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode));
QVERIFY(!builder.isNull());
AbstractMetaClassList classes = builder->classes();
@@ -254,11 +256,12 @@ void TestAbstractMetaClass::testInnerClassOfAPolymorphicOne()
class B {};\n\
virtual void method();\n\
};\n";
- const char* xmlCode = "\
- <typesystem package=\"Foo\">\n\
- <object-type name='A'/>\n\
- <value-type name='A::B'/>\n\
- </typesystem>\n";
+ const char* xmlCode = R"XML(
+ <typesystem package="Foo">
+ <object-type name='A'>
+ <value-type name='B'/>
+ </object-type>
+ </typesystem>)XML";
QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode));
QVERIFY(!builder.isNull());
AbstractMetaClassList classes = builder->classes();
@@ -281,11 +284,12 @@ void TestAbstractMetaClass::testForwardDeclaredInnerClass()
public:\n\
void foo();\n\
};\n";
- const char xmlCode[] = "\
- <typesystem package=\"Foo\">\n\
- <value-type name='A'/>\n\
- <value-type name='A::B'/>\n\
- </typesystem>\n";
+ const char xmlCode[] = R"XML(
+ <typesystem package="Foo">
+ <value-type name='A'>
+ <value-type name='B'/>
+ </value-type>
+ </typesystem>)XML";
QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode));
QVERIFY(!builder.isNull());
AbstractMetaClassList classes = builder->classes();
diff --git a/sources/shiboken2/ApiExtractor/tests/testcodeinjection.cpp b/sources/shiboken2/ApiExtractor/tests/testcodeinjection.cpp
index c438e0c37..aeca2d3f4 100644
--- a/sources/shiboken2/ApiExtractor/tests/testcodeinjection.cpp
+++ b/sources/shiboken2/ApiExtractor/tests/testcodeinjection.cpp
@@ -71,8 +71,8 @@ void TestCodeInjections::testReadFile()
<value-type name='A'>\n\
<conversion-rule ") + attribute + QLatin1String("/>\n\
<inject-code class='target' ") + attribute + QLatin1String("/>\n\
+ <value-type name='B'/>\n\
</value-type>\n\
- <value-type name='A::B'/>\n\
</typesystem>\n");
QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode.toLocal8Bit().constData()));
QVERIFY(!builder.isNull());
diff --git a/sources/shiboken2/ApiExtractor/tests/testresolvetype.cpp b/sources/shiboken2/ApiExtractor/tests/testresolvetype.cpp
index 2e5a5759a..2203f3648 100644
--- a/sources/shiboken2/ApiExtractor/tests/testresolvetype.cpp
+++ b/sources/shiboken2/ApiExtractor/tests/testresolvetype.cpp
@@ -44,13 +44,15 @@ void TestResolveType::testResolveReturnTypeFromParentScope()
C* method();\n\
};\n\
};";
- const char* xmlCode = "\n\
- <typesystem package='Foo'>\n\
- <namespace-type name='A'/>\n\
- <value-type name='A::B'/>\n\
- <value-type name='A::B::C'/>\n\
- <value-type name='A::D'/>\n\
- </typesystem>";
+ const char* xmlCode = R"XML(
+ <typesystem package='Foo'>
+ <namespace-type name='A'>
+ <value-type name='B'>
+ <value-type name='C'/>
+ </value-type>
+ <value-type name='D'/>
+ </namespace-type>
+ </typesystem>)XML";
QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false));
QVERIFY(!builder.isNull());
AbstractMetaClassList classes = builder->classes();
diff --git a/sources/shiboken2/ApiExtractor/tests/testtemplates.cpp b/sources/shiboken2/ApiExtractor/tests/testtemplates.cpp
index 59b601f3b..5191cb38d 100644
--- a/sources/shiboken2/ApiExtractor/tests/testtemplates.cpp
+++ b/sources/shiboken2/ApiExtractor/tests/testtemplates.cpp
@@ -63,9 +63,10 @@ namespace Internet {
<typesystem package='Package.Internet'>
<load-typesystem name='%1' generate='no'/>
<container-type name='QList' type='list'/>
- <namespace-type name='Internet' generate='no'/>
- <value-type name='Internet::Url'/>
- <value-type name='Internet::Bookmarks'/>
+ <namespace-type name='Internet' generate='no'>
+ <value-type name='Url'/>
+ <value-type name='Bookmarks'/>
+ </namespace-type>
</typesystem>)XML").arg(file.fileName());
QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, qPrintable(xmlCode1), false));
@@ -97,11 +98,12 @@ namespace Namespace {
const char xmlCode[] = R"XML(
<typesystem package="Package">
<container-type name='QList' type='list'/>
- <namespace-type name='Namespace'/>
- <enum-type name='Namespace::SomeEnum'/>
+ <namespace-type name='Namespace'>
+ <enum-type name='SomeEnum'/>
+ <object-type name='A' generate='no'/>
+ <object-type name='B'/>
+ </namespace-type>
<object-type name='Base'/>
- <object-type name='Namespace::A' generate='no'/>
- <object-type name='Namespace::B'/>
</typesystem>)XML";
QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false));
@@ -211,8 +213,9 @@ struct List {
const char xmlCode[] = R"XML(
<typesystem package='Package'>
- <container-type name='List' type='list'/>
- <value-type name='List::Iterator'/>
+ <container-type name='List' type='list'>
+ <value-type name='Iterator'/>
+ </container-type>
</typesystem>)XML";
QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false));
@@ -324,11 +327,12 @@ template<SomeEnum type> struct Future {};
const char xmlCode[] = R"XML(
<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'/>
+ <namespace-type name='Namespace'>
+ <enum-type name='SomeEnum'/>
+ <value-type name='A' generate='no'/>
+ <value-type name='B'/>
+ <value-type name='Future' generate='no'/>
+ </namespace-type>
</typesystem>)XML";
QScopedPointer<AbstractMetaBuilder> builder(TestUtil::parse(cppCode, xmlCode, false));