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>
82 for (
const QmlIR::Pragma *pragma: document->pragmas) {
83 if (pragma->type == QmlIR::Pragma::ListPropertyAssignBehavior)
84 return pragma->listPropertyAssignBehavior;
86 return ListPropertyAssignBehavior::Append;
94 void recordError(
const QQmlJS::DiagnosticMessage &message);
102 QUrl url()
const {
return typeData->finalUrl(); }
104 const QQmlImports *
imports()
const;
116 void addImport(
const QString &module,
const QString &qualifier, QTypeRevision version);
120 return resolvedTypes->value(id);
125 for (QV4::ResolvedTypeReference *ref : std::as_const(*resolvedTypes)) {
126 if (ref->type().typeId() == type)
135 QList<QQmlError> errors;
136 QQmlTypeLoader *loader;
137 const QV4::CompiledData::DependentTypesHasher &dependencyHasher;
138 QmlIR::Document *document;
140 QHash<
int, QQmlCustomParser*> customParsers;
143 QQmlPropertyCacheVector m_propertyCaches;
145 QQmlTypeData *typeData;
158 {
return compiler->resolvedType(id); }
175 bool resolveSignalHandlerExpressions(
176 const QmlIR::Object *obj,
const QString &typeName,
177 const QQmlPropertyCache::ConstPtr &propertyCache,
178 QQmlPropertyResolver::RevisionCheck revisionCheck
179 = QQmlPropertyResolver::CheckRevision);
181 QQmlTypeLoader *typeLoader;
182 const QList<QmlIR::Object*> &qmlObjects;
183 const QQmlImports *imports;
184 const QHash<
int, QQmlCustomParser*> &customParsers;
185 const QQmlPropertyCacheVector *
const propertyCaches;
200 bool assignEnumToBinding(QmlIR::Binding *binding, QStringView enumName,
int enumValue,
bool isQtObject);
201 bool assignEnumToBinding(QmlIR::Binding *binding,
const QString &enumName,
int enumValue,
bool isQtObject)
203 return assignEnumToBinding(binding, QStringView(enumName), enumValue, isQtObject);
205 bool tryQualifiedEnumAssignment(
206 const QmlIR::Object *obj,
const QQmlPropertyCache::ConstPtr &propertyCache,
207 const QQmlPropertyData *prop, QmlIR::Binding *binding);
208 int evaluateEnum(
const QString &scope, QStringView enumName, QStringView enumValue,
bool *ok)
const;
211 const QList<QmlIR::Object*> &qmlObjects;
212 const QQmlPropertyCacheVector *
const propertyCaches;
213 const QQmlImports *imports;
224 void scanObjectRecursively(
int objectIndex,
bool annotateScriptBindings =
false);
226 const QList<QmlIR::Object*> &qmlObjects;
227 const QHash<
int, QQmlCustomParser*> &customParsers;
238 const QList<QmlIR::Object*> &qmlObjects;
239 const QQmlPropertyCacheVector *
const propertyCaches;
250 const QList<QmlIR::Object*> &qmlObjects;
251 const QQmlPropertyCacheVector *
const propertyCaches;
263 enum class ScopeDeferred { False, True };
264 bool scanObject(
int objectIndex, ScopeDeferred scopeDeferred);
266 QList<QmlIR::Object*> *qmlObjects;
267 const QQmlPropertyCacheVector *
const propertyCaches;
268 const QHash<
int, QQmlCustomParser*> &customParsers;
270 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()