aboutsummaryrefslogtreecommitdiffstats
path: root/tools
Commit message (Collapse)AuthorAgeFilesLines
* qmldom: pass optional fileType to loadFileFawzi Mohamed2021-09-061-14/+18
| | | | | | | | | | | | | | If filetype is given use it to specify the type of the file to load (otherwise guess it from the file extension). Can be used to load qmltypes files as "plain" qml files (for reformatting). Ths enables the reformatting of .qmltypes (for API comparison) Change-Id: Ib65647c2a8dc8b37b7e955acb3aec2193d36666d Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 7331f651c1c16217a31f3cdec700f014057b7268) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Allow QML plugin's CMake target name to be specified for qmldir fileCraig Scott2021-08-201-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current code assumes that the basename of the QML plugin is the same as the CMake target it corresponds to. This won't be the case for installed Qt packages due to the installed name including a namespace. It also won't match when a Qt library infix is used. The current code works around the former by trying to heuristically work out whether a namespaced Qt target exists for the plugin. The Qt library infix is more problematic because the plugin target name won't include the infix whereas the plugin library basename will. Address both of those issues by adding an internal option INSTALLED_PLUGIN_TARGET to qt6_add_qml_module() which allows the installed target name to be provided. When included in a qmldir file, qt6_import_qml_plugin() will use that name, otherwise it will fall back to using the plugin library's basename, as per the current behavior. The option may become public in the future, but for now it is only for Qt's internal use for the 6.2 release. Conflicts: src/qml/qmldirparser/qqmldirparser_p.h Fixes: QTBUG-95140 Change-Id: I5a057c80b70ee802c0f0840e9eea2e579193d126 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit a25f650c317e4886007a8beb0e9f2f7e973e6e7c) Reviewed-by: Craig Scott <craig.scott@qt.io>
* Add NO_PLUGIN option to qt6_add_qml_module()Craig Scott2021-08-032-2/+0
| | | | | | | | | | | | | | | | | | | | The new option allows the caller to state more clearly that they do not want a plugin at all. Previously, the NO_CREATE_PLUGIN_TARGET option had to be given to prevent the command from trying to create a plugin target, but that option is meant for when the project will create the plugin target later. Now that the caller has a way to explicitly say they don't want a plugin, require PLUGIN_TARGET to be given if NO_CREATE_PLUGIN_TARGET is present. This forces the project to provide the name of the plugin target that they will be responsible for creating. Fixes: QTBUG-95141 Change-Id: I84e036074f3e2785f17a8d33ad87ee0b7e016173 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 73c76005e64d92ff5e3ef7d2a578b1d7a14b3d5f)
* Replace qmlcachegen's --qmljs-runtime with generic mechanismUlf Hermann2021-07-091-3/+0
| | | | | | | | | | | | | We don't need --qmljs-runtime after all. However, we do want to pass custom arguments to qmlcachegen. This way we don't need to change the world whenever we invent one. Change-Id: I99f0c99c4b15e469605dc43d26871fa43dc36c08 Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Fawzi Mohamed <fawzi.mohamed@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 06b3f1f2e7898b72b6c2baf87d63c118dc1ae267) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* CMake: Run qmllint on the qml files in the source treeCraig Scott2021-07-071-8/+9
| | | | | | | | | | | | | | | | | | | | | | | | In order to use the source tree files, qmllint needs to know where they will end up in the resource system. The source files could be at any arbitrary location and have their resource path set by a QT_RESOURCE_ALIAS source file property. Therefore, we have to give the generated .qrc files to qmllint so it can work out where each source file will end up. The qmllint command previously only supported a single --resource option, but now we need to potentially pass more than one .qrc file. Extend qmllint to allow multiple --resource options to be given, in the same way that multiple -I options can be given. Task-number: QTBUG-94761 Change-Id: Ibeb6541e1f54bea6eeeccd07426dd238b0459ff2 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io> (cherry picked from commit 7365b0d1c64fcde54ae5a043b28550f44797d236) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* CMake: Update warning about qtquick_compiler_add_resourcesAlexandru Croitor2021-06-251-3/+4
| | | | | | | | | | | To mention qt_add_qml_module instead of qt6_add_resources. The latter does not process qml files anymore. Change-Id: I12ce2b60b1d20cbfc9c781e3f15f7999f5ba563d Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 63b91343adb63adf514887fa84f8bef3c04a0f12) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* qmllint: Hide deprecated optionsMaximilian Goldstein2021-06-241-9/+11
| | | | | | | | | We shouldn't keep advertising options we're deprecating anyway, just warn when they are still passed to qmllint. Change-Id: Ibe53c51fc473719d021f912243921b6511ebd2f4 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> (cherry picked from commit b4d9bf79e1b3cf17d2a2473ae9901b9aec22f409)
* qmllint: Ignore unqualified access in custom parser componentsMaximilian Goldstein2021-06-221-0/+10
| | | | | | | | | | We currently can't handle all special cases with custom parsers (i.e. signal transitions) so we need to ignore unqualified accesses except for those specific instances where we already have some special handling implemented (e.g. Connections). Task-number: QTBUG-77417 Change-Id: Iea86d4b56e56091c7acffc29a0259de412fa1624 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 4063895a28bb454995d6b4ee57e4f2c3b5dcc5d7) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* qmlformat: Use the Qt version instead of 1.0Maximilian Goldstein2021-06-221-1/+1
| | | | | | | | | This makes way more sense than just sticking to 1.0 forever or introducing our own tooling versioning and is consistent with qmllint. Change-Id: Id797191e6b343b97831409e8d5f888761f91b1d5 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> (cherry picked from commit 81ad9f39aff34a6c7b12a7611f62b55dec571558) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* qmllint: Move a lot of warning logic to qmlcompilerMaximilian Goldstein2021-06-094-596/+82
| | | | | | | | | | | Moves the majority of qmllint warning logic to qmlcompiler, making them available to all tools using the library. The end goal is to get rid off the additional AST visitor in qmllint altogether (We can't quite yet until we have ported over type interference). This also prepares qmlcompiler to move to a two pass approach which isn't fully implemented in here yet due to the size of the change. Change-Id: Id2e108340d26a75085ce6ed97d56dec03ea3a12d Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 3c95bf5b6df7cfd12af3755d11b34db721e23f19) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* qmlformat: use QmlDomFawzi Mohamed2021-06-058-2383/+104
| | | | | | | | Replace qmlformat with the formatter using qml dom Change-Id: Ie90814260f2d3b9e589ce04381d5ad1880c5b519 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qmldom: writeOut, write reformatted QmlFawzi Mohamed2021-06-051-1/+50
| | | | | | | | | | | | Adding writeOut: support for reformatted Qml - linewriter: write line by line with caching, callbacks, SourceLoaction updating - outwriter: write to line writer, and keep track of updated file locations and reformatted ScriptExpressions - reformatter: reformat javascript Change-Id: I4bdc393fb2d9b5a3db944a850719c24ef8726d15 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qmldom: compare and dump to file, domtoolFawzi Mohamed2021-06-053-0/+244
| | | | | | | | | | | * qqmldomfieldfilter: ignore fields or types in dump or comparison * qqmldomcompare: compare DomItem * qqmldomfilewriter: safely write to a file (keep backups, avoid overwrite before success is confirmed, avoid overwrite if equal) * qmldomtool: command line tool to dump dom Change-Id: If4fbff7dff70d3a780293ac8b458f674e8f91591 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Refactor and update qml CMake APICraig Scott2021-06-042-31/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The existing CMake API for qml modules had a number of shortcomings. Refactor it to achieve the following: - Clearly separate public and internal aspects. - Re-use code from qtbase for adding plugins and module targets rather than reimplementing close variations. - Provide more robust and complete support for qmllint, qmlcachegen and automatic generation of qmldir files. - Reduce the steps needed for more common scenarios. - Encourage the use of separate backing library and plugin targets. - Automatically generate the plugin class .cpp file where possible. - Specify .qml files directly through qml-specific API elements rather than assuming they can be extracted out of a set of resources. [ChangeLog][QtQml] The qml CMake API has changed from 6.1 and is now out of Technical Preview status. The most notable change is that .qml files should no longer be specified as resources, there is dedicated handling for them in the qt6_add_qml_module(). A related change is that the qt6_target_qml_files() command has been replaced by qt6_target_qml_sources(). More complete integration with qmlcachegen, qmllint and qmldir generation is also part of the CMake API. Fixes: QTBUG-91621 Task-number: QTBUG-82598 Task-number: QTBUG-88763 Task-number: QTBUG-89274 Task-number: QTBUG-91444 Change-Id: I25aae1b0e89890394dfe2ba2824008164b2ca8d9 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* qmlimportscanner: Remove superfluous QV4 includesFabian Kosmale2021-06-031-3/+0
| | | | | Change-Id: I6ea8dd969c9550e34bbf47ec1291c554f3aee79b Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* qmllint: Make the tool version equal the Qt versionMaximilian Goldstein2021-06-031-1/+1
| | | | | | | | | Use the Qt version instead of 1.0. Especially important since qmllint allows for mixing and matching the tool with other Qt versions. Change-Id: Ib485578f93d8e61f2aa76bb610c3fd87ed71cd60 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Set index to QQmlJSMetaProperty when traversing QQmlJS::ASTAndrei Golubev2021-06-031-0/+9
| | | | | | | | Along the way, add few Q_ASSERTs to make sure property index is set when it should be set Change-Id: Ifa2d3e08deda65368f47c7071385b0f24dd4cecd Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* qmllint: Add ability to ignore individual warningsMaximilian Goldstein2021-06-033-7/+87
| | | | | | | | | | | Allows users to ignore individual warnings by adding a "// qmllint disable" comment in the line that triggers the warning. This feature is especially useful for use in pre-commit / CI tests as it allows to add exceptions for individual warnings that cannot be fixed immediately. [ChangeLog][qmllint][New Feature] You can now ignore individual warnings by adding "// qmllint disable" in the line causing it. You may also specify one or more warning type to ignore ("// qmllint disable warningtype1 warningtype2...") which is preferable. This can also be done for entire blocks of code by using "// qmllint disable" in an empty line and ending it with "// qmllint enable" Change-Id: Iea6c29132d6b51ecfb5e5d8a19a43446a7286c24 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qmllint: Add support for outputting warnings as JSONMaximilian Goldstein2021-06-011-9/+112
| | | | | | | | | | Adds the ability to output warnings as JSON, one line per file. This makes it way easier to process qmllint warnings for use in CI tooling or IDEs. [ChangeLog][QtQml][qmllint] Add the ability to output warnings as JSON for use in tooling. Change-Id: Iecd48e123859aa939bd9753cb8f6e44d4d7e3667 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qmllint: Add support for loading options from settingsMaximilian Goldstein2021-05-274-16/+274
| | | | | | | | | | | | | | | | | This change adds support for a reading a simple settings file (.qmllint.ini) to set log levels and various other options. The settings file applies on a per-directory basis so linting files in two subdirectories with different settings will use their respective settings files. If the directory of the linted file does not contain any settings we search through all parent directories. This is implemented in a way that qmlformat can also utilize the settings file code. This makes qmllint more useful for larger projects that might want different settings for different parts of their QML code. It also allows for better integration in CI checks and pre-commit hooks. [ChangeLog][General][qmllint] Adds the ability to set linting options via a settings file rather than using command line parameters. Use --write-defaults to generate a template with default values for editing. Use --ignore-settings to disable this feature Change-Id: I94e4a47916b5dfd16c3a69efdba3858235cab738 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Evaluate type assertions in QMLUlf Hermann2021-05-261-2/+4
| | | | | | | | | | | | | | | | | | Type assertions actually check whether the expression matches the type, and return null if it doesn't. [ChangeLog][QtQml] You can use TypeScript-like type assertions using "as" now. In contrast to TypeScript, QML's type assertions are enforced at runtime. If the type doesn't match, null is returned for object types. Also, type assertions can only cast to object types. There is no way to create a value type or primitive type reference. As value types and primitives cannot be polymorphic, this doesn't matter, though. There are other ways of converting those. Task-number: QTBUG-93662 Change-Id: I00fce3d4ea7a8c6b4631c580eaf6c113ac485813 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* qmllint: Introduce import cachingMaximilian Goldstein2021-05-261-5/+13
| | | | | | | | Previously we only cached processed qmldirs, now we cache full modules and dependencies. This leads to manyfold speed increase (10 times in my tests) when lots of files are linted in one invocation of qmllint and those files have a lot of imports with shared dependencies. Change-Id: Ifcd1eb9d620ca7a18c0a3d6395fbb6d003472dab Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qml: Don't leak the created objectsUlf Hermann2021-05-211-0/+1
| | | | | | | | | | Rather, parent them to the watcher. The watcher lives in the main() function's scope. Change-Id: I2ac1d14d80d4100756a3ad94b6502d46fda30074 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Add a ParentProperty classinfo and use that to find parentsUlf Hermann2021-05-191-2/+9
| | | | | | | | | | This is more robust than just going by the "parent" name. Task-number: QTBUG-93662 Change-Id: If099733de6ad0f3bb7cb75b8915789f66b554f85 Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* CMake: Remove unneeded *.pro and .prev_CMakeLists.txt filesCraig Scott2021-05-1913-525/+0
| | | | | | | | | | The .pro files corresponding to the .prev_CMakeLists.txt files have already been removed. Change-Id: I254eafe4c7de1a516e33bd9cb3d9879e73fa83b4 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix the qmlscene command help messageJiDe Zhang2021-05-181-1/+1
| | | | | | Pick-to: 6.1 Change-Id: Ie957bcc459a91d1c353be664074475545ec67510 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* qmllint: Add inline component supportMaximilian Goldstein2021-05-141-3/+5
| | | | | | | | | | | Adds support for inline components for qmllint with a few things not working yet: - Two inline components referencing each other - Using inline components before they are declared These two issues require a larger overhaul of qmllint as a whole and will be addressed in a different change. Change-Id: I2834702c21a8eb728db4709d6f475c33796b3e4d Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* qmllint: Utilize qjsroot.qmltypesMaximilian Goldstein2021-05-141-10/+0
| | | | | | | | Previously for some types like QString, QDateTime and QRegularExpression and others there was no sensible type information available. Now that we have qjsroot.qmltypes we can refer to its type information in order to resolve these types. Change-Id: Iea88cf467c694299396630e0f180ca6ff4ca3847 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* qmllint: Fix unknownBuiltins not being ignored in all casesMaximilian Goldstein2021-05-111-0/+3
| | | | | | | | Previously we only skipped over them when they occurred in a property access chain (not covering the beginning, methods etc.) now we should always ignore them safely. Change-Id: I405de6d97a15cba1db641b2c8310427cc9558d68 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Move tools to libexecKai Köhne2021-05-115-2/+5
| | | | | | | | | | | | | | Move qmlimportscanner, qmltyperegistrar, qmljsrootgen, qmlcachegen to libexec These are internal tools that is not supposed to be run by the user directly. [ChangeLog][Linux] qmlimportscanner, qmltyperegistrar, qmljsrootgen, qmlcachegen tools got moved from QTDIR/bin into QTDIR/libexec directory. Task-number: QTBUG-88791 Change-Id: I2739044e872ec83ef7da7dd857c26395ecfd407d Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io>
* Fix regression where qtquickcompiler cannot find rccKai Köhne2021-05-071-1/+1
| | | | | | | | | | | | RCC got moved to libexec in 6.1 [ChangeLog][qmake] Fixed regression in Qt 6.1.0 which broke 'QT += qtquickcompiler' on Linux, macOS. Pick-to: 6.1 Fixes: QTBUG-93563 Change-Id: I5fb661a529c43b3b58316b73f4c62e069d1c7df4 Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io>
* Extend qmlimportscanner to support response files on the command lineCraig Scott2021-05-071-1/+32
| | | | | | | | | | | | | | This is preparation for being able to list individual qml files on the command line instead of requiring them to be in a .qrc file. To avoid running into line length issues when there are a lot of files, allow response files to be used to store arguments instead. Use the common tool convention of a leading "@" before the name of the response file. Change-Id: Id91daf08a6022033a448e9ed98085df8b246a849 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
* Fix qmleasing build without features.*Tasuku Suzuki2021-05-061-1/+14
| | | | | Change-Id: I68df56cdadf42ca535290b4f1ee6d88a34470a91 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* qmllint: Exclude children of custom parser elements from warningsMaximilian Goldstein2021-05-031-3/+14
| | | | | | | Some warnings caused by the children of custom parser elements also need to be ignored. Change-Id: Iff3c6e5ce2ea334c6de7a14c8592ee1ebf80bb58 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* qmllint: Fix newlines when disabling unqualified access warningsMaximilian Goldstein2021-04-301-2/+3
| | | | | | | Previously you'd get a bunch of newlines regardless of whether or not a warning was actually produced. Change-Id: I9b09f68d5190f2b6112f650900ffb1429be8c788 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qmllint: Handle UiArrayBindings properlyMaximilian Goldstein2021-04-301-1/+1
| | | | | | | | This doesn't actually properly process them yet but at least it's a step in the right direction and makes sure array elements aren't just added to the parent scope. Task-number: QTBUG-93358 Change-Id: I3d400abd10df032ee16c9c1dfc13562d36c22169 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qmllint: Do not choke on self attaching typesMaximilian Goldstein2021-04-291-0/+6
| | | | | | | | Previously qmllint would land in an endless loop when going over self-attaching types. This is now fixed and we also ensure that other cyclic type relationships can't cause the same issue. Change-Id: I788139a9632abe48c470f5f4e2dfb0cd96699d90 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qmllint: Properly handle "on" bindingsMaximilian Goldstein2021-04-281-5/+5
| | | | | | | | Previously "on" bindings were handled like normal property assignments, this is obviously wrong. Fixes: QTBUG-93189 Change-Id: Ifda51103cafeb2488c54e0ac702e564771767f18 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qmllint: Remove unnecessary newlinesMaximilian Goldstein2021-04-282-49/+40
| | | | | Change-Id: I4349c12dee01b2e9bfecb58a4390d297dcbfc675 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qmllint: Fix false positive warnings for non-list default propertyMaximilian Goldstein2021-04-281-2/+4
| | | | | | | | | | We stored whether something was assigned a default property in the scope the property stems from rather than the one where it occurs. This leads to issues when two destinct elements both share the same base type and want to assign a default property. Task-number: QTBUG-93189 Change-Id: I0560a0ffc6f83849333f8f5fad8e760bd05bec9a Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qmltypes: Add information about QQmlCustomParserMaximilian Goldstein2021-04-271-0/+5
| | | | | | | | | | Adds a macro called QML_CUSTOMPARSER which will result in a hasCustomParser flag to be set in qmltypes. Also ensures qmllint does not warn about unknown properties when a class utilizes custom parsers. Fixes: QTBUG-93027 Change-Id: I7559d79c9bf06a0a7a93f54370948f12d09dd64e Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qmllint: Store property's binding type separatelyMaximilian Goldstein2021-04-261-4/+14
| | | | | | | | | In the past the type of a property's bindings would override the base type. This would lead to incompatible type warnings when trying to override that binding with another value that was compatible with the property type but not the binding one. Change-Id: Ie0c0843e34f24e05aae7bbb429899fbe076e7262 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* qmllint: Fix several type checking issuesMaximilian Goldstein2021-04-231-11/+12
| | | | | | | | | | - Fixes the issue of QQmlComponent properties showing a type mismatch that isn't there - Fixes duplicate scopes with the same internal name not being recognized as type matches - Does not warn about incomplete / unresolvable types being incompatible anymore Task-number: QTBUG-92571 Change-Id: Ia4399c44b87fee6614f2b8c95cb28fcaeec780b4 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* qmllint: Warn about multiline stringsMaximilian Goldstein2021-04-202-0/+17
| | | | | | Task-number: QTBUG-92448 Change-Id: Ic6305f05cb8a0af5c36ac03d8b541ac78cea0612 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* qmllint: Warn about deprecated functionsMaximilian Goldstein2021-04-191-0/+21
| | | | | | | | | Now qmllint will also warn when functions have a Deprecated annotation which previously only applied to properties and elements. Task-number: QTBUG-84895 Fixes: QTBUG-79857 Change-Id: Ie1436822dc06bfd1ee4305a8468900409c3f8b0a Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Fix build without features.mainwindowTasuku Suzuki2021-04-161-1/+1
| | | | | Change-Id: I497207567fe940bc077804b58db79bc5d44ae9f0 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* qmllint: Fix non-existent default property for ComponentMaximilian Goldstein2021-04-161-0/+4
| | | | | | | | Before children of Component caused errors about a non-existing default property. Task-number: QTBUG-92571 Change-Id: I702ea79cf18221c35be48a86c6da35e809de073f Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Rework qmljsrootgenUlf Hermann2021-04-161-160/+241
| | | | | | | | | This way it actually generates interesting data about the JavaScript types, for example the functions of the String prototype. Add a helper method to create a symbol to QJSEngine. This should be generally useful. Change-Id: I6c7b253b9d6cdb61602ceeae0955aed8d942c139 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qmllint: Fix QQmlComponent default property incompatible type warningsMaximilian Goldstein2021-04-141-0/+4
| | | | | | | | | Assigning any element to a QQmlComponent property implictly wraps it into a Component. Thus checking for compatible types does not make sense here. Fixes: QTBUG-92571 Change-Id: Id72f69d30d8506193c52a51b038b9c218ac85917 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* qmlformat: fix QFSFileEngine::open: No file name specifiedEvgeniy A. Dushistov2021-04-141-11/+13
| | | | | | | | | | | | | | | | Since commit d48b87450327e710f7b0a843627624aa67cae116 qmlformat prints the message: QFSFileEngine::open: No file name specified on normal usage like: qmlformat path/to/qml qmlformat -i path/to/qml This is because it tries to open the file specific by the "files" option event if no such option was passed. Pick-to: 6.0 6.1 Change-Id: Id14247210fc77a3f10dc25866607a9952fe81dfa Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>