Skip to content

Calls order of q_invokable method #10

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 10,000 commits into
base: 6.2
Choose a base branch
from
Open

Calls order of q_invokable method #10

wants to merge 10,000 commits into from

Conversation

rjcamatos
Copy link

If there are 2 or more methods with the same name but reciving diferent arguments the QJSEngine Pickup the First One declared.

Example:
methodxyz(string)
methodxyz(objptr*)

It picks up the first one passing as argument a string and not the one that i was expecting an object as it was send.

qtprojectorg pushed a commit that referenced this pull request Dec 8, 2023
Using std::binary_search has the requirement that the passed
range fulfils ordering requirements, which was not the case
for the cppKeywords array here.

As the QString doc says [1]:

> QStrings can be compared using overloaded operators such as operator<(),
> operator<=(), operator==(), operator>=(), and so on. Note that
> the comparison is based exclusively on the numeric Unicode
> values of the characters. It is very fast, but is not what a
> human would expect; (...)

Therefore, sort the array accordingly and add an assert to
ensure it will remain sorted.

Fixes an crash/assert when building qtdeclarative with
CXXFLAGS='-D_GLIBCXX_DEBUG':

    /usr/include/c++/13/bits/stl_algo.h:2243:
    In function:
        bool std::binary_search(_FIter, _FIter, const _Tp&) [with _FIter = const
        QString*; _Tp = QStringView]

    Error: elements in iterator range [first, last) are not partitioned by the
    value __val.

    Objects involved in the operation:
        iterator "first" @ 0x7ffc4a2c4f18 {
          type = QString const* (constant iterator);
        }
        iterator "last" @ 0x7ffc4a2c4f10 {
          type = QString const* (constant iterator);
        }
    Aborted (core dumped)
    ninja: build stopped: subcommand failed.

GDB backtrace:

    Program terminated with signal SIGABRT, Aborted.
    #0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
    44      ./nptl/pthread_kill.c: No such file or directory.
    (gdb) bt
    #0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
    #1  0x00007f307e0a815f in __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78
    #2  0x00007f307e05a472 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
    #3  0x00007f307e0444b2 in __GI_abort () at ./stdlib/abort.c:79
    #4  0x00007f307e2a300d in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
    #5  0x00005639ff90471d in std::binary_search<QString const*, QStringView> (__first=0x5639ffa1a9c0 <QmltcVisitor::checkForNamingCollisionsWithCpp(QDeferredSharedPointer<QQmlJSScope const> const&)::cppKeywords>,
        __last=0x5639ffa1b2c0 <guard variable for QmltcVisitor::checkForNamingCollisionsWithCpp(QDeferredSharedPointer<QQmlJSScope const> const&)::cppKeywords>, __val=...) at /usr/include/c++/13/bits/stl_algo.h:2243
    #6  0x00005639ff8fb837 in operator() (__closure=0x7ffc4a2c52bf, word=...) at /home/michi/development/git/qt5/qtdeclarative/tools/qmltc/qmltcvisitor.cpp:764
    #7  0x00005639ff8fb89e in operator() (__closure=0x7ffc4a2c52a0, name=..., errorPrefix=...) at /home/michi/development/git/qt5/qtdeclarative/tools/qmltc/qmltcvisitor.cpp:768
    #8  0x00005639ff8fc99b in QmltcVisitor::checkForNamingCollisionsWithCpp (this=0x7ffc4a2c6070, type=...) at /home/michi/development/git/qt5/qtdeclarative/tools/qmltc/qmltcvisitor.cpp:787
    #9  0x00005639ff8f9dea in QmltcVisitor::endVisit (this=0x7ffc4a2c6070, program=0x563a002e0628) at /home/michi/development/git/qt5/qtdeclarative/tools/qmltc/qmltcvisitor.cpp:341
    #10 0x00007f307f6636fa in QQmlJS::AST::UiProgram::accept0 (this=0x563a002e0628, visitor=0x7ffc4a2c6070) at /home/michi/development/git/qt5/qtdeclarative/src/qml/parser/qqmljsast.cpp:1193
    #11 0x00007f3080159b8f in QQmlJS::AST::Node::accept (this=0x563a002e0628, visitor=0x7ffc4a2c6070)
        at /home/michi/development/git/qt5/qtbase/include/QtQml/6.7.0/QtQml/private/../../../../../../qtdeclarative/src/qml/parser/qqmljsast_p.h:272
    #12 0x00007f3080212f4b in QQmlJSTypeResolver::init (this=0x7ffc4a2c5b50, visitor=0x7ffc4a2c6070, program=0x563a002e0628) at /home/michi/development/git/qt5/qtdeclarative/src/qmlcompiler/qqmljstyperesolver.cpp:173
    #13 0x00005639ff8f0bd3 in QmltcTypeResolver::init (this=0x7ffc4a2c5b50, visitor=0x7ffc4a2c6070, program=0x563a002e0628) at /home/michi/development/git/qt5/qtdeclarative/tools/qmltc/qmltctyperesolver.cpp:19
    #14 0x00005639ff8c02d4 in main (argc=23, argv=0x7ffc4a2c7a68) at /home/michi/development/git/qt5/qtdeclarative/tools/qmltc/main.cpp:269

