diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 48f94ee9f..0c2e78e15 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -340,7 +340,7 @@ jobs:
# qt-version: '5.9.*'
# pythonqtall-config: 'PythonQtCore PythonQtGui PythonQtMultimedia'
- runs-on: windows-latest
+ runs-on: windows-2022
steps:
- name: Checkout PythonQt
diff --git a/.github/workflows/build_latest.yml b/.github/workflows/build_latest.yml
index 9d421f030..a10cd8052 100644
--- a/.github/workflows/build_latest.yml
+++ b/.github/workflows/build_latest.yml
@@ -20,9 +20,9 @@ jobs:
fail-fast: false
matrix:
os: ['ubuntu', 'windows']
- qt-version: [ '5.12.*', '5.15.*', '6.10.*' ]
+ qt-version: [ '5.12.*', '5.15.*', '6.11.*' ]
python-version: [ '3.12' ]
- runs-on: ${{ matrix.os }}-latest
+ runs-on: ${{ matrix.os == 'windows' && 'windows-2022' || 'ubuntu-latest' }}
steps:
- name: Install MSVC
@@ -37,6 +37,9 @@ jobs:
version: ${{ matrix.qt-version }}
modules: ${{startsWith(matrix.qt-version, '6') && 'qt5compat qtscxml qtpositioning qtwebchannel qtmultimedia qtwebengine' || '' }}
arch: ${{ (matrix.os == 'ubuntu' && (startsWith(matrix.qt-version, '5') && 'gcc_64' || 'linux_gcc_64')) || startsWith(matrix.qt-version, '5.12') && 'win64_msvc2017_64' || startsWith(matrix.qt-version, '6') && 'win64_msvc2022_64' || 'win64_msvc2019_64' }}
+ # aqtinstall 3.3.0 (latest release) lacks Qt 6.11 folder-structure support.
+ # Use git 151f6f4 until aqtinstall 3.4.0 is released (miurahr/aqtinstall#1000).
+ aqtsource: ${{ startsWith(matrix.qt-version, '6.11') && 'git+https://github.com/miurahr/aqtinstall.git@151f6f436c2f5a5ceb7890ad970ca6f3b4d83512' || '' }}
- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
diff --git a/generator/parser/codemodel.cpp b/generator/parser/codemodel.cpp
index ec2ecd979..d97a20278 100644
--- a/generator/parser/codemodel.cpp
+++ b/generator/parser/codemodel.cpp
@@ -156,8 +156,13 @@ TypeInfo TypeInfo::resolveType(TypeInfo const& __type, CodeModelItem __scope)
otherType.setQualifiedName(__item->qualifiedName());
}
- if (TypeAliasModelItem __alias = __item.dynamicCast<_TypeAliasModelItem>())
- return resolveType(TypeInfo::combine(__alias->type(), otherType), __scope);
+ if (TypeAliasModelItem __alias = __item.dynamicCast<_TypeAliasModelItem>()) {
+ TypeInfo updatedTypeInfo = TypeInfo::combine(__alias->type(), otherType);
+ // avoid endless recursion on trivial identity (because this model doesn't, e.g., handle templates)
+ if (updatedTypeInfo != __type) {
+ return resolveType(updatedTypeInfo, __scope);
+ }
+ }
return otherType;
}
diff --git a/generator/typesystem_core.xml b/generator/typesystem_core.xml
index 46d1b8508..6eb85713e 100644
--- a/generator/typesystem_core.xml
+++ b/generator/typesystem_core.xml
@@ -526,6 +526,7 @@
+
@@ -720,6 +721,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1123,6 +1156,7 @@ public:
+
@@ -2235,6 +2269,7 @@ public:
+
@@ -2281,6 +2316,7 @@ public:
+
diff --git a/generator/typesystem_gui.xml b/generator/typesystem_gui.xml
index 582994b46..e0511c955 100644
--- a/generator/typesystem_gui.xml
+++ b/generator/typesystem_gui.xml
@@ -41,6 +41,7 @@
+
@@ -407,6 +408,7 @@
+
@@ -657,6 +659,7 @@
+
@@ -2873,6 +2876,10 @@ PyObject* constScanLine(QImage* image, int line) {
+
+
+
+
diff --git a/generator/typesystem_sql.xml b/generator/typesystem_sql.xml
index f80d9bef9..f7702adef 100644
--- a/generator/typesystem_sql.xml
+++ b/generator/typesystem_sql.xml
@@ -11,6 +11,8 @@
+
+