aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmltypeloader.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2013-09-19 07:18:42 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-20 14:27:37 +0200
commit064c2f8f0d97b97895ebc3ec2b5e2b1ff4c9f2b4 (patch)
treeb339c71dc2aa4d7fdf13b47e719f676a0328b8d7 /src/qml/qml/qqmltypeloader.cpp
parent1c730fd4b338df0ebdfda0feb80067fc063ea956 (diff)
[new compiler] Implement dependency type availability checking
Change-Id: I9c2c69dbf88574cbce85898b2b54654445cdb552 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml/qml/qqmltypeloader.cpp')
-rw-r--r--src/qml/qml/qqmltypeloader.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/qml/qml/qqmltypeloader.cpp b/src/qml/qml/qqmltypeloader.cpp
index 6a0b90c5aa..096356126d 100644
--- a/src/qml/qml/qqmltypeloader.cpp
+++ b/src/qml/qml/qqmltypeloader.cpp
@@ -1978,6 +1978,7 @@ void QQmlTypeData::done()
}
// Check all type dependencies for errors
+ // --- old compiler:
for (int ii = 0; !isError() && ii < m_types.count(); ++ii) {
const TypeReference &type = m_types.at(ii);
Q_ASSERT(!type.typeData || type.typeData->isCompleteOrError());
@@ -1994,6 +1995,25 @@ void QQmlTypeData::done()
setError(errors);
}
}
+ // --- new compiler:
+ for (QHash<int, TypeReference>::ConstIterator it = m_resolvedTypes.constBegin(), end = m_resolvedTypes.constEnd();
+ !isError() && it != end; ++it) {
+ const TypeReference &type = *it;
+ Q_ASSERT(!type.typeData || type.typeData->isCompleteOrError());
+ if (type.typeData && type.typeData->isError()) {
+ QString typeName = parsedQML->jsGenerator.strings.at(it.key());
+
+ QList<QQmlError> errors = type.typeData->errors();
+ QQmlError error;
+ error.setUrl(finalUrl());
+ error.setLine(type.location.line);
+ error.setColumn(type.location.column);
+ error.setDescription(QQmlTypeLoader::tr("Type %1 unavailable").arg(typeName));
+ errors.prepend(error);
+ setError(errors);
+ }
+ }
+ // ---
// Compile component
if (!isError())