[1] https://doc.qt.io/qt-6/qstring.html#comparing-strings

Change-Id: I82ebbcdca4ab90155b935f9af24b3a3821134563
Reviewed-by: Sami Shalayel <[email protected]>
Reviewed-by: Ulf Hermann <[email protected]>
Copy link

cla-assistant bot commented Nov 15, 2024

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
1 out of 13 committers have signed the CLA.

✅ EvenOAndersen
❌ kkoehne
❌ dorisverria1
❌ vohi
❌ Mate Barany
❌ QtDheeru
❌ samishalayel
❌ mitchcurtis
❌ dilekakcaay
❌ alcroito
❌ michaelweghorn
❌ Inkane
❌ ASpoerl


Mate Barany seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.
You have signed the CLA already but the status is still pending? Let us recheck it.

Olivier De Cannière and others added 28 commits May 16, 2025 17:00
Fixes: QTBUG-127325
Task-number: QTBUG-119890
Change-Id: I20b497da025dec8050ea94fc604db33a3ebdde77
Reviewed-by: Fabian Kosmale <[email protected]>
This is a feature in Lottie, where layers pop into existence and
pop out later on. We do this by animating the visibility of the
item.

Change-Id: Ieebab4e84f9254976b0de9759a1f0f4c8026210e
Reviewed-by: Eirik Aavitsland <[email protected]>
The Lottie file format has a feature where a layer can have
the transform of another layer (including any transform
set on one of its ancestors) as its base. This means that
we need a specialized helper type that collects the transforms
of its ancestors and exposes the combination so that it can
be referenced from a different part of the generated QML.

Change-Id: I20b72cb9b9af2834f40f391ecb8df7bb0c5e1958
Reviewed-by: Eskil Abrahamsen Blomfeldt <[email protected]>
Amends commit 3fd49c8

Pick-to: 6.9 6.8 6.5
Change-Id: If30ad483c17535e7a1f423dc5bfa8f94ef3914ed
Reviewed-by: Fabian Kosmale <[email protected]>
Reviewed-by: Mitch Curtis <[email protected]>
Change-Id: I175224539c2626dd5f54df5db67e14c0cbc5085c
Reviewed-by: Qt Submodule Update Bot <[email protected]>
Plugin applications should generally not use environment variables since
those are meant for the host application. Furthermore, they should not
look at QCoreApplication::applicationDirPath() since that is the host
application's path. They can use the resource file system and their own
Qt installation's paths, though.

[ChangeLog][QtQml][Important Behavior Changes] The default import and
plugin paths for QML have been changed for applications that set the
Qt::AA_PluginApplication attribute. This attribute is meant to isolate
the plugin application from the host application. To achieve this goal,
it can't share plugin and import paths with the host application.

Task-number: QTBUG-133312
Task-number: QTBUG-134925
Change-Id: I813799e7a3d4eeb6e6ba37050e68b42b029c88d2
Reviewed-by: Tim Blechmann <[email protected]>
Reviewed-by: Fabian Kosmale <[email protected]>
Reviewed-by: Tor Arne Vestbø <[email protected]>
In 6.9.1 the Q4A compile SDK version was bumped to 35, which includes
a new edge-to-edge feature. For now this was disabled until we can add
official support for the feature.

When building the QtQ4A examples from the command line a linter is run
as part of the build process and this raises a complaint about the
disabling of the edge-to-edge feature, as that is not supported until
API level 35 and the minSDKLevel is still 28.

