diff options
| author | Ulf Hermann <ulf.hermann@qt.io> | 2023-10-18 14:07:11 +0200 |
|---|---|---|
| committer | Ulf Hermann <ulf.hermann@qt.io> | 2023-10-23 14:23:38 +0200 |
| commit | 1ba14d58ebdb5def5f48c99a67b9869bd1966ecd (patch) | |
| tree | 0b507fa7a6e727404cea2e0805ae7f2984c70be2 /tests/auto/qml/qmlcppcodegen/data | |
| parent | 59f9e1dd771631345151751477cbb75926f84313 (diff) | |
QmlCompiler: Disallow reading enums from instances
Pick-to: 6.6 6.5 6.2
Fixes: QTBUG-118089
Change-Id: Ib98bb84159847439614341a3cbd4d34d6eabfc8a
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/qmlcppcodegen/data')
| -rw-r--r-- | tests/auto/qml/qmlcppcodegen/data/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | tests/auto/qml/qmlcppcodegen/data/gadgetwithenum.h | 36 | ||||
| -rw-r--r-- | tests/auto/qml/qmlcppcodegen/data/readEnumFromInstance.qml | 16 |
3 files changed, 53 insertions, 0 deletions
diff --git a/tests/auto/qml/qmlcppcodegen/data/CMakeLists.txt b/tests/auto/qml/qmlcppcodegen/data/CMakeLists.txt index 2c2d424b67..129b1e894b 100644 --- a/tests/auto/qml/qmlcppcodegen/data/CMakeLists.txt +++ b/tests/auto/qml/qmlcppcodegen/data/CMakeLists.txt @@ -196,6 +196,7 @@ set(qml_files popContextAfterRet.qml prefixedMetaType.qml pressAndHoldButton.qml + readEnumFromInstance.qml registerPropagation.qml registerelimination.qml revisions.qml diff --git a/tests/auto/qml/qmlcppcodegen/data/gadgetwithenum.h b/tests/auto/qml/qmlcppcodegen/data/gadgetwithenum.h index 839e026b77..51fc6e5985 100644 --- a/tests/auto/qml/qmlcppcodegen/data/gadgetwithenum.h +++ b/tests/auto/qml/qmlcppcodegen/data/gadgetwithenum.h @@ -26,4 +26,40 @@ namespace GadgetWithEnumWrapper { QML_NAMED_ELEMENT(NamespaceWithEnum) }; +struct Gadget +{ + Q_GADGET + QML_VALUE_TYPE(gadget) + +public: + enum class Prop1 { High, low, VeryHigh, VeryLow }; + Q_ENUM(Prop1) + + enum class Prop2 { VeryHigh, High, low, VeryLow }; + Q_ENUM(Prop2) +}; + +class Backend : public QObject +{ + Q_OBJECT + QML_ELEMENT + QML_SINGLETON + Q_PROPERTY(prop priority READ priority FINAL CONSTANT) + Q_PROPERTY(Gadget gadget READ gadget FINAL CONSTANT) + Q_CLASSINFO("RegisterEnumsFromRelatedTypes", "false") + +public: + enum prop { High, low, VeryHigh, VeryLow }; + Q_ENUM(prop) + + explicit Backend(QObject *parent = nullptr) : QObject(parent) {} + + prop priority() const { return m_priority; } + Gadget gadget() const { return m_gadget; } + +private: + prop m_priority = low; + Gadget m_gadget; +}; + #endif // GADGETWITHENUM_H diff --git a/tests/auto/qml/qmlcppcodegen/data/readEnumFromInstance.qml b/tests/auto/qml/qmlcppcodegen/data/readEnumFromInstance.qml new file mode 100644 index 0000000000..d0176e6b15 --- /dev/null +++ b/tests/auto/qml/qmlcppcodegen/data/readEnumFromInstance.qml @@ -0,0 +1,16 @@ +import QtQml +import TestTypes + +QtObject { + id: root + + property int priority: Backend.gadget.VeryHigh + property int prop2: Backend.priority + + property bool priorityIsVeryHigh: root.priority == Backend.VeryHigh + + function cyclePriority() : int { + root.priority = Backend.gadget.High; + return root.priority; + } +} |
