aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/qmltc
diff options
context:
space:
mode:
authorAndrei Golubev <andrei.golubev@qt.io>2022-07-27 10:37:15 +0200
committerAndrei Golubev <andrei.golubev@qt.io>2022-07-27 17:16:56 +0200
commite14b7fe59767e972a32aed7b019d01def14b429c (patch)
tree14154fea911db92a4fdae70bb2cfd09a21299b4b /tests/auto/qml/qmltc
parent9e537f9ee9cb42e80a80360dee6c77f3af359e2d (diff)
qmltc: Fix alias assignment code generation
Fix subtle issue where alias assignment would cause qmltc to generate direct property set code (doesn't work for aliases since those do not have "real" properties) Remove now redundant TODO and identical code path when compiling alias assignments on types with composite bases (used to work poorly during prototype times) Pick-to: 6.4 Change-Id: Ifacf5872ff5432a748fb1ec16c300ec844d65e9a Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'tests/auto/qml/qmltc')
-rw-r--r--tests/auto/qml/qmltc/QmltcTests/AliasBase.qml7
-rw-r--r--tests/auto/qml/qmltc/QmltcTests/CMakeLists.txt2
-rw-r--r--tests/auto/qml/qmltc/QmltcTests/aliasAssignments.qml10
-rw-r--r--tests/auto/qml/qmltc/tst_qmltc.cpp19
-rw-r--r--tests/auto/qml/qmltc/tst_qmltc.h1
5 files changed, 39 insertions, 0 deletions
diff --git a/tests/auto/qml/qmltc/QmltcTests/AliasBase.qml b/tests/auto/qml/qmltc/QmltcTests/AliasBase.qml
new file mode 100644
index 0000000000..b37d58b7c3
--- /dev/null
+++ b/tests/auto/qml/qmltc/QmltcTests/AliasBase.qml
@@ -0,0 +1,7 @@
+import QtQuick
+
+Text {
+ id: base
+ property alias alias1: base.font.letterSpacing
+ alias1: 2
+}
diff --git a/tests/auto/qml/qmltc/QmltcTests/CMakeLists.txt b/tests/auto/qml/qmltc/QmltcTests/CMakeLists.txt
index a637945a2c..89159918be 100644
--- a/tests/auto/qml/qmltc/QmltcTests/CMakeLists.txt
+++ b/tests/auto/qml/qmltc/QmltcTests/CMakeLists.txt
@@ -39,6 +39,8 @@ set(qml_sources
nonStandardInclude.qml
specialProperties.qml
regexpBindings.qml
+ AliasBase.qml
+ aliasAssignments.qml
qtbug103956/SubComponent.qml
qtbug103956/MainComponent.qml
diff --git a/tests/auto/qml/qmltc/QmltcTests/aliasAssignments.qml b/tests/auto/qml/qmltc/QmltcTests/aliasAssignments.qml
new file mode 100644
index 0000000000..c52562f2ce
--- /dev/null
+++ b/tests/auto/qml/qmltc/QmltcTests/aliasAssignments.qml
@@ -0,0 +1,10 @@
+import QtQuick
+import QmltcTests
+
+AliasBase {
+ id: derived
+ property alias alias2: derived.font.letterSpacing
+
+ alias1: 4
+ alias2: 4
+}
diff --git a/tests/auto/qml/qmltc/tst_qmltc.cpp b/tests/auto/qml/qmltc/tst_qmltc.cpp
index 39f892c845..87ec8bd131 100644
--- a/tests/auto/qml/qmltc/tst_qmltc.cpp
+++ b/tests/auto/qml/qmltc/tst_qmltc.cpp
@@ -26,6 +26,7 @@
#include "nonstandardinclude.h"
#include "specialproperties.h"
#include "regexpbindings.h"
+#include "aliasassignments.h"
#include "signalhandlers.h"
#include "javascriptfunctions.h"
@@ -129,6 +130,8 @@ void tst_qmltc::initTestCase()
QUrl("qrc:/qt/qml/QmltcTests/nonStandardInclude.qml"),
QUrl("qrc:/qt/qml/QmltcTests/specialProperties.qml"),
QUrl("qrc:/qt/qml/QmltcTests/regexpBindings.qml"),
+ QUrl("qrc:/qt/qml/QmltcTests/AliasBase.qml"),
+ QUrl("qrc:/qt/qml/QmltcTests/aliasAssignments.qml"),
QUrl("qrc:/qt/qml/QmltcTests/qtbug103956/SubComponent.qml"),
QUrl("qrc:/qt/qml/QmltcTests/qtbug103956/MainComponent.qml"),
@@ -884,6 +887,22 @@ void tst_qmltc::regexpBindings()
QVERIFY(created.regularExpression().match(u"abbbc"_s).hasMatch());
}
+void tst_qmltc::aliasAssignments()
+{
+ {
+ QQmlEngine e;
+ PREPEND_NAMESPACE(AliasBase) created(&e);
+ QCOMPARE(created.alias1(), 2);
+ }
+
+ {
+ QQmlEngine e;
+ PREPEND_NAMESPACE(aliasAssignments) created(&e);
+ QCOMPARE(created.alias1(), 4);
+ QCOMPARE(created.alias2(), 4);
+ }
+}
+
void tst_qmltc::signalHandlers()
{
QQmlEngine e;
diff --git a/tests/auto/qml/qmltc/tst_qmltc.h b/tests/auto/qml/qmltc/tst_qmltc.h
index 6a4c3980bb..60209b9a47 100644
--- a/tests/auto/qml/qmltc/tst_qmltc.h
+++ b/tests/auto/qml/qmltc/tst_qmltc.h
@@ -38,6 +38,7 @@ private slots:
void nonStandardIncludesInsideModule(); // QTBUG-104094
void specialProperties();
void regexpBindings();
+ void aliasAssignments();
void signalHandlers();
void jsFunctions();