This should be safe to be ignored which we can do by setting the
linter-specific "tools:targetApi" attribute to the element.

Amends 3d3f2dc.

Task-number: QTBUG-134880
Fixes: QTBUG-136933
Pick-to: 6.9 6.9.1 6.8
Change-Id: Ie86fdc429ffb9f89ebe23999967a329cd630f194
Reviewed-by: Petri Virkkunen <[email protected]>
SVG has a feature where a set of animations on the transform
can be set to either replace or append to previous animations,
but only while the animation set is active.

In order to support this, we introduce a helper class called
TransformGroup which can contain a set of parallel animations
and have them override the others.

Change-Id: I28be7d120527b1f2d1e3dbf5c5de94094c766363
Reviewed-by: Eirik Aavitsland <[email protected]>
The warnings should be part of the linting visitor.

Introduce a new warning category for the exising warning about
duplicate enum entries.

Amends bbce9ea

This also (re)moves the test for warnings about enums in inline
components from qmltc. These warnings should be generated by qmllint.
Some files that had enum inside of inline components may no longer fail
to compile because of the warning. This is fine as the enum is not
accessible anyways.

Amends f368be4

Task-number: QTBUG-119890
Change-Id: I90f280e2e443504ab336b4c2ad85bf7e53e4544f
Reviewed-by: Fabian Kosmale <[email protected]>
Fixes: QTBUG-117300
Task-number: QTBUG-119890
Change-Id: If503b3dbfe9c8ad916afa3b570861f62c33e1fbd
Reviewed-by: Fabian Kosmale <[email protected]>
Fixes: QTBUG-119781
Task-number: QTBUG-119890
Change-Id: I392819ad0a47e0457c4b888894893ac37a77fa11
Reviewed-by: Ulf Hermann <[email protected]>
Reviewed-by: Fabian Kosmale <[email protected]>
Task-number: QTBUG-129307
Change-Id: I95f633299ca94cb27c545a97a465bb5e24b5e3e8
Reviewed-by: Ulf Hermann <[email protected]>
Animation steps that do not actually modify the property value are
replaced with just a PauseAnimation. Significantly reduces the number
of lines in the output.

Change-Id: I281acb123e664ed21e63c5a94ac65dc30e4de1fa
Reviewed-by: Eskil Abrahamsen Blomfeldt <[email protected]>
- Fix linking to `QtQuickView` Android class
- Fix incorrect link target to section
- Fix \sa link to QLocale::createSeparatedList()
- Remove link to undocumented header `qqmlregistration.h`
- Replace link to non-existent QML type HeaderViewDelegate with actual
  type name(s).
- Fix links to (Horizontal|Vertical)HeaderView::delegate property, as
  the property is documented in the base type.
- Remove \sa links to private member QSGTextNode::doAddTextDocument()

Pick-to: 6.9
Change-Id: I3bab7155f8d73af6d51f8cfe890ece6d31671f1d
Reviewed-by: Nicholas Bennett <[email protected]>
When a delegate modifies a property or connected to a signal of the
attached object the attached object is created before the parent item
of the delegate is set so view would end up unset.

Fixes: QTBUG-133562
Pick-to: 6.9
Change-Id: Ia227c9ee009ea719656f802a99cf43afc02d28d9
Reviewed-by: Richard Moe Gustavsen <[email protected]>
Task-number: QTBUG-127286
Change-Id: I8e3e9e4e05d75744348dad0c3b15e09260ee34f2
Reviewed-by: Fabian Kosmale <[email protected]>
Reviewed-by: Sami Shalayel <[email protected]>
Reviewed-by: Leena Miettinen <[email protected]>
Unity builds are broken on windows due to a `Parse error at "IID"`.

Skiping unity build inclusion of the genereated
QQmlEngineExtensionPlugin file to make them happy.

Pick-to: 6.8 6.9
Change-Id: I1cd63b6c9ea0156d40d009b4c1e61f3318cbd96b
Reviewed-by: Alexandru Croitor <[email protected]>
A top-level configuration with FEATURE_thread=OFF fails when autotests
are enabled. Most tools can be built without threads nowadays, so we
enable them and only exclude the qquickworkerscript and gifs tests.

