aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmltypeloader.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2013-09-19 13:32:13 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-20 14:27:49 +0200
commit3123a22ae66016a0d9cd600dbb6f636fd29fc312 (patch)
treede483a714d4ac3234de4b13e3c6bb00d437d0a32 /src/qml/qml/qqmltypeloader.cpp
parent4c953b1592956b712eca60eec070868a567c04c1 (diff)
[new compiler] Initial support for alias properties
Aliases are resolved at "compile time", not rough JS expressions. This is done right after we determined the scope of components in the QML file, which is also where we collect object ids (that aliases use). Change-Id: If5702337f2cca08d17f196c3b2fde3bbdfea5b3c Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml/qml/qqmltypeloader.cpp')
-rw-r--r--src/qml/qml/qqmltypeloader.cpp24
1 files changed, 4 insertions, 20 deletions
diff --git a/src/qml/qml/qqmltypeloader.cpp b/src/qml/qml/qqmltypeloader.cpp
index 096356126d..7b1935a447 100644
--- a/src/qml/qml/qqmltypeloader.cpp
+++ b/src/qml/qml/qqmltypeloader.cpp
@@ -2281,28 +2281,12 @@ void QQmlTypeData::compile()
}
}
- {
- // Scan for anonymous components and determine their scopes.
- QQmlAnonymousComponentResolver resolver(m_compiledData->url, m_compiledData->qmlUnit, m_compiledData->resolvedTypes, m_compiledData->propertyCaches);
+ if (errors.isEmpty()) {
+ // Scan for components, determine their scopes and resolve aliases within the scope.
+ QQmlComponentAndAliasResolver resolver(m_compiledData->url, m_compiledData->qmlUnit, m_compiledData->resolvedTypes, m_compiledData->propertyCaches,
+ &m_compiledData->datas, &m_compiledData->objectIndexToIdForRoot, &m_compiledData->objectIndexToIdPerComponent);
if (!resolver.resolve())
errors << resolver.errors;
-
- for (quint32 i = 0; i < qmlUnit->nObjects; ++i) {
- const QV4::CompiledData::Object *obj = qmlUnit->objectAt(i);
-
- QHash<int, int> *objectIndexToId = 0;
- QHash<int, int>::ConstIterator componentIt = resolver.objectIndexToComponentIndex.find(i);
- if (componentIt != resolver.objectIndexToComponentIndex.constEnd()) {
- int indexOfComponent = resolver.componentRoots[*componentIt];
- objectIndexToId = &m_compiledData->objectIndexToIdPerComponent[indexOfComponent];
- } else
- objectIndexToId = &m_compiledData->objectIndexToIdForRoot;
-
- const QString &id = qmlUnit->header.stringAt(obj->idIndex);
- if (id.isEmpty())
- continue;
- objectIndexToId->insert(i, objectIndexToId->count());
- }
}
if (!errors.isEmpty()) {