aboutsummaryrefslogtreecommitdiffstats
path: root/tools
Commit message (Collapse)AuthorAgeFilesLines
* Move qmltyperegistrar into srcUlf Hermann2019-11-089-1170/+8
| | | | | | | | | We want it to be available early in the build process. qmltyperegistrar will be required to build qml, quick, and various imports. Change-Id: I15b827cd4b322a2bcea2780eeedb8dbe132aa59a Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qmltyperegistrar: Allow QML_IMPORT_VERSION as alias for IMPORT_VERSIONUlf Hermann2019-11-081-5/+8
| | | | | | | | | As we use QML_IMPORT_MAJOR_VERSION, QML_IMPORT_MINOR_VERSION, and QML_IMPORT_NAME, it's strange that we required the raw import version to come without the "QML_". Change-Id: Ida7d677851edf8f4d0179ea2a14772620d65bfa1 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qmltyperegistrar: Improve legibility of generated codeUlf Hermann2019-11-041-2/+2
| | | | | Change-Id: I0084b03651c93ea26cd93edf1badcce4721ef993 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Merge remote-tracking branch 'origin/5.14' into 5.15Qt Forward Merge Bot2019-10-267-9/+29
|\ | | | | | | Change-Id: Iaa7dbbe9926d25cfb1b1c51e7013e58cb71d86b5
| * qmllint: fix typoFabian Kosmale2019-10-241-1/+1
| | | | | | | | | | Change-Id: I02a6f4dd1804251e0420f2fbc334ee9c38d3dc49 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
| * Add support for scanning qrc files in qmlimportscannerAndy Shaw2019-10-246-8/+28
| | | | | | | | | | | | | | | | | | | | | | This reuses the ResourceFileMapper and extends it slightly to return full paths on request. Subsequently, this is moved into a shared directory inside tools. Fixes: QTBUG-55259 Change-Id: Ice5fc68d03b767a4185742e182556ab4290bd28d Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* | Deprecate qmlminSimon Hausmann2019-10-251-0/+2
| | | | | | | | | | | | | | | | | | | | [ChangeLog] The qmlmin tool is deprecated and not needed anymore. The built-in caching of qml files addresses the needs and unfortunately the tool does not work with more advanced concepts such as required properties or the ES 7 yield statement. It will be removed in Qt 6. Change-Id: I2830f91d1dc2ad5e3c66270dad8e25793587ae7f Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | qmltyperegistrar: Register only classes with QML.Element classInfoUlf Hermann2019-10-241-1/+1
| | | | | | | | | | | | | | | | | | | | We may have QML.Attached in some classes we don't want to register. QML.Attached needs to be on the original class, even if the class is registered as a foreign type in some other context. Change-Id: I3d46fa351a2e595e879f0d2d8cc441d59c9dd754 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* | qmltyperegistrar: Allow specifying the minor versionUlf Hermann2019-10-242-2/+17
| | | | | | | | | | | | | | | | | | Unconditionally using QT_VERSION_MINOR is not a great idea for user projects. Yet, we have to specify some minor version, at least for now. Change-Id: Id9d0d0417a2ac6b8775cef755357274d8fbd637d Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* | qmltyperegistrar: Throw an error if import name or version is emptyUlf Hermann2019-10-241-0/+8
| | | | | | | | | | | | | | | | We cannot generate anything sensible in those cases. Change-Id: I6005b970cedd999212920759a3dd45827b79b77c Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Merge remote-tracking branch 'origin/5.14' into 5.15Qt Forward Merge Bot2019-10-161-32/+36
|\| | | | | | | Change-Id: I6e69a235f50472b8f7ac19e133a3c071ea8c4d7a
| * qmlplugindump: Fix prototype and name for composite typesUlf Hermann2019-10-151-20/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Before we would always merge everything up to QObject. That would duplicate entries between types that inherit from the same base class. Also, when the composite type doesn't specify a module (because we just created a component from a plain QML file), use the module URI from our version info. As we're dumping the component we can assume it belongs to the module we're dumping. Change-Id: Icf9a58cfe1165f557ebbf7309251e98a0782dc33 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * qmlplugindump: Drop defaultReachableNamesUlf Hermann2019-10-121-12/+10
| | | | | | | | | | | | | | They are unused. Change-Id: Id49720bead07e353e448d92a53c2c6aabe265d3a Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | qmllint: Parse .mjs files as JavaScript rather than QMLUlf Hermann2019-10-151-2/+4
| | | | | | | | | | | | Change-Id: I80783289452300d4609a27f5b470ecdeeeca5e71 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | Add support for semi-automatic QML type registrationsUlf Hermann2019-10-1411-4/+1148
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We can use the new moc JSON output to collect all meta-objects at build time and, for those that include QML element registration meta-data, generate code that automatically registers these types with QML. This eliminates the need to call qmlRegisterType manually. For now this generates free-standing functions (per module) that need to be called manually. This is intended as an intermediate step. Task-number: QTBUG-68796 Change-Id: Ib414eef9757344feee488ebc7388f957b975347f Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Remove QQmlJS::AST::UiImport::versionTokenUlf Hermann2019-10-101-9/+7
| | | | | | | | | | | | | | | | It was incorrectly parsed in case of "as Foo", and it was mostly unused. Change-Id: Ie833a8eb247108cb7bcd6ca3e6f3e5df614461cf Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Merge remote-tracking branch 'origin/5.14' into 5.15Qt Forward Merge Bot2019-10-102-3/+2
|\| | | | | | | Change-Id: I2835748c27616103f275849141fbe5a93e3dfd8c
| * Fix interactive mode of qmlprofilerSimon Hausmann2019-10-092-3/+2
| | | | | | | | | | | | | | | | | | | | | | Use the correct commands for toggling the recording status and flushing. Also don't clear the event types when clearing the profiler data after a flush, as those remain valid and are needed for processing in the future. Change-Id: I5a3cd5aa33e43a3e81c53cbbaa0c5b8fb407c5bb Fixes: QTBUG-78044 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | Merge remote-tracking branch 'origin/5.14' into 5.15Qt Forward Merge Bot2019-10-042-33/+55
|\| | | | | | | | | | | | | | | Conflicts: src/imports/qtquick2/plugins.qmltypes src/quick/items/qquickitemsmodule.cpp Change-Id: I841c65c9c131354788b4f3fcfe3d7ed27be316d5
| * qmlplugindump: Consistently sort composite typesv5.14.0-beta1Ulf Hermann2019-10-021-14/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | Previously the sorting depended on qHash(QQmlType), which hashes a pointer to QQmlTypePrivate. That was not very useful. Also, the defaultCompositeTypes were only populated when dumping builtins, and only used when dumping regular types. Therefore, whenever they were used, they were empty. We don't have to bother with that. Change-Id: Ibfbfc7e14bee900d617bab58cbe39d05f5fe91c3 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * qml: Make sure the qml tool deletes its applicationUlf Hermann2019-10-021-6/+8
| | | | | | | | | | | | | | | | | | Otherwise the shutdown mechanism for debug services doesn't work. Fixes: QTBUG-78828 Change-Id: I4ede5861a300d5b5007036d71ed84409ec4d450f Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
| * Loosen qmlplugindump's checking of URI and major versionUlf Hermann2019-09-261-5/+16
| | | | | | | | | | | | | | | | | | | | | | If not given a "--strict" argument, qmlplugindump will ignore the given major version and only check the URI as prefix, not as exact match. This is in line with what qmlplugindump did in version 5.13 and before. Fixes: QTBUG-78745 Change-Id: Ib2803d47e6cb60c797fec8dfaa628278307d4cd4 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * qmlplugindump: fix prototypeNameForCompositeFabian Kosmale2019-09-251-10/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We do not put the objects we encounter in defaultReachaleNames. Thus, the check in prototypeNameForComposite will fail most of the time. Instead, we now use the same check as in collectReachableMetaObjects (that is, does the type belong to the module). Then, we once again only collect the metaobjects belonging to the module in objectsToMerge, and only dump the relevant properties from there. Fixes: QTBUG-78744 Change-Id: I78cae1e56b6f59e277198f9bcd0d826c4e0978a7 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | qmllint: Parse variable declarations from PatternElementsUlf Hermann2019-10-012-0/+14
| | | | | | | | | | | | Change-Id: If8b4f5302cc1ee3a4193b354503b304534d7dfd9 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* | Specify parameters of type registration in class declarationsUlf Hermann2019-09-263-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using this technique we can automatically register all necessary revisions and minor versions of a type, using the metaobject system. This greatly reduces the potential for mistakes and resulting incompatibilities between versions of imports. We assume that for each type we need to register all revisions of its super types and its attached type, and that the revisions match. That is, if you import version X of type A, you will also get version X of its attached type and of any super types. As we previously didn't take these dependencies into account when manually registering the types, a number of extra revisions are now registered for some types. Potentially, we can now generate the qmltypes files at compile time, using moc. Change-Id: I7abb8a5c39f5e63ad1a0cb41a783f2c91909491b Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Make qmllint read qmldir files and qmltypes files in app directoryUlf Hermann2019-09-252-17/+61
| | | | | | | | | | | | | | | | | | | | This makes it possible to resolve components which were either directly registered in the application or specified as composite types in qmldir files. Change-Id: I42482563f31ac780d6b37e62375d09d122c4a308 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Fix link errors when enabling CONFIG+=qtquickcompiler on non-QML projectsSimon Hausmann2019-09-191-0/+10
| | | | | | | | | | | | | | | | | | | | | | Re-apply commit c5578b16d6454e708c8ce12661a85d41eeaaa758 now that with commit 41864db3b61d9e81a9fe4906918d2cd3d6d32a0c the .qml/.js/etc. files are always retained. The difference is that now this is not an error situation but merely a reason to skip processing. Fixes: QTBUG-73669 Change-Id: I53e1e7d471a66e82694ceca83c548c03aaf88f87 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | Fix regression when using CONFIG+=QtQuickCompiler and .qrc files in subdirsSimon Hausmann2019-09-195-2/+182
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 41864db3b61d9e81a9fe4906918d2cd3d6d32a0c removed the processing of .qrc files that removed .qml/etc. files. Since the chaining of resources remains critical to ensure that the cached compilation units are loaded, the build system copied the input .qrc file to a new one. That mere copying caused the build to break when the copied .qrc file was not in the same directory as the original one, as file paths within the .qrc file are interpreted as relative to the .qrc file, which was now in a different location. To fix this, this patch brings back the "filtering" code that rewrites the paths to the source files in the .qrc file. Fixes: QTBUG-78253 Change-Id: Ie1d56f3248e713a964260bc2da37c9374f7b6a36 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | qmllint: Honor --silent argumentUlf Hermann2019-09-195-30/+28
| | | | | | | | | | | | Change-Id: Ie63654139aeb7bfd241be865f33c399c23e08cc3 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | qmllint: Accept arrays as enum descriptionsUlf Hermann2019-09-183-40/+28
| | | | | | | | | | | | | | | | We don't need the values and they are hard to determine statically. Change-Id: I3453e67a18b6d0212748795fd0ea0baaff61b522 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* | Fix *.js files disappearing from RESOURCES when not using QtQmlSimon Hausmann2019-09-096-472/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QtQml][Important Behavior Changes] Using the Qt Quick Compiler would exclude the original .qml files from the resource system. This made it impossible to change the Qt library binary later as the program binary was tied the to the exact Qt version. In addition sometimes unrelated files (QTBUG-73669) were removed. For the latter scenario, retain and skip options were added for the Qt Quick Compiler. In Qt 5.15 the Qt Quick Compiler does not remove the input files anymore. All files are retained and the compiler merely adds the more efficient binary representation to the application. Task-number: QTBUG-73669 Change-Id: I5a523bfc69d4f48a1451bd880616c82fd73b8d15 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* | QQmlStreamWriter: Code cosmeticsUlf Hermann2019-08-301-8/+8
| | | | | | | | | | Change-Id: I0be7a3a8177697a4d47526d703329e2e0bb455f7 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | qmllint: Take prefix into account when inserting namesUlf Hermann2019-08-301-1/+1
| | | | | | | | | | Change-Id: I2c13e8fc173e5e155d07a1bbf8547df65605ba10 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | qmllint: Consider methods from the current scope as valid IDsUlf Hermann2019-08-302-1/+2
| | | | | | | | | | Change-Id: I71e9e2d5b4623938605d7afbfc79ae5c7d4251fc Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | qmllint: Handle the default import and .ui.qml filesUlf Hermann2019-08-302-14/+24
| | | | | | | | | | Change-Id: I9d86daa737d30ea0f76af431c59f44d59d4786e4 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | qmllint: Warn about magic signal handlersUlf Hermann2019-08-303-20/+76
|/ | | | | | | | Those are typically part of Connections elements. We want to use functions instead. Change-Id: I08b65eae8b8a6ba95f7a3570f5465961abbb506e Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* qmlplugindump: Handle types reexported by QtQuickFabian Kosmale2019-08-221-61/+72
| | | | | | | | | | | | Now that our own types are not registered with qmlRegisterType<T>() anymore, we can use QQmlType::module to decide whether a type should be included in the qmltypes file. We include types with no module, to support existing user code which still calls qmlRegisterType(). Change-Id: Iee0a132bf5b3ddcdfc222ab4b2d37a1f05b1851d Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Merge "Merge remote-tracking branch 'origin/5.13' into dev"Qt Forward Merge Bot2019-08-201-10/+0
|\
| * Merge remote-tracking branch 'origin/5.13' into devQt Forward Merge Bot2019-08-201-10/+0
| |\ | | | | | | | | | Change-Id: I9ce3eee3d6f88783b9e20110a2814bee805291a4
| | * Merge remote-tracking branch 'origin/5.12' into 5.13Liang Qi2019-08-051-10/+0
| | |\ | | | | | | | | | | | | Change-Id: I042df89ddd381c7fbb944b7ff49d5b45b764fd47
| | | * Revert "Yield error if qtquickcompiler is used in non-QML projects"Jörg Bornemann2019-08-021-10/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit c5578b16d6454e708c8ce12661a85d41eeaaa758, because it prevents enabling the qtquickcompiler feature globally. Fixes: QTBUG-77277 Change-Id: Ic80835c462570a67ae3105bb3d1b6452800d2c94 Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* | | | Fix build without features.temporaryfileTasuku Suzuki2019-08-192-0/+12
|/ / / | | | | | | | | | | | | Change-Id: If990efb64a4117bc7624062fededa7ce6a910f14 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | | qmllint: Fix compiler warningJarkko Koivikko2019-08-191-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | findunqualified.cpp(776) : warning C4172: returning address of local variable or temporary: dbg Change-Id: Ifce7ccdcce9ed629a2a9dd4759620d02804812b7 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | | qmllint: do not warn about the identifier of a catch statementFabian Kosmale2019-08-191-1/+2
| | | | | | | | | | | | | | | Change-Id: I2e679fe4fbebff7d8252da6ea69aed3cc9ffab41 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | | qmllint: Fail on recursion depth errorsUlf Hermann2019-08-192-1/+7
| | | | | | | | | | | | | | | | | | Change-Id: I815f82ed8c005ed83ceecff6ce80106a9ad9b21d Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* | | CMake: Provide API to allow handling of QML static pluginsAlexandru Croitor2019-08-174-3/+277
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change adds a new -cmake-output command line argument to qmlimportscanner which outputs its result in a format which is consumable by CMake. This change also adds a new CMake package called Qt5QmlImportScanner. It provides a function called QT5_IMPORT_QML_PLUGINS() which is useful for projects that use a static build of Qt and which also use QML plugins. Calling it with the target name of your application does the following: - Runs qmlimportscanner at configure time to find out which QML / QtQuick plugins are used by your project - Links the imported QML plugins into the target - Links the static dependencies of the QML plugins into the target - Generates a .cpp file that initializes imported QML plugins, which is subsequently compiled and linked into the given target When Qt is built in a shared library config, the introduced function is a no-op. [ChangeLog][CMake] Added ability to import static qml plugins with CMake builds using the new QT5_IMPORT_QML_PLUGINS function. Task-number: QTBUG-38913 Change-Id: Ib9b9a69654eab13dfbe12d10f5cb28ba3c307d1b Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | | linter: Cover all supported JavaScript functionsFabian Kosmale2019-07-261-12/+13
| | | | | | | | | | | | | | | | | | | | | + qDebug/commented out code cleanup Change-Id: Id6a4410391eed2fbf6ff0dd7aaffa1de4d5b892c Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | qmllint: Improve parent handlingFabian Kosmale2019-07-264-15/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Do not warn about parent access in unknown components This avoids false positive warnings when an imported component could not be found (or when it actually was not imported). We still warn about the component which could not be found, so the user is still informed that something is not right. We also still emit a warning when we know the properties of a component, and parent is not one of them. - Do not recommend the use of parent to address the root components properties. For this to work, we would need to know whether the root component reparents its children or not. Moreover, id lookups are actually faster than parent lookups. Change-Id: I83d0e71e4bf20d34a3e6d836c2b123b2bf0d416e Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | qmllint: Improve signal handler recommendationsFabian Kosmale2019-07-253-9/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Fix the case where multiple unqualified accesses would be mapped to the same signal (wrong in all but one cases), as the event parameter has the same name and we were using a QHash. Fixed by using QMultiHash and searching for the matching signal handler (by location) - Recommend arrow functions for single line event handlers Change-Id: I3cbb85fe0e49b454908ca03b4c86318ef02e364c Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Merge "Merge remote-tracking branch 'origin/5.13' into dev"Qt Forward Merge Bot2019-07-121-0/+10
|\ \ \