Pick-to: 6.8 6.9
Change-Id: I809b021b4bdc4031d6c3335bea3aee414f5ce863
Reviewed-by: Alexandru Croitor <[email protected]>
We need to handle all array-likes in both variants.

Amends commit 07cfd1b.

Pick-to: 6.9 6.8
Fixes: QTBUG-136581
Change-Id: I403dbb97c8f59e37babd6391f70fdc1a1a993cd6
Reviewed-by: Fabian Kosmale <[email protected]>
Reviewed-by: Sami Shalayel <[email protected]>
Its not a wrapper anymore, its just an alias to a QList iterator.

Change-Id: I15006f288a3a225e7bda9905c685e1050c70a265
Reviewed-by: Olivier De Cannière <[email protected]>
This is rather handy for figuring out the QQmlType given a metatype.

Task-number: QTBUG-71348
Change-Id: Ib33e9e36937409ca408d44089ce8f1aea39f138a
Reviewed-by: Sami Shalayel <[email protected]>
We may store them in various places, for example as argument types to
methods. Rather, keep a cache of composite metatypes and recycle them as
necessary. These days, each type has a unique URL and we can use those
URLs to recognize them. If a type is dropped and later re-loaded we can
simply change the name of the metatype in place. It's the only actually
unique piece of data about composite metatypes.

As a drive-by simplify the creation of names for inline component types
a bit and move the names into place.

Pick-to: 6.9 6.8
Fixes: QTBUG-135286
Change-Id: I01728a1e5f40175072d8a27bb1b0dee5929d31c2
Reviewed-by: Fabian Kosmale <[email protected]>
Calculating those is a rather complex affair, and unlikely to pay off.

Previously they were used to pre-allocate space in the object creator.
We use standard containers with standard allocation strategies
everywhere else. If this turns out to be an actual problem, we could
record the actual numbers when we create a component and record those in
the ExecutableCompilationUnit for next time.

Task-number: QTBUG-135286
Change-Id: Ia44bbc9c49cbfb638f5d4bbbb345c48124e4fb09
Reviewed-by: Fabian Kosmale <[email protected]>
This patch fixes the comparison of different signed
integers on Android x86 architecture. Fix introduces
q20::cmp_greater_equal to be used.

Fixes: QTBUG-136969
Change-Id: I6ec17c3604b82266cfd7a68f7f5505360b6a65c6
Reviewed-by: Ville Voutilainen <[email protected]>
In QtC, ErrBlocksNotSupportedInQmlUi is supposed to warn about function
blocks when used in bindings. We can't detect function blocks with the
QQmlSA infrastructure because we don't have access to the AST, but we
still can actually detect bindings to function blocks.

Extend ScriptBindingValueType to be able to recognize bindings that
contain functions (JS blocks, arrow functions and lambdas). Extend the
QQmlSA interface to find out if a binding contains a function so that
qdslintplugin can use it in a later commit.

Task-number: QTBUG-129308
Change-Id: Ic46ad6faf7a04d805084db2d9353b009e881d4dd
Reviewed-by: Ulf Hermann <[email protected]>
Reviewed-by: Fabian Kosmale <[email protected]>
Warn about bindings to functions outside of Connections or
ScriptActions.
Thats not 100% compatible with the QDS errors as we can't differentiate
between bindings to function and bindings to JS blocks, but I claim that
the end user doesn't care and that we can use the
ErrFunctionsNotSupportedInQmlUi category to cover all of these cases.

Fixes: QTBUG-129308
Change-Id: I1fbbb8b8a8e820ee64f6ad401992b1c956f01ae9
Reviewed-by: Ulf Hermann <[email protected]>
Reviewed-by: Fabian Kosmale <[email protected]>
Amends 941b36a.

pooled() and reused() signals had been integrated but the items are not
actually reused because we also need to tell the QQuickItemView that an
item can be reused when it is released.

This change was tested in Plasma Wayland, it makes scrolling wallpapers
butter smooth.

Fixes: QTBUG-101209
Pick-to: 6.9
Change-Id: Id7f99e0dc90a8fdff1f8cd137d7a52d40f8cf70f
Reviewed-by: Marco Martin <[email protected]>
Reviewed-by: Axel Spoerl <[email protected]>
Change-Id: Ie922395511e44c48bd3999142008f66f231736b1
Reviewed-by: Qt Submodule Update Bot <[email protected]>
dilekakcaay and others added 30 commits June 17, 2025 09:12
SortFilterProxyModel has been replaced with the new version as
the updated SFPM includes QML support which was not available
in the previous version.

