diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2020-09-29 16:55:15 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2020-10-02 15:32:29 +0200 |
commit | ccd348d4b7423a23b2326c2f42c74719083248ba (patch) | |
tree | c42d114cac3824de9f3a0de9a1df0ee0e7c39a19 /tools/qmllint/findwarnings.cpp | |
parent | 4bb53fd1086e5e67391c7bd328ab5083ed83be68 (diff) |
qmllint: Uncruftify the importing of base qmltypes
builtins.qmltypes are imported separately now. Any other bare qmltypes
files without qmldir should be specified explicitly. If none are
specified, qmllint looks in the current directory for qmltypes files,
not in all possible import paths. This is still somewhat weird, but
admittedly it's handy for qmltypes files generated for application
binaries. For the same reason, we unconditionally include the current
directory in the list of default import paths. Previously this was done
if no explicit qmltypes files were specified, which makes little sense.
Change-Id: Iaa56f8b40b3ec3045f55928251d7efea5616d23b
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'tools/qmllint/findwarnings.cpp')
-rw-r--r-- | tools/qmllint/findwarnings.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/tools/qmllint/findwarnings.cpp b/tools/qmllint/findwarnings.cpp index a11abbf002..742c1a8d35 100644 --- a/tools/qmllint/findwarnings.cpp +++ b/tools/qmllint/findwarnings.cpp @@ -113,7 +113,13 @@ void FindWarningVisitor::throwRecursionDepthError() bool FindWarningVisitor::visit(QQmlJS::AST::UiProgram *) { enterEnvironment(ScopeType::QMLScope, "program"); - m_rootScopeImports = m_importer.importBaseQmlTypes(m_qmltypesFiles); + m_rootScopeImports = m_importer.importBuiltins(); + + if (!m_qmltypesFiles.isEmpty()) { + const auto baseTypes = m_importer.importQmltypes(m_qmltypesFiles); + m_rootScopeImports.importedQmlNames.insert(baseTypes.importedQmlNames); + m_rootScopeImports.cppNames.insert(baseTypes.cppNames); + } // add "self" (as we only ever check the first part of a qualified identifier, we get away with // using an empty ScopeTree @@ -339,7 +345,7 @@ bool FindWarningVisitor::visit(QQmlJS::AST::IdentifierExpression *idexp) } FindWarningVisitor::FindWarningVisitor( - QStringList qmltypeDirs, QStringList qmltypesFiles, QString code, QString fileName, + QStringList qmlImportPaths, QStringList qmltypesFiles, QString code, QString fileName, bool silent, bool warnUnqualified, bool warnWithStatement, bool warnInheritanceCycle) : m_rootScope(ScopeTree::create(ScopeType::JSFunctionScope)), m_qmltypesFiles(std::move(qmltypesFiles)), @@ -350,7 +356,7 @@ FindWarningVisitor::FindWarningVisitor( m_warnUnqualified(warnUnqualified), m_warnWithStatement(warnWithStatement), m_warnInheritanceCycle(warnInheritanceCycle), - m_importer(qmltypeDirs) + m_importer(qmlImportPaths) { m_rootScope->setInternalName("global"); m_currentScope = m_rootScope; |