diff options
| author | Sami Shalayel <sami.shalayel@qt.io> | 2026-09-25 14:41:45 +0200 |
|---|---|---|
| committer | Sami Shalayel <sami.shalayel@qt.io> | 2026-09-30 16:03:57 +0000 |
| commit | dfcc4a0885fbd046010d33a243c7f6155eefbf28 (patch) | |
| tree | 5d2cb00476c51b69828f2566a1f59bc8b55c6856 | |
| parent | 49649c3ff1371362010a21076ee76a5a3c50a30d (diff) | |
QQmlJSUtils: find build paths of renamed files
Follow the alias in the qrc to also find renamed files.
Fixes: QTBUG-150919
Pick-to: 6.12 6.11
Change-Id: I7e8da3beefeefe732c2ad92b74a58e88d794777e
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
5 files changed, 27 insertions, 3 deletions
diff --git a/src/qmlcompiler/qqmljsutils.cpp b/src/qmlcompiler/qqmljsutils.cpp index dcd18560e5..7fc31e9524 100644 --- a/src/qmlcompiler/qqmljsutils.cpp +++ b/src/qmlcompiler/qqmljsutils.cpp @@ -359,9 +359,7 @@ QString qmlBuildPathFromSourcePath(const QQmlJSResourceFileMapper *mapper, if (!moduleBuildEntry.isValid()) continue; - const auto qrcFolderPath = qrcPath.first(qrcPath.lastIndexOf(u'/')); - return moduleBuildEntry.filePath + qrcFolderPath.sliced(moduleBuildEntry.resourcePath.size()) - + pathInSourceFolder.sliced(pathInSourceFolder.lastIndexOf(u'/')); + return moduleBuildEntry.filePath + qrcPath.sliced(moduleBuildEntry.resourcePath.size()); } return pathInSourceFolder; diff --git a/tests/auto/qml/qqmljsutils/data/mymodule-build-renamed-in-rcc/.qt/rcc/app_raw_qml_0.qrc b/tests/auto/qml/qqmljsutils/data/mymodule-build-renamed-in-rcc/.qt/rcc/app_raw_qml_0.qrc new file mode 100644 index 0000000000..23e5b161a1 --- /dev/null +++ b/tests/auto/qml/qqmljsutils/data/mymodule-build-renamed-in-rcc/.qt/rcc/app_raw_qml_0.qrc @@ -0,0 +1,6 @@ +<RCC> + <qresource prefix="/qt/qml/MyModule/"> + <file alias="Renamed.qml">../../../mymodule-source/MyModule/Main.qml</file> + <file alias="X/Y/Z/RenamedComponent.qml">../../../mymodule-source/MyModule/X/Y/Z/MyComponent.qml</file> + </qresource> +</RCC> diff --git a/tests/auto/qml/qqmljsutils/data/mymodule-build-renamed-in-rcc/.qt/rcc/qmake_app.qrc b/tests/auto/qml/qqmljsutils/data/mymodule-build-renamed-in-rcc/.qt/rcc/qmake_app.qrc new file mode 100644 index 0000000000..22e7a3356d --- /dev/null +++ b/tests/auto/qml/qqmljsutils/data/mymodule-build-renamed-in-rcc/.qt/rcc/qmake_app.qrc @@ -0,0 +1,5 @@ +<RCC> + <qresource prefix="/qt/qml/MyModule"> + <file alias="qmldir">../../MyModule/qmldir</file> + </qresource> +</RCC> diff --git a/tests/auto/qml/qqmljsutils/data/mymodule-build-renamed-in-rcc/MyModule/qmldir b/tests/auto/qml/qqmljsutils/data/mymodule-build-renamed-in-rcc/MyModule/qmldir new file mode 100644 index 0000000000..4660971aa3 --- /dev/null +++ b/tests/auto/qml/qqmljsutils/data/mymodule-build-renamed-in-rcc/MyModule/qmldir @@ -0,0 +1,4 @@ +module MyModule +prefer :/qt/qml/MyModule/ +Main 254.0 Renamed.qml +MyComponent 254.0 X/Y/Z/RenamedComponent.qml diff --git a/tests/auto/qml/qqmljsutils/tst_qqmljsutils.cpp b/tests/auto/qml/qqmljsutils/tst_qqmljsutils.cpp index d5e986c611..c258f52a53 100644 --- a/tests/auto/qml/qqmljsutils/tst_qqmljsutils.cpp +++ b/tests/auto/qml/qqmljsutils/tst_qqmljsutils.cpp @@ -31,6 +31,17 @@ void tst_qqmljsutils::qmlFileSourcePathFromBuildPath_data() << testFile(u"mymodule-build-without-qmldir-prefer"_s) << testFile(u"mymodule-build-without-qmldir-prefer/MyModule/X/Y/Z/MyComponent.qml"_s) << testFile(u"mymodule-source/MyModule/X/Y/Z/MyComponent.qml"_s); + + // The alias in the qrc may rename the file: the build path has to follow the alias instead of + // reusing the file name of the source file. + QTest::addRow("RenamedInRcc") + << testFile(u"mymodule-build-renamed-in-rcc"_s) + << testFile(u"mymodule-build-renamed-in-rcc/MyModule/Renamed.qml"_s) + << testFile(u"mymodule-source/MyModule/Main.qml"_s); + QTest::addRow("NestedRenamedInRcc") + << testFile(u"mymodule-build-renamed-in-rcc"_s) + << testFile(u"mymodule-build-renamed-in-rcc/MyModule/X/Y/Z/RenamedComponent.qml"_s) + << testFile(u"mymodule-source/MyModule/X/Y/Z/MyComponent.qml"_s); } void tst_qqmljsutils::qmlFileSourcePathFromBuildPath() |
