5#ifndef QQMLTYPECOMPILER_P_H
6#define QQMLTYPECOMPILER_P_H
22#include <private/qqmltypeloader_p.h>
23#include <private/qqmlirbuilder_p.h>
24#include <private/qqmlpropertyresolver_p.h>
25#include <private/qqmlpropertycachecreator_p.h>
83 for (
const QmlIR::Pragma *pragma: document->pragmas) {
84 if (pragma->type == QmlIR::Pragma::ListPropertyAssignBehavior)
85 return pragma->listPropertyAssignBehavior;
87 return ListPropertyAssignBehavior::Append;
95 void recordError(
const QQmlJS::DiagnosticMessage &message);
103 QUrl url()
const {
return typeData->finalUrl(); }
105 const QQmlImports *
imports()
const;
121 return resolvedTypes->value(id);
126 for (QV4::ResolvedTypeReference *ref : std::as_const(*resolvedTypes)) {
127 if (ref->type().typeId() == type)
136 QList<QQmlError> errors;
137 QQmlTypeLoader *loader;
138 const QV4::CompiledData::DependentTypesHasher &dependencyHasher;
139 QmlIR::Document *document;
141 QHash<
int, QQmlCustomParser*> customParsers;
144 QQmlPropertyCacheVector m_propertyCaches;
146 QQmlTypeData *typeData;
159 {
return compiler->resolvedType(id); }
176 bool resolveSignalHandlerExpressions(
177 const QmlIR::Object *obj,
const QString &typeName,
178 const QQmlPropertyCache::ConstPtr &propertyCache,
179 QQmlPropertyResolver::RevisionCheck revisionCheck
180 = QQmlPropertyResolver::CheckRevision);
182 QQmlTypeLoader *typeLoader;
183 const QList<QmlIR::Object*> &qmlObjects;
184 const QQmlImports *imports;
185 const QHash<
int, QQmlCustomParser*> &customParsers;
186 const QQmlPropertyCacheVector *
const propertyCaches;
201 bool assignEnumToBinding(QmlIR::Binding *binding, QStringView enumName,
int enumValue,
bool isQtObject);
202 bool assignEnumToBinding(QmlIR::Binding *binding,
const QString &enumName,
int enumValue,
bool isQtObject)
204 return assignEnumToBinding(binding, QStringView(enumName), enumValue, isQtObject);
206 bool tryQualifiedEnumAssignment(
207 const QmlIR::Object *obj,
const QQmlPropertyCache::ConstPtr &propertyCache,
208 const QQmlPropertyData *prop, QmlIR::Binding *binding);
209 int evaluateEnum(
const QString &scope, QStringView enumName, QStringView enumValue,
bool *ok)
const;
212 const QList<QmlIR::Object*> &qmlObjects;
213 const QQmlPropertyCacheVector *
const propertyCaches;
214 const QQmlImports *imports;
225 void scanObjectRecursively(
int objectIndex,
bool annotateScriptBindings =
false);
227 const QList<QmlIR::Object*> &qmlObjects;
228 const QHash<
int, QQmlCustomParser*> &customParsers;
239 const QList<QmlIR::Object*> &qmlObjects;
240 const QQmlPropertyCacheVector *
const propertyCaches;
251 const QList<QmlIR::Object*> &qmlObjects;
252 const QQmlPropertyCacheVector *
const propertyCaches;
264 enum class ScopeDeferred { False, True };
265 bool scanObject(
int objectIndex, ScopeDeferred scopeDeferred);
267 QList<QmlIR::Object*> *qmlObjects;
268 const QQmlPropertyCacheVector *
const propertyCaches;
269 const QHash<
int, QQmlCustomParser*> &customParsers;
271 bool _seenObjectWithId;
void annotateBindingsToAliases()
QQmlAliasAnnotator(QQmlTypeCompiler *typeCompiler)
void annotateBindingsWithScriptStrings()
QQmlCustomParserScriptIndexer(QQmlTypeCompiler *typeCompiler)
bool resolveEnumBindings()
friend class QQmlEnginePrivate
QQmlScriptStringScanner(QQmlTypeCompiler *typeCompiler)
Combined button and popup list for selecting options.
Q_LOGGING_CATEGORY(lcEventDispatcher, "qt.eventdispatcher")
#define COMPILE_EXCEPTION(location, desc)
static bool resolveDeepAlias(QQmlTypeCompiler *compiler, const QmlIR::Object *targetObject, QStringView property, QStringView subProperty, QQmlPropertyIndex &propIdx, QMetaType targetPropertyType, const QQmlPropertyCacheVector *propertyCaches, const QMap< int, int > &idToObjectIndex)
void recordError(const QV4::CompiledData::Location &location, const QString &description) const
QQmlCompilePass(QQmlTypeCompiler *typeCompiler)
QV4::ResolvedTypeReference * resolvedType(int id) const
QQmlTypeCompiler * compiler
QString stringAt(int idx) const
const QmlIR::Object * objectAt(int index) const
int implicitComponentForObject(int childIndex) const
int registerConstant(QV4::ReturnedValue v)
QmlIR::Object CompiledObject
void recordError(const QQmlJS::DiagnosticMessage &message)
QQmlTypeLoader * typeLoader() const
QV4::ResolvedTypeReference * resolvedType(int id) const
QList< QQmlError > compilationErrors() const
const QHash< int, QQmlCustomParser * > & customParserCache() const
const QV4::CompiledData::Unit * qmlUnit() const
QmlIR::Object * objectAt(int index)
QQmlType qmlTypeForComponent(const QString &inlineComponentName=QString()) const
QList< QmlIR::Object * > * qmlObjects() const
QQmlPropertyCacheVector * propertyCaches()
QQmlJS::MemoryPool * memoryPool()
void recordError(const QQmlError &e)
QString bindingAsString(const QmlIR::Object *object, int scriptIndex) const
ListPropertyAssignBehavior listPropertyAssignBehavior() const
const QQmlPropertyCacheVector * propertyCaches() const
int registerString(const QString &str)
const QV4::Compiler::StringTableGenerator * stringPool() const
void recordError(const QV4::CompiledData::Location &location, const QString &description)
QStringView newStringRef(const QString &string)
int resolvedIndex(int index) const
QmlIR::Binding CompiledBinding
void addImport(const QString &module, const QString &qualifier, QTypeRevision version)
QQmlRefPointer< QV4::CompiledData::CompilationUnit > compile()
QString stringAt(int idx) const
const QQmlImports * imports() const
bool resolveSignalHandlerExpressions()