diff options
author | Andrei Golubev <andrei.golubev@qt.io> | 2022-07-27 10:37:15 +0200 |
---|---|---|
committer | Andrei Golubev <andrei.golubev@qt.io> | 2022-07-29 15:22:53 +0200 |
commit | 7754582a2b5c5f966d320855a02088908bd94aad (patch) | |
tree | af4d543e58b7510d2cfcd05cd8fad3b318a47c60 /tests | |
parent | 4580f49fb9867fd0f6cf597a45fbe74b0f5d6a48 (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)
Change-Id: Ifacf5872ff5432a748fb1ec16c300ec844d65e9a
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
(cherry picked from commit e14b7fe59767e972a32aed7b019d01def14b429c)
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/qml/qmltc/QmltcTests/AliasBase.qml | 7 | ||||
-rw-r--r-- | tests/auto/qml/qmltc/QmltcTests/CMakeLists.txt | 2 | ||||
-rw-r--r-- | tests/auto/qml/qmltc/QmltcTests/aliasAssignments.qml | 10 | ||||
-rw-r--r-- | tests/auto/qml/qmltc/tst_qmltc.cpp | 19 | ||||
-rw-r--r-- | tests/auto/qml/qmltc/tst_qmltc.h | 1 |
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 243a75e9fb..45fc2492dd 100644 --- a/tests/auto/qml/qmltc/QmltcTests/CMakeLists.txt +++ b/tests/auto/qml/qmltc/QmltcTests/CMakeLists.txt @@ -36,6 +36,8 @@ set(qml_sources nonStandardInclude.qml memberProperties.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 dfad4c15eb..e15870dcaa 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 "memberproperties.h" #include "regexpbindings.h" +#include "aliasassignments.h" #include "signalhandlers.h" #include "javascriptfunctions.h" @@ -128,6 +129,8 @@ void tst_qmltc::initTestCase() QUrl("qrc:/QmltcTests/nonStandardInclude.qml"), QUrl("qrc:/QmltcTests/memberProperties.qml"), QUrl("qrc:/QmltcTests/regexpBindings.qml"), + QUrl("qrc:/QmltcTests/AliasBase.qml"), + QUrl("qrc:/QmltcTests/aliasAssignments.qml"), QUrl("qrc:/QmltcTests/signalHandlers.qml"), QUrl("qrc:/QmltcTests/javaScriptFunctions.qml"), @@ -859,6 +862,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 31c15f5aa6..19f225a548 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 memberProperties(); void regexpBindings(); + void aliasAssignments(); void signalHandlers(); void jsFunctions(); |