aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/qmlcompiler/qqmljslinter.cpp5
-rw-r--r--src/qmlcompiler/qqmljslintercodegen.cpp7
-rw-r--r--src/qmlcompiler/qqmljslintercodegen_p.h2
3 files changed, 12 insertions, 2 deletions
diff --git a/src/qmlcompiler/qqmljslinter.cpp b/src/qmlcompiler/qqmljslinter.cpp
index b5744b0c3d..b78bc6f26b 100644
--- a/src/qmlcompiler/qqmljslinter.cpp
+++ b/src/qmlcompiler/qqmljslinter.cpp
@@ -586,8 +586,11 @@ QQmlJSLinter::LintResult QQmlJSLinter::lintFile(const QString &filename,
QQmlJSLinterCodegen codegen { &m_importer, resolvedPath, qmldirFiles, m_logger.get() };
codegen.setTypeResolver(std::move(typeResolver));
- if (passMan)
+ if (passMan) {
+ // passMan now has a pointer to the moved from type resolver
+ // we fix this in setPassManager
codegen.setPassManager(passMan.get());
+ }
QQmlJSSaveFunction saveFunction = [](const QV4::CompiledData::SaveableUnitPointer &,
const QQmlJSAotFunctionMap &,
QString *) { return true; };
diff --git a/src/qmlcompiler/qqmljslintercodegen.cpp b/src/qmlcompiler/qqmljslintercodegen.cpp
index 60fc9cb5ad..314c2087e4 100644
--- a/src/qmlcompiler/qqmljslintercodegen.cpp
+++ b/src/qmlcompiler/qqmljslintercodegen.cpp
@@ -79,6 +79,13 @@ QQmlJSLinterCodegen::compileFunction(const QV4::Compiler::Context *context,
return QQmlJSAotFunction {};
}
+void QQmlJSLinterCodegen::setPassManager(QQmlSA::PassManager *passManager)
+{
+ m_passManager = passManager;
+ auto managerPriv = QQmlSA::PassManagerPrivate::get(passManager);
+ managerPriv->m_typeResolver = typeResolver();
+}
+
bool QQmlJSLinterCodegen::analyzeFunction(const QV4::Compiler::Context *context,
QQmlJSCompilePass::Function *function,
QQmlJS::DiagnosticMessage *error)
diff --git a/src/qmlcompiler/qqmljslintercodegen_p.h b/src/qmlcompiler/qqmljslintercodegen_p.h
index 5cddbea704..8c9f601166 100644
--- a/src/qmlcompiler/qqmljslintercodegen_p.h
+++ b/src/qmlcompiler/qqmljslintercodegen_p.h
@@ -56,7 +56,7 @@ public:
QQmlJSTypeResolver *typeResolver() { return &m_typeResolver; }
- void setPassManager(QQmlSA::PassManager *passManager) { m_passManager = passManager; }
+ void setPassManager(QQmlSA::PassManager *passManager);
QQmlSA::PassManager *passManager() { return m_passManager; }