1// Copyright (C) 2021 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3
4#ifndef QMLTCTYPERESOLVER_H
5#define QMLTCTYPERESOLVER_H
6
7#include "qmltcvisitor.h"
8
9#include <QtQml/private/qqmlirbuilder_p.h>
10#include <private/qqmljstyperesolver_p.h>
11#include <private/qqmljsimporter_p.h>
12#include <private/qqmljslogger_p.h>
13
14QT_BEGIN_NAMESPACE
15
16class QmltcTypeResolver : public QQmlJSTypeResolver
17{
18public:
19 QmltcTypeResolver(QQmlJSImporter *importer) : QQmlJSTypeResolver(importer), m_importer(importer)
20 {
21 Q_ASSERT(importer);
22 }
23
24 void init(QmltcVisitor *visitor, QQmlJS::AST::Node *program);
25
26 QQmlJSScope::Ptr scopeForLocation(const QV4::CompiledData::Location &location) const;
27
28 // returns an import pair {url, modifiable type} for a given \a type
29 QPair<QString, QQmlJSScope::Ptr> importedType(const QQmlJSScope::ConstPtr &type) const;
30
31private:
32 QQmlJSImporter *m_importer = nullptr;
33
34 QHash<QV4::CompiledData::Location, QQmlJSScope::Ptr> m_objectsByLocationNonConst;
35 QQmlJSScope::Ptr m_root;
36};
37
38QT_END_NAMESPACE
39
40#endif // QMLTCTYPERESOLVER_H
41

source code of qtdeclarative/tools/qmltc/qmltctyperesolver.h