aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/qmljs/qmljsutils.cpp
diff options
context:
space:
mode:
authorChristian Stenger <[email protected]>2021-01-11 14:09:51 +0100
committerChristian Stenger <[email protected]>2021-01-21 13:47:45 +0000
commit6ea088c02f9b0c61a8e9df1472b0ddfe544eb601 (patch)
treeabd63dd75155c225e52d5dea1209ca37bf887c57 /src/libs/qmljs/qmljsutils.cpp
parent7dc72c533e4bba81ea3126d8cb98840ca746f786 (diff)
QmlJS: Fix handling multiple import paths into same module
It is possible to import components of different paths to fill a module. Take further paths into account when looking up types. Fixes: QTCREATORBUG-24405 Change-Id: I8d6bf0a324ea9c0d1fe9d91b40857f91f00dd662 Reviewed-by: Ulf Hermann <[email protected]> Reviewed-by: Fawzi Mohamed <[email protected]>
Diffstat (limited to 'src/libs/qmljs/qmljsutils.cpp')
-rw-r--r--src/libs/qmljs/qmljsutils.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/libs/qmljs/qmljsutils.cpp b/src/libs/qmljs/qmljsutils.cpp
index 4549bcbdfed..03136e40642 100644
--- a/src/libs/qmljs/qmljsutils.cpp
+++ b/src/libs/qmljs/qmljsutils.cpp
@@ -233,12 +233,12 @@ bool QmlJS::maybeModuleVersion(const QString &version) {
* \return The module paths if found, an empty string otherwise
* \see qmlimportscanner in qtdeclarative/tools
*/
-QString QmlJS::modulePath(const QString &name, const QString &version,
- const QStringList &importPaths)
+QStringList QmlJS::modulePaths(const QString &name, const QString &version,
+ const QStringList &importPaths)
{
Q_ASSERT(maybeModuleVersion(version));
if (importPaths.isEmpty())
- return QString();
+ return {};
const QString sanitizedVersion = version == undefinedVersion ? QString() : version;
const QStringList parts = name.split('.', Qt::SkipEmptyParts);
@@ -249,6 +249,7 @@ QString QmlJS::modulePath(const QString &name, const QString &version,
// sanitized version.
const QRegularExpression re("\\.?\\d+$");
+ QStringList result;
QString candidate;
for (QString ver = sanitizedVersion; !ver.isEmpty(); ver.remove(re)) {
@@ -260,7 +261,7 @@ QString QmlJS::modulePath(const QString &name, const QString &version,
ver,
mkpath(parts.mid(i + 1))));
if (QDir(candidate).exists())
- return candidate;
+ result << candidate;
}
}
}
@@ -269,10 +270,10 @@ QString QmlJS::modulePath(const QString &name, const QString &version,
for (const QString &path: importPaths) {
candidate = QDir::cleanPath(QString::fromLatin1("%1/%2").arg(path, mkpath(parts)));
if (QDir(candidate).exists())
- return candidate;
+ result << candidate;
}
- return QString();
+ return result;
}
bool QmlJS::isValidBuiltinPropertyType(const QString &name)