Pick-to: 6.10
Change-Id: I9e48b96810f6f2d6f0f1557f7003b7fb274d39ca
Reviewed-by: Jan Arve Sæther <[email protected]>
Reviewed-by: Pierre-Yves Siret <[email protected]>
The documentation for e.g. Row says:

    If an item within a Row is not visible, or if it has a width or
    height of 0, the item will not be laid out and it will not be
    visible within the row.

Before this patch, the item wouldn't actually be hidden if its width
or height was zero, but just moved into a list of unpositioned items
and treated as if it was.

This patch fixes that by culling the item.

Fix and add rows to tst_qquickcontainer::zeroSize, which would
otherwise fail.

Fixes: QTBUG-132607
Pick-to: 6.8 6.9 6.10
Change-Id: I04c8a3f1ffb9e4a649024087626c4d7846ca01a0
Reviewed-by: Santhosh Kumar <[email protected]>
The _qt_internal_write_deferred_qmlls_build_ini_file function is
deferred to be called in the root CMAKE_BINARY_DIR, where
QT_CMAKE_EXPORT_NAMESPACE is not defined if find_package(Qt6) is not
called in the root of the project (like in the Qt Creator super repo).

Make sure to pass the value of QT_CMAKE_EXPORT_NAMESPACE to the
function explicitly, from a scope where it is available.

This avoids errors like:

  Error evaluating generator expression $
    No target "::qtpaths"
    CMakeLists.txt:DEFERRED

Add a test case to the RunCMake.qt_target_qml_sources test to ensure
this doesn't regress.

Amends ddcafa0
Augments 9b9a2398f30b6c35ef6be3ce929c352afb682910

Pick-to: 6.10
Fixes: QTBUG-137577
Change-Id: I5b70822576a4f26f24c37c0a866b97cb57150291
Reviewed-by: Alexey Edelev <[email protected]>
Compilation units loaded from remote files can and should be cached.
Compilation units loaded from static data should not.

Change-Id: I337cb2bc8e41e445da4762ce76de7a8388a96bc2
Reviewed-by: Fabian Kosmale <[email protected]>
tst_touchMouse::tapOnDismissiveTopMouseAreaClicksBottomOne is no longer
flaky on openSuSE 15.5.

Fixes: QTBUG-118059
Pick-to: 6.10
Change-Id: Ic1a0c89ee60336cbef677e2c065114ef38911fc7
Reviewed-by: Axel Spoerl <[email protected]>
tst_touchMouse::touchButtonOnFlickable is no longer flaky on openSUSE
leap.

Change-Id: I28d25150aabfa938507c1c2750d73cd159b7038c
Reviewed-by: Axel Spoerl <[email protected]>
Set the FramelessWindowHint flag to tst_mouseAreaInterop::createview.
Removes flakiness from
tst_mouseAreaInterop::dragHandlerInSiblingGrabFromMouseAreaViaMouse.

Pick-to: 6.10 6.9 6.8 6.5
Change-Id: I2cdbc9701a9e463bcf0a5f326df5726deb8fa093
Reviewed-by: Axel Spoerl <[email protected]>
tst_QQuickOverlay::pressedAndReleased is flaky on openSuSE where the
un-updated position of the window is used when the pressedSpy and
releasedSpy are called.

Use helper function ensurePositionTopLeft to give a fix position to
the window and verify that it has been updated.

Pick-to: 6.10 6.9
Fixes: QTBUG-134704
Change-Id: Ibec9f6f2857220d174744f80a11fc7552c1f2ece
Reviewed-by: Axel Spoerl <[email protected]>
remove more code that does nothing.

This is a preparation step for QTBUG-134308 that aims to allow multiple
QQmlCodeModels in qmlls for the multi-workspace setup.

Task-number: QTBUG-134308
Change-Id: I158dc5a920397a403479152b7d9e3fbaeb359cce
Reviewed-by: Fabian Kosmale <[email protected]>
remove more code that does nothing.

This is a preparation step for QTBUG-134308 that aims to allow multiple
QQmlCodeModels in qmlls for the multi-workspace setup.

