aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSami Shalayel <sami.shalayel@qt.io>2026-09-25 14:41:45 +0200
committerSami Shalayel <sami.shalayel@qt.io>2026-09-30 16:03:57 +0000
commitdfcc4a0885fbd046010d33a243c7f6155eefbf28 (patch)
tree5d2cb00476c51b69828f2566a1f59bc8b55c6856
parent49649c3ff1371362010a21076ee76a5a3c50a30d (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>
-rw-r--r--src/qmlcompiler/qqmljsutils.cpp4
-rw-r--r--tests/auto/qml/qqmljsutils/data/mymodule-build-renamed-in-rcc/.qt/rcc/app_raw_qml_0.qrc6
-rw-r--r--tests/auto/qml/qqmljsutils/data/mymodule-build-renamed-in-rcc/.qt/rcc/qmake_app.qrc5
-rw-r--r--tests/auto/qml/qqmljsutils/data/mymodule-build-renamed-in-rcc/MyModule/qmldir4
-rw-r--r--tests/auto/qml/qqmljsutils/tst_qqmljsutils.cpp11
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()