diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2020-09-25 16:14:53 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2020-09-28 13:26:52 +0200 |
commit | 4cd06638c198c7ed48680c63e9df943e3680e89e (patch) | |
tree | 1c4213b905d02646dbbd0c4ec006791b30aeac20 /tools/qmllint/findwarnings.h | |
parent | 9e2f4e112776149be550dbea6003a192cd931538 (diff) |
qmllint: Make imports local
Imports are not transitive. qmllint gets this wrong so far. Fixing it
reveals two tests where we use types we haven't imported. Import the
relevant modules.
Change-Id: I45f3229468d54137f97d6b699f3a98a1349bc412
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'tools/qmllint/findwarnings.h')
-rw-r--r-- | tools/qmllint/findwarnings.h | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/tools/qmllint/findwarnings.h b/tools/qmllint/findwarnings.h index cc56f628ee..2a0929b379 100644 --- a/tools/qmllint/findwarnings.h +++ b/tools/qmllint/findwarnings.h @@ -100,19 +100,25 @@ private: QList<QQmlDirParser::Import> dependencies; }; - void importHelper(const QString &module, const QString &prefix = QString(), + void importHelper(const QString &module, ImportedTypes *types, + const QString &prefix = QString(), QTypeRevision version = QTypeRevision()); - void processImport(const QString &prefix, const Import &import, QTypeRevision version); + 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; - QSet<QPair<QString, QString>> m_seenImports; + QHash<QPair<QString, QTypeRevision>, Import> m_seenImports; + QHash<QString, ScopeTree::Ptr> m_importedFiles; QStringList m_warnings; - ImportedTypes m_exportedName2Scope; }; ImportedTypes m_rootScopeImports; @@ -147,7 +153,7 @@ private: void enterEnvironment(ScopeType type, const QString &name); void leaveEnvironment(); - void importExportedNames(QStringView prefix, QString name); + void importExportedNames(ScopeTree::ConstPtr scope); void parseHeaders(QQmlJS::AST::UiHeaderItemList *headers); ScopeTree::Ptr parseProgram(QQmlJS::AST::Program *program, const QString &name); |