Task-number: QTBUG-134308
Change-Id: I06d1463ab90e6bf9f79d7b37313bbe923536ebe4
Reviewed-by: Fabian Kosmale <[email protected]>
This is a preparation step for QTBUG-134308 that aims to allow multiple
QQmlCodeModels in qmlls for the multi-workspace setup.

Task-number: QTBUG-134308
Change-Id: I801317b7ae3f81cee015883c5ae027c21a90a845
Reviewed-by: Fabian Kosmale <[email protected]>
Reviewed-by: Ulf Hermann <[email protected]>
Its unique usage is after the unique addOpenToUpdate()-call.
Therefore, move it into addOpenToUpdate() and make it private.

This is a preparation step for QTBUG-134308 that aims to allow multiple
QQmlCodeModels in qmlls for the multi-workspace setup.

Task-number: QTBUG-134308
Change-Id: Ibb237055a9e58a96f3b17e47d77aae07629f7be2
Reviewed-by: Fabian Kosmale <[email protected]>
With QTBUG-134308 we might need to support multiple documentation roots,
so move the HelpEngine into QQmlCodeModel. It also seems to be a better
place for the HelpEngine as it avoids connecting a signal to update the
HelpEngine on a documentationRootPath change.

This is a preparation step for QTBUG-134308 that aims to allow multiple
QQmlCodeModels in qmlls for the multi-workspace setup.

Task-number: QTBUG-134308
Change-Id: I7d6a1c1318f89309b13f7dd506e5d5f21fb6bdee
Reviewed-by: Fabian Kosmale <[email protected]>
The qmltestrunner binary needs to be available as a CMake target, so
that a $<TARGET_FILE:...> genex can work. KDE projects use such a
genex to run their qml tests.

For Windows on ARM, when it is cross-compiled from an x86 Windows
host, we need the binary to match the target platform and arch, to be
able to run the tests.

To achieve both use cases, change the binary back from an app to
a tool to make it available as a target automatically when
calling find_package(Qt6Qml).

To ensure the binary is also cross-built for the target arch when
cross-compiling, set QT_WILL_BUILD_TOOLS and
QT_WILL_RENAME_TOOL_TARGETS to ON locally in the subdirectory.

Add an opt out not to build the target binary (by skipping the local
QT_WILL_BUILD_TOOLS assignment) if QT_NO_TARGET_QMLTESTRUNNER is set.
This won't affect regular yocto builds that set QT_FORCE_BUILD_TOOLS
to ON, so that will work as usual.

This is a temporary workaround, until we can create some kind of
QtFooAppsConfig.cmake file which would expose the binary as an app
target, rather than a tool target, like we currently do for tools.

Amends 722116b

Pick-to: 6.10
Task-number: COIN-1211
Fixes: QTBUG-137005
Change-Id: I9b5a59f5bd30c2e30e5578354515e018383f2926
Reviewed-by: Alexey Edelev <[email protected]>
QQuickFolderListModel::beginResetModel calls endResetModel
automatically to avoid consequtive calls to beginResetModel.

However, the same logic is not done for endResetModell. This
triggers a endResetModel without a preceeding beginResetModel
which (apparently) causes problems with updating the view
contents in some cases.

Fixes: QTBUG-134600
Pick-to: 6.8 6.9 6.10
Change-Id: I9fe3034b784d83ee2ed5b65bdad3a77545891bc2
Reviewed-by: Mitch Curtis <[email protected]>
Change-Id: I3988b8966e7ddd75ed31e9afce68364a0e93afde
Reviewed-by: Olivier De Cannière <[email protected]>
Since you can manually insert a new compilation unit for an existing
URL, there can in fact be multiple types active for the same URL. Since
composite types will need special handling on shutdown, we need to keep
them around.

Change-Id: Ie399a059d87fa6fb46f33a604729f2f2f69a2e9e
Reviewed-by: Sami Shalayel <[email protected]>
Without this, freeUnusedTypesAndCaches() could drop dependencies of a
live ECMAScript module. This would be unfortunate. Since ECMAScript
modules can form cycles, we now need to clear the dependent scripts
separately before clearing the compilation units.

The downside of this is that actually cyclic ECMAScript modules cannot
be cleared at all without clearing the whole type registry. However,
this situation should be rare.

