aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2020-04-09 12:37:32 +0200
committerUlf Hermann <ulf.hermann@qt.io>2020-04-09 14:20:30 +0200
commita38b017331cda15f39f2728278fb9e8bafa41821 (patch)
tree83c95bcc285ca7d8b9550230e65b670edc1d0641
parentbf205b45a29ba80d94df3b6bac5fec4c7cd79bf9 (diff)
qmltyperegistrar: Retain alias and isFlag information for enums
Change-Id: Id484c7bb1a3ed3b2bf593f6197664e4ee2ad4006 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
-rw-r--r--src/qmltyperegistrar/qmltypescreator.cpp6
-rw-r--r--tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.cpp7
-rw-r--r--tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h10
3 files changed, 23 insertions, 0 deletions
diff --git a/src/qmltyperegistrar/qmltypescreator.cpp b/src/qmltyperegistrar/qmltypescreator.cpp
index 26261795c7..1119f88282 100644
--- a/src/qmltyperegistrar/qmltypescreator.cpp
+++ b/src/qmltyperegistrar/qmltypescreator.cpp
@@ -213,6 +213,12 @@ void QmlTypesCreator::writeEnums(const QJsonArray &enums)
m_qml.writeStartObject(QLatin1String("Enum"));
m_qml.writeScriptBinding(QLatin1String("name"),
enquote(obj.value(QLatin1String("name")).toString()));
+ auto alias = obj.find(QLatin1String("alias"));
+ if (alias != obj.end())
+ m_qml.writeScriptBinding(alias.key(), enquote(alias->toString()));
+ auto isFlag = obj.find(QLatin1String("isFlag"));
+ if (isFlag != obj.end() && isFlag->toBool())
+ m_qml.writeBooleanBinding(isFlag.key(), true);
m_qml.writeArrayBinding(QLatin1String("values"), valueList);
m_qml.writeEndObject();
}
diff --git a/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.cpp b/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.cpp
index 8bdee2f937..b3304963d8 100644
--- a/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.cpp
+++ b/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.cpp
@@ -58,4 +58,11 @@ void tst_qmltyperegistrar::qmltypesHasFileNames()
QVERIFY(qmltypesData.contains("file: \"tst_qmltyperegistrar.h\""));
}
+void tst_qmltyperegistrar::qmltypesHasFlags()
+{
+ QVERIFY(qmltypesData.contains("name: \"Flags\""));
+ QVERIFY(qmltypesData.contains("alias: \"Flag\""));
+ QVERIFY(qmltypesData.contains("isFlag: true"));
+}
+
QTEST_MAIN(tst_qmltyperegistrar)
diff --git a/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h b/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h
index 37d49efa40..07a28e1976 100644
--- a/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h
+++ b/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h
@@ -37,6 +37,15 @@ class Local : public Foreign
{
Q_OBJECT
QML_ELEMENT
+public:
+ enum Flag {
+ Flag1 = 0x1,
+ Flag2 = 0x2,
+ Flag3 = 0x4,
+ Flag4 = 0x8
+ };
+ Q_DECLARE_FLAGS(Flags, Flag)
+ Q_FLAG(Flags)
};
class tst_qmltyperegistrar : public QObject
@@ -48,6 +57,7 @@ private slots:
void qmltypesHasForeign();
void qmltypesHasHppClassAndNoext();
void qmltypesHasFileNames();
+ void qmltypesHasFlags();
private:
QByteArray qmltypesData;