aboutsummaryrefslogtreecommitdiffstats
path: root/tools/qmllint/findwarnings.h
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2020-09-29 15:49:16 +0200
committerUlf Hermann <ulf.hermann@qt.io>2020-10-02 15:32:15 +0200
commit48426aa705cb7ed88489200864c2fc0143058671 (patch)
tree964b8588157dc122f7cf744ca8501ca4276dbeba /tools/qmllint/findwarnings.h
parentfebb6ba891616b71476b736d4c583054685c7766 (diff)
Move the import handling code out of qmllint
We want to re-use this logic in other places. Change-Id: I63cbee86a83265ddd241a4fae9ce8c48f38b5f18 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'tools/qmllint/findwarnings.h')
-rw-r--r--tools/qmllint/findwarnings.h66
1 files changed, 3 insertions, 63 deletions
diff --git a/tools/qmllint/findwarnings.h b/tools/qmllint/findwarnings.h
index 2a0929b379..a8673d54e8 100644
--- a/tools/qmllint/findwarnings.h
+++ b/tools/qmllint/findwarnings.h
@@ -42,6 +42,7 @@
#include "typedescriptionreader.h"
#include "scopetree.h"
#include "qcoloroutput.h"
+#include "qmljsimporter.h"
#include <QtQml/private/qqmldirparser_p.h>
#include <QtQml/private/qqmljsastvisitor_p.h>
@@ -53,18 +54,6 @@ class FindWarningVisitor : public QQmlJS::AST::Visitor
{
Q_DISABLE_COPY_MOVE(FindWarningVisitor)
public:
- struct ImportedTypes
- {
- // C++ names used in qmltypes files for non-composite types
- QHash<QString, ScopeTree::Ptr> cppNames;
-
- // Names a component intends to export, without prefix
- QHash<QString, ScopeTree::Ptr> exportedQmlNames;
-
- // Names the importing component sees, possibly adding a prefix
- QHash<QString, ScopeTree::Ptr> importedQmlNames;
- };
-
explicit FindWarningVisitor(
QStringList qmltypeDirs, QStringList qmltypesFiles, QString code, QString fileName,
bool silent, bool warnUnqualified, bool warnWithStatement, bool warnInheritanceCycle);
@@ -72,56 +61,7 @@ public:
bool check();
private:
- class Importer
- {
- public:
- Importer(const QString &currentDir, const QStringList &importPaths) :
- m_currentDir(currentDir), m_importPaths(importPaths) {}
-
- ImportedTypes importBareQmlTypes(const QStringList &qmltypesFiles);
- ImportedTypes importFileOrDirectory(
- const QString &fileOrDirectory, const QString &prefix = QString());
- ImportedTypes importModule(
- const QString &module, const QString &prefix = QString(),
- QTypeRevision version = QTypeRevision());
-
- QStringList takeWarnings()
- {
- QStringList result = std::move(m_warnings);
- m_warnings.clear();
- return result;
- }
-
- private:
- struct Import {
- QHash<QString, ScopeTree::Ptr> objects;
- QHash<QString, ScopeTree::Ptr> scripts;
- QList<QQmlDirParser::Import> imports;
- QList<QQmlDirParser::Import> dependencies;
- };
-
- void importHelper(const QString &module, ImportedTypes *types,
- const QString &prefix = QString(),
- QTypeRevision version = QTypeRevision());
- void processImport(const Import &import, ImportedTypes *types,
- const QString &prefix = QString());
- void importDependencies(const FindWarningVisitor::Importer::Import &import,
- FindWarningVisitor::ImportedTypes *types,
- const QString &prefix = QString(),
- QTypeRevision version = QTypeRevision());
- void readQmltypes(const QString &filename, QHash<QString, ScopeTree::Ptr> *objects);
- Import readQmldir(const QString &dirname);
- ScopeTree::Ptr localFile2ScopeTree(const QString &filePath);
-
- QString m_currentDir;
- QStringList m_importPaths;
- QHash<QPair<QString, QTypeRevision>, Import> m_seenImports;
- QHash<QString, ScopeTree::Ptr> m_importedFiles;
- QStringList m_warnings;
-
- };
-
- ImportedTypes m_rootScopeImports;
+ QmlJSImporter::ImportedTypes m_rootScopeImports;
ScopeTree::Ptr m_rootScope;
ScopeTree::Ptr m_currentScope;
@@ -148,7 +88,7 @@ private:
QVarLengthArray<OutstandingConnection, 3> m_outstandingConnections; // Connections whose target we have not encountered
- Importer m_importer;
+ QmlJSImporter m_importer;
void enterEnvironment(ScopeType type, const QString &name);
void leaveEnvironment();