diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/qmlcompiler/qqmljslinter.cpp | 5 | ||||
| -rw-r--r-- | src/qmlcompiler/qqmljslintercodegen.cpp | 7 | ||||
| -rw-r--r-- | src/qmlcompiler/qqmljslintercodegen_p.h | 2 |
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; } |
