aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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()