5#ifndef QQMLJSLINTERTYPEPROPAGATOR_P_H
6#define QQMLJSLINTERTYPEPROPAGATOR_P_H
18#include <private/qduplicatetracker_p.h>
19#include <private/qqmljstypepropagator_p.h>
20#include <private/qqmljscontextproperties_p.h>
21#include <private/qqmljsusercontextproperties_p.h>
22#include <private/qqmljslinterrenamedcomponents_p.h>
26struct ContextPropertyInfo
28 QQmlJS::HeuristicContextProperties heuristicContextProperties;
29 QQmlJS::UserContextProperties userContextProperties;
37 QQmlJSLinterTypePropagator(
const QV4::Compiler::JSUnitGenerator *unitGenerator,
38 const QQmlJSTypeResolver *typeResolver, QQmlJSLogger *logger,
39 const BasicBlocks &basicBlocks = {},
40 const InstructionAnnotations &annotations = {},
41 QQmlSA::PassManager *passManager =
nullptr,
42 const ContextPropertyInfo &contextPropertyInfo = {});
46 m_scopesById = scopesById;
51 m_idMemberShadows = idMemberShadows;
56 m_renamedComponents = renamedComponents;
60 m_knownUnresolvedTypes = knownUnresolvedTypes;
74 void checkDeprecated(QQmlJSScope::ConstPtr scope,
const QString &name,
bool isMethod)
const override;
75 bool isCallingProperty(QQmlJSScope::ConstPtr scope,
const QString &name)
const override;
82 void propagateCall(
const QList<QQmlJSMetaMethod> &methods,
int argc,
int argv,
83 QQmlJSRegisterContent scope)
override;
87 bool checkTypeResolved(
const QQmlJSScope::ConstPtr &type);
89 QQmlSA::PassManager *m_passManager =
nullptr;
90 ContextPropertyInfo m_contextPropertyInfo;
91 QQmlJSScopesById m_scopesById;
92 QSet<IdMemberShadow> *m_idMemberShadows =
nullptr;
93 const QQmlJS::LinterRenamedComponents *m_renamedComponents =
nullptr;
94 QDuplicateTracker<QQmlJSScope::ConstPtr> *m_knownUnresolvedTypes =
nullptr;
void setDocument(const QmlIR::JSCodeGen *codegen, const QmlIR::Document *document) override
void setPassManager(QQmlSA::PassManager *passManager)
void propagateCall(const QList< QQmlJSMetaMethod > &methods, int argc, int argv, QQmlJSRegisterContent scope) override
void handleUnqualifiedAccess(const QString &name, bool isMethod) const override
void generate_CallProperty(int nameIndex, int base, int argc, int argv) override
void setRenamedComponents(const QQmlJS::LinterRenamedComponents *renamedComponents)
bool isCallingProperty(QQmlJSScope::ConstPtr scope, const QString &name) const override
void setIdMemberShadows(QSet< IdMemberShadow > *idMemberShadows)
void generate_CallPossiblyDirectEval(int argc, int argv) override
void generate_LoadQmlContextPropertyLookup(int index) override
void setScopesById(const QQmlJSScopesById &scopesById)
void generate_StoreNameCommon(int nameIndex) override
void generate_Ret() override
void handleUnqualifiedAccessAndContextProperties(const QString &name, bool isMethod) const override
void generate_GetOptionalLookup(int index, int offset) override
bool checkForEnumProblems(QQmlJSRegisterContent base, const QString &propertyName) override
void setKnownUnresolvedTypes(QDuplicateTracker< QQmlJSScope::ConstPtr > *knownUnresolvedTypes)
void generate_StoreProperty(int nameIndex, int base) override
void warnAboutTypeCoercion(int lhs) override
void handleLookupError(const QString &propertyName) override
void propagateTranslationMethod_SAcheck(const QString &methodName) override
bool handleImportNamespaceLookup(const QString &propertyName) override
void propagatePropertyLookup(const QString &name, int lookupIndex=QQmlJSRegisterContent::InvalidLookupIndex) override
void checkDeprecated(QQmlJSScope::ConstPtr scope, const QString &name, bool isMethod) const override
Combined button and popup list for selecting options.
bool operator==(const IdMemberShadow &lhs, const IdMemberShadow &rhs)
bool operator!=(const IdMemberShadow &lhs, const IdMemberShadow &rhs)
size_t qHash(const IdMemberShadow &idShadowsMember, size_t seed)