aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/qmlcompiler/qqmljsimporter.cpp20
-rw-r--r--src/qmlcompiler/qqmljsimporter_p.h6
-rw-r--r--tools/qmllint/findwarnings.cpp15
3 files changed, 22 insertions, 19 deletions
diff --git a/src/qmlcompiler/qqmljsimporter.cpp b/src/qmlcompiler/qqmljsimporter.cpp
index 5caccd36cb..3a8507aa67 100644
--- a/src/qmlcompiler/qqmljsimporter.cpp
+++ b/src/qmlcompiler/qqmljsimporter.cpp
@@ -264,22 +264,18 @@ QQmlJSScope::Ptr QQmlJSImporter::localFile2ScopeTree(const QString &filePath)
return result;
}
-QQmlJSImporter::ImportedTypes QQmlJSImporter::importFileOrDirectory(
- const QString &fileOrDirectory, const QString &prefix)
+QQmlJSScope::Ptr QQmlJSImporter::importFile(const QString &file)
{
- AvailableTypes result;
-
- QString name = fileOrDirectory;
+ return localFile2ScopeTree(file);
+}
- QFileInfo fileInfo(name);
- if (fileInfo.isFile()) {
- QQmlJSScope::Ptr scope(localFile2ScopeTree(fileInfo.canonicalFilePath()));
- result.qmlNames.insert(prefix.isEmpty() ? scope->internalName() : prefix, scope);
- return result.qmlNames;
- }
+QQmlJSImporter::ImportedTypes QQmlJSImporter::importDirectory(
+ const QString &directory, const QString &prefix)
+{
+ AvailableTypes result;
QDirIterator it {
- fileInfo.canonicalFilePath(),
+ directory,
QStringList() << QLatin1String("*.qml"),
QDir::NoFilter
};
diff --git a/src/qmlcompiler/qqmljsimporter_p.h b/src/qmlcompiler/qqmljsimporter_p.h
index 43bc0296b8..245964a339 100644
--- a/src/qmlcompiler/qqmljsimporter_p.h
+++ b/src/qmlcompiler/qqmljsimporter_p.h
@@ -53,8 +53,10 @@ public:
ImportedTypes importBuiltins();
ImportedTypes importQmltypes(const QStringList &qmltypesFiles);
- ImportedTypes importFileOrDirectory(
- const QString &fileOrDirectory, const QString &prefix = QString());
+
+ QQmlJSScope::Ptr importFile(const QString &file);
+ ImportedTypes importDirectory(const QString &directory, const QString &prefix = QString());
+
ImportedTypes importModule(
const QString &module, const QString &prefix = QString(),
QTypeRevision version = QTypeRevision());
diff --git a/tools/qmllint/findwarnings.cpp b/tools/qmllint/findwarnings.cpp
index 17d3588123..d601b3e910 100644
--- a/tools/qmllint/findwarnings.cpp
+++ b/tools/qmllint/findwarnings.cpp
@@ -137,7 +137,7 @@ bool FindWarningVisitor::visit(QQmlJS::AST::UiProgram *)
// using an empty QQmlJSScope
m_rootScopeImports.insert(QFileInfo { m_filePath }.baseName(), {});
- const auto imported = m_importer.importFileOrDirectory(QFileInfo(m_filePath).path());
+ const auto imported = m_importer.importDirectory(QFileInfo(m_filePath).canonicalPath());
m_rootScopeImports.insert(imported);
const QStringList warnings = m_importer.takeWarnings();
@@ -539,10 +539,15 @@ bool FindWarningVisitor::visit(QQmlJS::AST::UiImport *import)
auto filename = import->fileName.toString();
if (!filename.isEmpty()) {
const QFileInfo file(filename);
- const auto imported = m_importer.importFileOrDirectory(
- file.isRelative() ? QFileInfo(m_filePath).dir().filePath(filename) : filename,
- prefix);
- m_rootScopeImports.insert(imported);
+ const QFileInfo path(file.isRelative() ? QFileInfo(m_filePath).dir().filePath(filename)
+ : filename);
+ if (path.isDir()) {
+ m_rootScopeImports.insert(m_importer.importDirectory(path.canonicalFilePath(), prefix));
+ } else if (path.isFile()) {
+ const auto scope = m_importer.importFile(path.canonicalFilePath());
+ m_rootScopeImports.insert(prefix.isEmpty() ? scope->internalName() : prefix, scope);
+ }
+
}
QString path {};