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>
72 for (
const QmlIR::Pragma *pragma: document->pragmas) {
73 if (pragma->type == QmlIR::Pragma::ListPropertyAssignBehavior)
74 return pragma->listPropertyAssignBehavior;
76 return ListPropertyAssignBehavior::Append;
84 void recordError(
const QQmlJS::DiagnosticMessage &message);
92 QUrl url()
const {
return typeData->finalUrl(); }
94 const QQmlImports *
imports()
const;
106 void addImport(
const QString &module,
const QString &qualifier, QTypeRevision version);
110 return resolvedTypes->value(id);
115 for (QV4::ResolvedTypeReference *ref : std::as_const(*resolvedTypes)) {
116 if (ref->type().typeId() == type)
125 QList<QQmlError> errors;
126 QQmlTypeLoader *loader;
127 const QV4::CompiledData::DependentTypesHasher &dependencyHasher;
128 QmlIR::Document *document;
130 QHash<
int, QQmlCustomParser*> customParsers;
133 QQmlPropertyCacheVector m_propertyCaches;
135 QQmlTypeData *typeData;
148 {
return compiler->resolvedType(id); }
165 bool resolveSignalHandlerExpressions(
166 const QmlIR::Object *obj,
const QString &typeName,
167 const QQmlPropertyCache::ConstPtr &propertyCache,
168 QQmlPropertyResolver::RevisionCheck revisionCheck
169 = QQmlPropertyResolver::CheckRevision);
171 QQmlTypeLoader *typeLoader;
172 const QList<QmlIR::Object*> &qmlObjects;
173 const QQmlImports *imports;
174 const QHash<
int, QQmlCustomParser*> &customParsers;
175 const QQmlPropertyCacheVector *
const propertyCaches;
190 bool assignEnumToBinding(QmlIR::Binding *binding, QStringView enumName,
int enumValue,
bool isQtObject);
191 bool assignEnumToBinding(QmlIR::Binding *binding,
const QString &enumName,
int enumValue,
bool isQtObject)
193 return assignEnumToBinding(binding, QStringView(enumName), enumValue, isQtObject);
195 bool tryQualifiedEnumAssignment(
196 const QmlIR::Object *obj,
const QQmlPropertyCache::ConstPtr &propertyCache,
197 const QQmlPropertyData *prop, QmlIR::Binding *binding);
198 int evaluateEnum(
const QString &scope, QStringView enumName, QStringView enumValue,
bool *ok)
const;
201 const QList<QmlIR::Object*> &qmlObjects;
202 const QQmlPropertyCacheVector *
const propertyCaches;
203 const QQmlImports *imports;
214 void scanObjectRecursively(
int objectIndex,
bool annotateScriptBindings =
false);
216 const QList<QmlIR::Object*> &qmlObjects;
217 const QHash<
int, QQmlCustomParser*> &customParsers;
228 const QList<QmlIR::Object*> &qmlObjects;
229 const QQmlPropertyCacheVector *
const propertyCaches;
240 const QList<QmlIR::Object*> &qmlObjects;
241 const QQmlPropertyCacheVector *
const propertyCaches;
253 enum class ScopeDeferred { False, True };
254 bool scanObject(
int objectIndex, ScopeDeferred scopeDeferred);
256 QList<QmlIR::Object*> *qmlObjects;
257 const QQmlPropertyCacheVector *
const propertyCaches;
258 const QHash<
int, QQmlCustomParser*> &customParsers;
260 bool _seenObjectWithId;
271 void mergeDefaultProperties(
int objectIndex);
273 const QList<QmlIR::Object*> &qmlObjects;
274 const QQmlPropertyCacheVector *
const propertyCaches;
void annotateBindingsToAliases()
QQmlAliasAnnotator(QQmlTypeCompiler *typeCompiler)
void annotateBindingsWithScriptStrings()
QQmlCustomParserScriptIndexer(QQmlTypeCompiler *typeCompiler)
void mergeDefaultProperties()
QQmlDefaultPropertyMerger(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 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)
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()