diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2013-09-19 07:18:42 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-20 14:27:37 +0200 |
commit | 064c2f8f0d97b97895ebc3ec2b5e2b1ff4c9f2b4 (patch) | |
tree | b339c71dc2aa4d7fdf13b47e719f676a0328b8d7 /src/qml/qml/qqmltypeloader.cpp | |
parent | 1c730fd4b338df0ebdfda0feb80067fc063ea956 (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.cpp | 20 |
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()) |