Change-Id: Ib2d523f7c291bb5c472b6603bd947c3977b77b85
Reviewed-by: Sami Shalayel <[email protected]>
A reader which can't read anything does not make sense. Moreover, the
class is meant to be used once and then discarded; copying or moving it
would not yield anything sensible either.

Change-Id: I9ae43bd0ac97d44f3d7b9681554e97f6c5ac52b3
Reviewed-by: Sami Shalayel <[email protected]>
Change-Id: I267b596354d6e497f619015127e0be8f9dfa947f
Reviewed-by: Qt Submodule Update Bot <[email protected]>
We want the type loader to do this job rather than poorly duplicate it
in the test. In particular, the local implementation didn't properly
register the dependencies of loaded ECMAScript modules.

So far we could only load ECMAScript modules using the type loader if
their file names ended it ".mjs". The ECMAScript test suite does not
follow this convention. In order to deal with that, we need to add a
second characteristic. ECMAScript modules can now also be marked using a
URL fragment "#module". Furthermore, since JavaScript files loaded
outside any QML document get full access to the global context, we
introduce another URL fragment "#global" to discern them from the same
files loaded from a QML document.

Change-Id: I625088335d16d5b8eeaa2673f07718367dca1605
Reviewed-by: Sami Shalayel <[email protected]>
Invent a new URL fragment "include" for this. We need to make sure the
included JS code inherits the context.

We want to get rid of the local file loading in qv4engine.cpp since it
undermines network transparency. Qt.include therefore has to use the
type loader. For remote files it so far used a hand-rolled network
loading machinery which duplicated the type loader code. By using the
type loader right away, this becomes unnecessary.

Change-Id: Iae5c1ad764b98b101c1d90dbb78e46d3950541aa
Reviewed-by: Sami Shalayel <[email protected]>
It isn't used anymore and it was bad since it unconditionally loaded
from a local file, subverting the network transparency.

Change-Id: I3c8d045b03a5250eb390731b9d8a8df6f74586a0
Reviewed-by: Fabian Kosmale <[email protected]>
Show how to use it in a more useful way.

Pick-to: 6.5 6.8 6.9 6.10
Change-Id: Id7c1850007d2cb752b8ae4ad0f3cf01e04e322bd
Reviewed-by: Andreas Eliasson <[email protected]>
We need to get rid of the local file loading. Also, sort the includes of
qjsengine.cpp.

Change-Id: I62629e21ababb9aadc2b146a75cda712d26cffa3
Reviewed-by: Sami Shalayel <[email protected]>
We need to get rid of it. Use the type loader instead.

Change-Id: I63be8eab38401feed4e6461b03804e8335f41899
Reviewed-by: Fabian Kosmale <[email protected]>
Reviewed-by: Sami Shalayel <[email protected]>
The type loader should make sure that they are available. Prove that by
wrapping all access to dependencies into an accessor that checks the
dependent scripts.

Change-Id: I6e0153fcb213e1a5b6ece79e3fbc0e27dc1b292c
Reviewed-by: Sami Shalayel <[email protected]>
Scripts (including modules) shall be loaded via QQmlTypeLoader, to
preserve network transparency. Since the last users of loadModule() and
friends have been removed, we can now drop the relevant code.

Task-number: QTBUG-19407
Change-Id: I8d5aa177266d376fb77f5b61f94ab1277b4c64c4
Reviewed-by: Sami Shalayel <[email protected]>
As mentioned in the comment, we cannot rely on the type registry for
property caches of inline components. So, whatever we find there is
necessarily outdated. Check the compilation unit's inline components
first to avoid this situation.

Pick-to: 6.10 6.9 6.8
Fixes: QTBUG-137115
Change-Id: I708435823428fd9f1cdae4b5bffda36d51ab1982
Reviewed-by: Fabian Kosmale <[email protected]>
Remove some unused code and allow it to run without QProcess. We can use
threads after all. Also, activate the "filter" mode via an environment
variable. Running only a subset of the tests is very handy at times.

Most of the dead code was supposed to be used with the qjstest
executable from d9c4a52, but
d08ede5 removed qjstest in favor of
using tst_ecmascripttests itself for all ways of running the tests.

Change-Id: I0d220964a98c3f49e97fc6650cf3169db5644af5
Reviewed-by: Sami Shalayel <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.