[qt/qt/qtdeclarative]: Summary of bulk changes made

KDE Git Services - Bulk Change <[email protected]>
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git repository change summary for qt/qt/qtdeclarative
Pushed by mirror-service into branch 'dev'.
Changed from 0bb2db59088ff59e17c974e1a1d0cd5e1ed48605 to 8239c8b9bcb2bbeba4d435170d7fb5b004a268d7
Acknowledgement was received that this change introduces only existing code that has been pushed to another public open source repository.

This change contains the following new commits:

Git commit 1ffdd361f603cb50535599ac088401a5d31fedfe by Sami Shalayel on 21/07/2026 at 07:00..
qmllint: fix unused import warnings

In QTBUG-144377, the ToolTip attached property is inherited from
ToolTip's base as ToolTip is defined via a QML file. Adapt the unused
import warning to recognize attached properties from base types.

Amends 8f60ffc42b732951b2b65fea414d6fcbb68dfde2 that introduced the
warning.

Pick-to: 6.12 6.11 6.8
Fixes: QTBUG-144377
Change-Id: Idc3755cd497c3242ace06db47930f288491712c8
Reviewed-by: Olivier De Cannière <[email protected]>
https://invent.kde.org/qt/qt/qtdeclarative/-/commit/1ffdd361f603cb50535599ac088401a5d31fedfe

Git commit 9e5c310126f480ed5de7d6ddd11099e0735325fe by Sami Shalayel on 21/07/2026 at 07:00..
qmllint: move unused import to lintervisitor

Move the state for the unused import warnings from the ImportVisitor to
the LinterVisitor.

Change-Id: I6a025897c1e9732c326135d3c2aeba39df4c4a79
Reviewed-by: Olivier De Cannière <[email protected]>
https://invent.kde.org/qt/qt/qtdeclarative/-/commit/9e5c310126f480ed5de7d6ddd11099e0735325fe

Git commit bc07e9f850f8041892a438cca6198013a0137f19 by Sami Shalayel on 21/07/2026 at 07:03..
doc: replace directory import from qualified import snippet

The directory import does not seem to make sense here, the documentation
in directoryImports.qdoc states:

Directory Imports rank below any module imports in precedence. If the
same name is defined in a module and in a directory that are both
imported into the same namespace, only the module's type is made
available.

Replace the directory import which can't clash with QtQuick with a
QML module import.

Pick-to: 6.12
Change-Id: I327895349ffed60e597c2a2e11b352d2fcfde5bd
Reviewed-by: Fabian Kosmale <[email protected]>
https://invent.kde.org/qt/qt/qtdeclarative/-/commit/bc07e9f850f8041892a438cca6198013a0137f19

Git commit f88681d820caf542ee6ef385bf51dc7894b97af3 by Sami Shalayel on 21/07/2026 at 07:04..
qmllint: parse/lint argument files only once

Before a37e4270a5e66507aeda483ec4d32262096b44cc, qmllint used to create
up to two qqmljsscopes for each file it got as command line parameters.

a37e4270a5e66507aeda483ec4d32262096b44cc enhanced this situation by
avoiding the duplicate scopes, but still processed each file twice (once
by the LinterVisitor for the actual linting and once via lazy-loading
when the file gets pulled in as dependency for another file to be linted).
This lead to QTBUG-146688 where processing the same file into the same
scope has some buggy side-effects and breaks the assumption that
lazy-loaded scopes are never modified after creation.

This patch addresses this issue by making qmllint process each
QML file from its command line once by merging the linting process
and the lazy-loading mechanism together.

Rework QmlJSLinter to work in two stages:
1. collect all files to be linted with prepareFileForBatchLinting()
2. do the actual linting with lintFileInBatch()

 -- Stage 1:
In prepareFileForBatchLinting, set up the file-to-be-linted with a
linting factory to lazy-load it via LinterVisitor instead of
QQmlJSImportVisitor.

"unprepared" files needed by the file-to-be-linted are still loaded
via QQmlJSImportVisitor.

 -- Stage 2:
In lintFile, populate the lazy file if needed and continue with the
rest of the linting process.
At this stage, the QQmlJSScopes of the QML files used by the
current-QML-file-to-be-linted can be populated via lazy construction,
which means that cycle references can be resolved. A first attempt
where all the linting pipeline ran during lazy-loading in stage 1 was
unsuccessful at resolving cyclic dependencies between files.

Remove m_logger from QQmlJSLinter: there may be multiple active loggers,
for example when lazy-loading a file via LinterVisitor during the
linting process of another file.

To avoid QTBUG-146688, make prepareForBatchLinting() return false when
linting would re-populate an already populated scope.
Re-populating a scope breaks all the references to its children which
leads to QTBUG-146688.

Adapt qmllint/main.cpp to prepare all file passed by commandline before
starting to lint them.

Adapt tst_qmllint to:
* simulate clean snippet scope that are actually reused. Snippets
  are not used by other QML code so their scope and children can
  safely be deleted.
* clear the cache when scope re-populating happens on non-snippets. Note
  that clearing the cache for each linted file would be cleaner but
  increases the test runtime by a factor of 2.5x.

Fixes: QTBUG-146688
Change-Id: Ibc7586501388988d60d8ca0fbfff4949ed3c3c22
Reviewed-by: Fabian Kosmale <[email protected]>
https://invent.kde.org/qt/qt/qtdeclarative/-/commit/f88681d820caf542ee6ef385bf51dc7894b97af3

Git commit 8239c8b9bcb2bbeba4d435170d7fb5b004a268d7 by Ulf Hermann on 21/07/2026 at 07:46..
qmlpreview: Guard against bindings changing type

Those are not trivial. We actually have to rebuild for them. This holds
not only for switching between literal and script bindings, but also for
turning a literal or script binding into a translation binding (or back):
a translation binding is a live QQmlTranslationBinding, so swapping its
kind means installing or dropping a live binding, which is structural.

Amends commit 670561f4d7ebb2bae02defe5a31ca7488b82792f

Pick-to: 6.12
Change-Id: I52ee52a49317c0c452cbfabe86123c769fc4f474
Reviewed-by: Sami Shalayel <[email protected]>
https://invent.kde.org/qt/qt/qtdeclarative/-/commit/8239c8b9bcb2bbeba4d435170d7fb5b004a268d7
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.