diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2019-10-25 15:36:38 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2019-10-28 10:14:28 +0200 |
commit | 804ea316c174ef5b18658a46d072eedbe03c534b (patch) | |
tree | 10a42f3f22e6e11ba21a6b27b711b9126d5800c5 | |
parent | ec895efb580eacbdcf59d03d6c8fe027b22fa696 (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>
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)); |