qmllint: Don't leak the QQmlJSTypeInfo object

We want it to be mutable even where Codegen itself is const. Therefore,
it needs to live outside Codegen.

Change-Id: Ie4997118a1fdf8d60bd5670baa506ed0bfb98bad
Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io>
This commit is contained in:
Ulf Hermann 2021-09-30 11:39:23 +02:00
parent 43eca45b06
commit 6b33e7cff3
3 changed files with 6 additions and 4 deletions

View File

@ -34,14 +34,15 @@
#include <QFileInfo>
Codegen::Codegen(QQmlJSImporter *importer, const QString &fileName,
const QStringList &qmltypesFiles, QQmlJSLogger *logger, const QString &code)
const QStringList &qmltypesFiles, QQmlJSLogger *logger, QQmlJSTypeInfo *typeInfo,
const QString &code)
: m_fileName(fileName),
m_qmltypesFiles(qmltypesFiles),
m_importer(importer),
m_logger(logger),
m_typeInfo(typeInfo),
m_code(code)
{
m_typeInfo = new QQmlJSTypeInfo;
}
void Codegen::setDocument(QmlIR::JSCodeGen *codegen, QmlIR::Document *document)

View File

@ -57,7 +57,7 @@ class Codegen : public QQmlJSAotCompiler
{
public:
Codegen(QQmlJSImporter *importer, const QString &fileName, const QStringList &qmltypesFiles,
QQmlJSLogger *logger, const QString &m_code);
QQmlJSLogger *logger, QQmlJSTypeInfo *typeInfo, const QString &m_code);
void setDocument(QmlIR::JSCodeGen *codegen, QmlIR::Document *document) override;
void setScope(const QmlIR::Object *object, const QmlIR::Object *scope) override;

View File

@ -185,7 +185,8 @@ static bool lint_file(const QString &filename, const bool silent, QJsonArray *js
parser.rootNode()->accept(&v);
success = v.check();
Codegen codegen { &importer, filename, qmltypesFiles, &logger, code };
QQmlJSTypeInfo typeInfo;
Codegen codegen { &importer, filename, qmltypesFiles, &logger, &typeInfo, code };
QQmlJSSaveFunction saveFunction = [](const QV4::CompiledData::SaveableUnitPointer &,
const QQmlJSAotFunctionMap &,
QString *) { return true; };