diff options
author | Fabian Kosmale <fabian.kosmale@qt.io> | 2020-01-21 15:33:11 +0100 |
---|---|---|
committer | Fabian Kosmale <fabian.kosmale@qt.io> | 2020-01-23 16:47:45 +0100 |
commit | cb3152086c61e7c51ed1c5f8c5946364e19abc4d (patch) | |
tree | 5624826388b8b5d8a80f4020cba701868e1b2c44 /tests/auto/tools/moc | |
parent | 49f143e19ca11ef48260a3aaaa4ddbe490cf81ab (diff) |
Introduce Q_PROPERTY attribute REQUIRED
This is meant to correspond to required properties in QML.
Change-Id: I2645981e13f7423bc86b48370c165b3cfe2aaa62
Task-number: QTBUG-81561
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Diffstat (limited to 'tests/auto/tools/moc')
-rw-r--r-- | tests/auto/tools/moc/allmocs_baseline_in.json | 13 | ||||
-rw-r--r-- | tests/auto/tools/moc/tst_moc.cpp | 24 |
2 files changed, 37 insertions, 0 deletions
diff --git a/tests/auto/tools/moc/allmocs_baseline_in.json b/tests/auto/tools/moc/allmocs_baseline_in.json index 8cb397190c..48cac07012 100644 --- a/tests/auto/tools/moc/allmocs_baseline_in.json +++ b/tests/auto/tools/moc/allmocs_baseline_in.json @@ -275,6 +275,7 @@ "final": false, "name": "flags", "read": "flags", + "required": false, "scriptable": true, "stored": true, "type": "Flags", @@ -299,6 +300,7 @@ "final": false, "name": "flags", "read": "flags", + "required": false, "scriptable": true, "stored": true, "type": "Foo::Bar::Flags", @@ -311,6 +313,7 @@ "final": false, "name": "flagsList", "read": "flagsList", + "required": false, "scriptable": true, "stored": true, "type": "QList<Foo::Bar::Flags>", @@ -1988,6 +1991,7 @@ "final": false, "name": "blah", "read": "blah", + "required": false, "scriptable": true, "stored": true, "type": "A::SomeEnum", @@ -2088,6 +2092,7 @@ "final": false, "name": "blah", "read": "blah", + "required": false, "scriptable": true, "stored": true, "type": "A::SomeEnum", @@ -2257,6 +2262,7 @@ "final": false, "name": "gadgetPoperty", "read": "gadgetPoperty", + "required": false, "scriptable": true, "stored": true, "type": "Gadget::SomeEnum", @@ -2268,6 +2274,7 @@ "final": false, "name": "objectPoperty", "read": "objectPoperty", + "required": false, "scriptable": true, "stored": true, "type": "Object::SomeEnum", @@ -2291,6 +2298,7 @@ "final": false, "name": "nestedGadgetPoperty", "read": "nestedGadgetPoperty", + "required": false, "scriptable": true, "stored": true, "type": "Nested::Gadget::SomeEnum", @@ -2314,6 +2322,7 @@ "final": false, "name": "nestedObjectPoperty", "read": "nestedObjectPoperty", + "required": false, "scriptable": true, "stored": true, "type": "Nested::Object::SomeEnum", @@ -2442,6 +2451,7 @@ "final": false, "name": "gadgetPoperty", "read": "gadgetPoperty", + "required": false, "scriptable": true, "stored": true, "type": "Gadget::SomeEnum", @@ -2453,6 +2463,7 @@ "final": false, "name": "objectPoperty", "read": "objectPoperty", + "required": false, "scriptable": true, "stored": true, "type": "Object::SomeEnum", @@ -2476,6 +2487,7 @@ "final": false, "name": "nestedGadgetPoperty", "read": "nestedGadgetPoperty", + "required": false, "scriptable": true, "stored": true, "type": "Nested::Gadget::SomeEnum", @@ -2499,6 +2511,7 @@ "final": false, "name": "nestedObjectPoperty", "read": "nestedObjectPoperty", + "required": false, "scriptable": true, "stored": true, "type": "Nested::Object::SomeEnum", diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp index 6b202f79a6..0f801fe902 100644 --- a/tests/auto/tools/moc/tst_moc.cpp +++ b/tests/auto/tools/moc/tst_moc.cpp @@ -719,6 +719,7 @@ private slots: void cxx17Namespaces(); void cxxAttributes(); void mocJsonOutput(); + void requiredProperties(); signals: void sigWithUnsignedArg(unsigned foo); @@ -4025,6 +4026,29 @@ void tst_Moc::mocJsonOutput() QVERIFY2(actualOutput == expectedOutput, showPotentialDiff(actualOutput, expectedOutput).constData()); } +class RequiredTest :public QObject +{ + Q_OBJECT + + Q_PROPERTY(int required MEMBER m_required REQUIRED) + Q_PROPERTY(int notRequired MEMBER m_notRequired) + +private: + int m_required; + int m_notRequired; +}; + +void tst_Moc::requiredProperties() +{ + QMetaObject mo = RequiredTest::staticMetaObject; + QMetaProperty required = mo.property(mo.indexOfProperty("required")); + QVERIFY(required.isValid()); + QVERIFY(required.isRequired()); + QMetaProperty notRequired = mo.property(mo.indexOfProperty("notRequired")); + QVERIFY(notRequired.isValid()); + QVERIFY(!notRequired.isRequired()); +} + QTEST_MAIN(tst_Moc) // the generated code must compile with QT_NO_KEYWORDS |