aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/qmlcppcodegen/data
Commit message (Collapse)AuthorAgeFilesLines
...
* QmlCompiler: Allow calling methods on potentially undefined QObjectsUlf Hermann2023-07-283-0/+19
| | | | | | | | | We can use the same technique as for GetLookup there. Just check the variant for validity to see if we can call it. Change-Id: I1bcf4a5a84f47e0236762827488bc5d03e015efb Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Force QObject* for LoadElement on list propertiesUlf Hermann2023-07-263-0/+41
| | | | | | | | | In the presence of incomplete type information we may otherwise conclude that the value type is QJSValue and generate broken code. Pick-to: 6.6 6.5 6.2 Change-Id: I533f704a422d0efe8b7b5bb0a170966e9f290b1f Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Correctly handle lookups in results of method callsUlf Hermann2023-07-253-0/+44
| | | | | | | | | | | | | | | | | Method calls often return just QVariant because we cannot be sure that the method hasn't been shadowed. In order to figure out the right lookup we should look at the type the type propagator assumed as the base of the lookup. If the type propagator was assuming a list-length lookup we need to try and generate a list-length lookup. If the base turns out to be a QVariant after shadow-checking, the code generation will cleanly fail (and refrain from generating bad code). Amends commit 46cc70e2aafc84db6caeaf747629ee6e825b0a4d. Pick-to: 6.6 Fixes: QTBUG-115278 Change-Id: I24dcd06161eb1af44450fb663d68a16d89efd6ac Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Optimize storage for register variablesUlf Hermann2023-07-242-0/+121
| | | | | | | | | | | | | | | | We don't need nested hashes there. A single hash is enough, and we also don't need to key it by pointers. Keying it by internalName instead makes the ordering deterministic. We also don't need to duplicate-track the variable names when outputting the declarations anymore. Verify that qmlcachegen's output is actually stable by compiling the entire test data for tst_qmlcppcodegen twice, packaging the generated code into the resource file system, and comparing it in a separate test. Pick-to: 6.5 6.6 Fixes: QTBUG-115159 Change-Id: I659661e58a52ed9ff308c83d6c821cf016f2e94e Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Allow creation of structured value typesUlf Hermann2023-07-065-1/+45
| | | | | | | | | | | | | | | | With this change, qmlcachegen can populate structured value types from object literals. Also fix the construction of value types via Q_INVOKABLE ctors. We don't need to wrap the ctor argument in QVariant if we can store the original type, and we should always look at the base type for the creatable flag, not the extension. Task-number: QTBUG-107469 Task-number: QTBUG-112485 Change-Id: I9f3db13f00466dc9d87237bdf0b380d6eeb58a10 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qml compiler: Detect if user confuses flags and enumsFabian Kosmale2023-06-293-0/+24
| | | | | | | | | | | | | | | | | | | If you pass the enumeration type to the Q_FLAG macro, you'll get an qmltypes entry where the type is marked as a flag, but where aliasName is empty. For backwards compatibility reasons, we cannot static_assert that the type passed into QFlags is actually a flag type. When using the interpreter, this does not cause any issues, because the code there does not need to distinguish flags and enums. When compilation is enabled, we do however generate bogus code, which either leads to a wrong result, or to a crash if ASAN is enabled. Avoid the issue by detecting that the enum is missing, and by rejecting that case. Pick-to: 6.6 6.5 Fixes: QTBUG-114326 Change-Id: If5cb801b3cf2c3bd7986ef0c8fc3664e6ed564b8 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QmlCompiler: Use int for flag-type enumsUlf Hermann2023-06-233-0/+54
| | | | | | | | | | The isFlag flag overrides the underlying type as the resulting type is then a QFlags. Pick-to: 6.6 Fixes: QTBUG-114815 Change-Id: I9cc3b260a280b784fc8af38fafbc9ffbd7ca3453 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Add further tests for DTZUlf Hermann2023-06-232-0/+41
| | | | | | | | | | Apparently we had some intermediate state where these ones were broken. Let's make sure this doesn't happen again. Pick-to: 6.6 Fixes: QTBUG-113403 Change-Id: If1da8200afe5c7cee417cd755a15251979fb18c5 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Properly reset before re-running basic blocks passUlf Hermann2023-06-212-0/+43
| | | | | | | | | | | If we were within dead code at the end of the previous run we need to reset the "skip until next label" flag. Otherwise we still assume we're in dead code at the beginning of the function, with interesting effects. Pick-to: 6.5 6.6 Fixes: QTBUG-114476 Change-Id: Ib6e3d6c81aad4c8aaac12accdb3936e4136235fc Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Add missing conversion for equality with null or undefinedOlivier De Cannière2023-06-122-0/+15
| | | | | | | | | | | | | | | | | | | The result of the equality check is a bool. However, the expression using that value may expect another type. It therefore needs to be converted to that type. This was done implicitly until now because of the missing explicit conversions. This is a problem because introducing more conversion options causes an ambiguity in the choice of the conversion to use. Leading to a compilation error. For this reason the test is run in a Window because this includes enough other code to make the implicit conversion ambiguous. Fixes: QTBUG-114418 Pick-to: 6.5 6.6 Change-Id: I1c3f9ee21f9719cdfbce748a4fd0a687def9d1bf Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QmlCompiler: Do check specificType on SetLookupUlf Hermann2023-05-153-0/+26
| | | | | | | | | | We may have implicitly invalidated it when shadow-checking. Amends commit b3281f123ea5a8c0e5f8c63fa1568cf7414f9c14. Change-Id: Ia5c54a3a0fa97c61e947ecb0a5b21d410e1bf19a Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QmlCompiler: Optimize list manipulationsUlf Hermann2023-05-101-0/+5
| | | | | | | | | | | | | | | | | We should never store a list in a wrapper type that is itself a different list. Wrapping and unwrapping requires rebuilding the list in such cases. We can, however, store lists of builtins as-is. There is no need to transform them. Other lists can still be stored in QVariant. As a result, we now need to discern between the access semantics of the stored type and the access semantics of the contained type. They are not guaranteed to be the same anymore. Furthermore, we need to reject "internal" manipulation of QVariant-wrapped lists for now. We might implement them using QMetaSequence, though. Task-number: QTBUG-113465 Change-Id: If09ea345b2fac39bf2abd62a2fce2d354df85b6b Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Re-allow conversion from QObject to QStringUlf Hermann2023-05-092-2/+1
| | | | | | | | | | | | It only worked for the console functions in 6.5. There it was suppressed by the enforcement of type conversions in the basic blocks pass in dev. We have, however, a good enough way to coerce QObject to QString these days. Task-number: QTBUG-112291 Change-Id: I025976cc7fbe430c5cdc607cae3ca48838b24f88 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Properly support lists as method argumentsUlf Hermann2023-05-092-0/+12
| | | | | | | | | | | a, Teach QV4::QObjectWrapper how to convert QQmlListProperty to QObjectList. b, Parse the isList attribute from qmltypes. c, Resolve lists when resolving QQmlJSScope. Change-Id: I70c6d40507de990b45a87eb7d8c7bba279d550e8 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QML: Encode "missing" line number as negated address of stack frameUlf Hermann2023-05-092-0/+11
| | | | | | | | | | | | | | | This way we can identify which entry in a stack frame to amend when processing an exception in generated code. However, negative line numbers are also used to signal the position of "Ret" instructions. Since you cannot throw an exception from a "Ret" instruction, those cannot collide, but we cannot qAbs() the line number anymore when saving it in the stack trace. We have to qAbs() it in all the places where it's read. Pick-to: 6.5 Fixes: QTBUG-112946 Change-Id: I24dc4008fb7eab38e4d24e70211c22e46f1b72a7 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QML: Allow conversion from QV4::Sequence to different iterableUlf Hermann2023-05-093-0/+77
| | | | | | | Pick-to: 6.5 Fixes: QTBUG-112291 Change-Id: Idd47ea8daf9c54759af6c1feba68bd52d1163615 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Convert thisObject to correct typeUlf Hermann2023-05-042-0/+9
| | | | | | | Amends commit 365b781599993aef933228599eaeb6eb909d9a93. Change-Id: I5775d634ef4e5204cdec2f440b1992b7272866d2 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Disallow reading from values affected by side effectsUlf Hermann2023-05-042-0/+35
| | | | | | | | | | | | | | Instead of accepting the inconsistency between interpreter and compiled code here, we can just detect whether a value can be affected by side effects and refrain from reading it then. Since you can always explicitly reload a value that may have been changed, the resulting compile warnings are easily worked around in user code. Refactoring user code this way also makes it much clearer what is actually going on. Pick-to: 6.5 Task-number: QTBUG-109221 Change-Id: Ica832e39838ef732b0d181364630737fd7709b74 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QML: Fix call frame conversion for QVariant return typesUlf Hermann2023-05-044-0/+132
| | | | | | | | | | | The function may return a QVariant in place of the actual type because it cannot express the actual type as-is. This case needs special care because QMetaType::convert() doesn't know what to do with it. Pick-to: 6.5 Fixes: QTBUG-112837 Change-Id: Ibf93a28aa6a60d49c5ab63fa7eed5f5a8e58e163 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Do not crash when converting number literals to enumsUlf Hermann2023-05-043-2/+30
| | | | | | | Amends commit 2a21efb5f7a6cac6f6101f2f42fe38f16dc68149. Change-Id: Id7d739b58c723eed9f165951b51ee2e5e55d7fe2 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* QmlCompiler: Do not stop parsing on top-level Component elementsUlf Hermann2023-05-032-0/+15
| | | | | | | | | | | | | This just creates an inconsistent state where some of the document has been parsed and some hasn't. The only thing we actually need is the log message. Also, fix the warning message. Amends commit 169f0f71665a3a5155f8d63a9c11bc2484353561. Pick-to: 6.5 Fixes: QTBUG-112897 Change-Id: Ie8486909f9bea9ee1b87f2857f7b77fb7cc561e8 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* tst_qmlcppcodegen: Sort QML files againUlf Hermann2023-05-021-10/+10
| | | | | | | | Keeping them sorted reduces the chance of collisions and makes it easier to find related ones. Change-Id: Ie05cbfefa5805cd27ec91e566dd922107c70d8e2 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Relax shadowing checkUlf Hermann2023-05-022-0/+36
| | | | | | | | | | | | | | | | | If we detect a property or method as potentially shadowed, we don't have to abandon all hope. We can still retrieve it as untyped var. Since there are a number of things we can do with untyped var, this may still be useful. In the same sense, we need to treat function calls as untyped when the function in question can be shadowed. Calling functions with var arguments and return types leads to some more interesting situations in the call frame setup, so we fix that, too. Task-number: QTBUG-112480 Change-Id: I238d1cf04951f390c73e14ed9e299f2aa72b68cb Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Inline some array methodsUlf Hermann2023-04-285-0/+93
| | | | | | | | | | | So far we can only deal with methods that don't change the source array and don't use iterators or functions as parameters. We also omit concat() for now. However, indexOf(), lastIndexOf(), includes(), join(), slice() and toString() are possible already now. Task-number: QTBUG-112722 Change-Id: Id19c74e8ad25af876bc954c040c767823b7e3259 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Use actual type of enums, rather than intUlf Hermann2023-04-262-0/+20
| | | | | | | | | | Now that the type is available from qmltypes we can just use it. Task-number: QTBUG-112180 Change-Id: I315372da0925f19c209f676226f450863b0d3ea5 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* QmlCompiler: Implement ConvertThisToObject and basic DTZUlf Hermann2023-04-253-0/+26
| | | | | | | | | | | | | | We know that 'this' is a QObject* since the metatypes stack frame mandates it. Whenever you pass 'this' to anything it's loaded from the special 'This' stack slot which then triggers a DTZ check. A DTZ check is a noop if we can prove that the type is statically known, though. In QmlCompiler, if we have a valid register content, then the register has been set in all code paths that lead to the instruction in question. Fixes: QTBUG-111439 Change-Id: I81d1cd140eea63f85628c3bef3a8f6db0a12096d Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Recognize QStringList and QVariantList as special listsUlf Hermann2023-04-243-0/+24
| | | | | | | | | | They are equal to QList<QString> and QList<QVariant>, respectively. We cannot express this fact in qmltypes, but since those are builtin, we can just hardcode it. Task-number: QTBUG-112227 Change-Id: Iebeb5f6a5350d1c7184b1d9e6a38647e048c3806 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Allow conversion from QQmlListProperty to QListUlf Hermann2023-04-242-0/+16
| | | | | | | | | | In the happy case this just retrieves the internal QList from the list property. In the sad case it produces a deep copy. That's not worse than what the interpreter does, though. Fixes: QTBUG-112227 Change-Id: I8b2b0ac74c90b6dcee876e83a64502756733c1c5 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Don't crash on bad list type in signatureUlf Hermann2023-04-191-0/+4
| | | | | | Pick-to: 6.5 Change-Id: I2c4a4ffa810258134a29b87aff46e8eb544b6a55 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Don't crash when checking for enum problemsUlf Hermann2023-04-191-0/+4
| | | | | | | | | When checking for CallProperty we want the call base, not the accumulator. Pick-to: 6.5 Change-Id: I24ac066dd440bde459e20b3cf962af04ca531629 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Fix content pointer check for QObject*Ulf Hermann2023-04-193-0/+31
| | | | | | | | | | | It can actually be null rather than undefined. We need to generate a separate check for that and output the correct error messages. Amends commit 05f56d7c78754855c643470ad4e8dfd35c96f927 Change-Id: Ia795e31805181640cd5be19359af51067d3fc8d6 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* QmlCompiler: Merge bool and any pointer type into the pointer typeUlf Hermann2023-04-152-0/+16
| | | | | | | | | A pointer type can hold bool as either nullptr or some value. We don't need to produce a QVariant for that. Change-Id: I368c3fa703d08ff396a5b4702ba7d1f2614b1467 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* QmlCompiler: Support more integer typesUlf Hermann2023-03-301-4/+38
| | | | | | | | | | | This adds support for 8- and 16-bit signed and unsigned integer types. The test exposes that the engine fails to correctly convert out of range values when assigning to a 32-bit int property. Fix that as drive-by. Fixes: QTBUG-101634 Change-Id: I0a4177f49ffc062a1f444e30424e94c1f293e70c Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* QmlCompiler: Do not generate invalid code on generate_AsUlf Hermann2023-03-172-0/+16
| | | | | | | Pick-to: 6.5 6.5.0 6.2 Task-number: QTBUG-111986 Change-Id: Ib6e7179c20e6c7a4d6fc3a1a17eac550d2bbfa56 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Allow coercing anything to boolUlf Hermann2023-03-102-0/+46
| | | | | | | JavaScript can coerce anything to bool, so should we. Change-Id: Id560e4c1dc10b5432c0cedf3110ad3377bbc5f59 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Use value type ctorsUlf Hermann2023-03-093-0/+18
| | | | | | | | | | | | | This allows us to do the relevant conversions in a more civilized way, dropping the outputVariantConversion() method. The latter is brittle because you have to manually add it to each instruction, and it uses QMetaType::convert() which is actually not guaranteed to give the same results as a QML type coercion. Task-number: QTBUG-94807 Change-Id: I4d6d05a60beb3b4dfc3da6f0142de25667510904 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QML: Allow as-casting to value typesUlf Hermann2023-03-034-0/+46
| | | | | | | | | | | | | | | | | | | | | | If the "Addressable" option to ValueTypeBehavior is set, you can use the "as" operator to cast a previously unknown type into either undefined or the given type. We can use this in qmlcachegen to generate efficient code for further operations on the same type. In the generated C++ it in fact only works for GetLookup because: a, We generally don't do SetLookup on value types, yet. b, We generally don't call methods on value types, yet. c, We cannot store a union of undefined and a sequence type, yet. However, getting properties of value types is the most important application of the new casts so this is well worth it. As a side effect we can also look up things in potentially undefined results of other operations now. For example list lookups. Task-number: QTBUG-94807 Change-Id: Ifdf34f1f3f67b7a0a8953b9ed0e947b74638a28c Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QML: Add an "Addressable" value to ValueTypeBehaviorUlf Hermann2023-03-022-2/+2
| | | | | | | Task-number: QTBUG-94807 Change-Id: I8c78faa99fc4c4b2ffd8c89f1037fc7569212c73 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* QmlCompiler: Improve method overload selectionUlf Hermann2023-03-022-0/+9
| | | | | | | | If we have an exact match we should definitely use that. Change-Id: I2846ecf6f9963a978b84b70fbe18acdfe6eb45e6 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QtQml: Always throw when requesting an enum from an invalid singletonUlf Hermann2023-03-013-0/+37
| | | | | | | | | | | The interpreter does this and so should the enum lookup adapter for generated C++ code. Pick-to: 6.5 6.4 6.2 Fixes: QTBUG-109816 Change-Id: I576480c3ca808743ddc0ceaf2f0bd8a1de776a41 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QmlCompiler: Implement multi-argument Math.{min,max}()Olivier De Cannière2023-02-232-0/+60
| | | | | | | | | | This patch extends the logic for the 2-argument Math.min() and Math.max() functions by reutilizing the same logic to compare two elements and evaluate all arguments with the current max or min. Fixes: QTBUG-108741 Change-Id: I993a26a1d44d66226c751272dfc2dc63330d115d Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QmlCompiler: Implement get lookup of variantMap propertiesOlivier De Cannière2023-02-223-0/+30
| | | | | | | | | | | | | | | | This patch adds support for get lookups of QVariantMap properties. Setting or modifying is not supported and will reject. Also, QQmlJSRegisterContent::JavaScriptObjectProperty was renamed to QQmlJSRegisterContent::GenericObjectProperty Tests were added to TestQmllint::cleanQmlCode() and tst_QmlCppCodegen::variantMapLookup(). Pick-to: 6.5 Fixes: QTBUG-105545 Change-Id: I653ee4e7de1fb1514e1e563a92cfc28633268a7e Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Replace AUTO_RESOURCE_PREFIX with Qt CMake Policy in examples, testsAmir Masoud Abdol2023-02-211-1/+2
| | | | | | | | | | | | | | | | Every instance of AUTO_RESOURCE_PREFIX has been replaced by either qt_standard_project_setup(REQUIRES 6.5) or with qt_policy(SET QTP0001 NEW), mainly in tests. In addition, I added a warning message for the case where AUTO_RESOURCE_PREFIX is used. Pick-to: 6.5 Task-number: QTBUG-96233 Change-Id: I323a15e9d0bb5fe6ba649365314af9fc2ad67bda Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
* QmlCompiler: Fix coercion of undefined to float and doubleUlf Hermann2023-02-212-0/+7
| | | | | | | | | | | | | | | | It should result in NaN, not in 0. The typedArray() test exposes that ExecutionEngine::toVariant() also gets this wrong. Fix that, too. [ChangeLog][QtQml][Important Behavior Changes] Converting a JavaScript value to a double or float, for example by inserting it into a typed array, now assumes JavaScript type coercion semantics. In particular, converting a value that is not actually a number now results in NaN where it previously sometimes resulted in 0. Pick-to: 6.5 6.4 6.2 Fixes: QTBUG-111179 Change-Id: If24444ae9014c8972761c565a6920f06699e485c Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qmlsc: Support equality operations for QUrlSemih Yavuz2023-02-162-0/+17
| | | | | | | Task-number: QTBUG-110983 Pick-to: 6.5 Change-Id: I9a664178c91bfa2962e2a5a3bf4bfa174a74a9d0 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Controls: Use PlatformDialogHelper for enums in DialogButtonBoxUlf Hermann2023-02-152-0/+9
| | | | | | | | | | | | | | | | Since we're already using 3 of the 4 enums in PlatformDialogHelper, we can just as well declare PlatformDialogHelper as extended namespace and avoid all the fiddling with Q_ENUMS and QFLAGS. As an additional upside, we get code using those enums to compile to C++ this way. Pick-to: 6.5 Fixes: QTBUG-110933 Change-Id: I60bfc15c94133be368fa98ee1b3a0ab7a2bc53ef Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* qmlcachegen: fix nonstrict equality code generationSemih Yavuz2023-01-311-1/+7
| | | | | | | | | | | | | | We should generate type checking code for only strict comparison of var against null/undefined types or vice versa cases. The non- strict comparison should be handled elsewhere. Removed pragma Strict to allow to add warning emitting tests of non-strict comparison. This amends 6a816a9e0dfc2b41a4f86c721679f2517ec27eb6 Pick-to: 6.5 Fixes: QTBUG-110769 Change-Id: I7f9a457e71a621a005f377216e841bec01667454 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* qmlcachegen: Improve QObject comparison code generation testSemih Yavuz2023-01-311-0/+8
| | | | | | | | | | | | The code generated for QObject comparisons holds for both weak and strong comparisons. Improve tst_qmlcppcodegen by adding missing weak comparison tests. Amends afc7928d1a1e47ecbc9d101c4e5d5fb1c5b78326. Pick-to: 6.5 Change-Id: Ib6176a39b329e792b81b3d8e8a288dcea074320b Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QML: Turn singleton/type mismatch into a run time type errorUlf Hermann2023-01-273-0/+16
| | | | | | | | | | | | | | | | | | | | | | | There are many ways to "hide" the qmldir from the engine at run time, which turns singletons into regular types. While all of this is invalid, we should not assert on it, but rather produce a legible warning. Furthermore, sharpen the importing of extra modules from qrc as implicit imports. We should really only import modules the file in question can ever be part of. Otherwise we needlessly produce the above situation and hide legitimate warning messages. Amends commit 7517c1b3ae9aa92f36b19d74a4b2de5e8531309b. Now we need to teach our tools about the default import paths in the resorurce file system. They cannot guess any type they may find in any resource file anymore. Pick-to: 6.5 Task-number: QTBUG-106929 Change-Id: Ic8c02396d10830a7f461e8a81649bb8c9a1add1f Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
* QML: Allow more conversions between different listsUlf Hermann2023-01-261-0/+13
| | | | | | | | | | You should be able to assign any list of QObjects to any other list of QObjects. Pick-to: 6.5 Fixes: QTBUG-108155 Change-Id: I6ddf0b49f7248ad56cc9560d217f3ea316c648a8 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>