aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/qml/compiler/qqmltypecompiler.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/qml/compiler/qqmltypecompiler.cpp b/src/qml/compiler/qqmltypecompiler.cpp
index 4fe3008003..a684ebd959 100644
--- a/src/qml/compiler/qqmltypecompiler.cpp
+++ b/src/qml/compiler/qqmltypecompiler.cpp
@@ -87,6 +87,20 @@ bool QQmlTypeCompiler::compile()
} else {
ref->type = resolvedType->type;
Q_ASSERT(ref->type);
+ if (ref->type->containsRevisionedAttributes()) {
+ QQmlError cacheError;
+ ref->typePropertyCache = engine->cache(ref->type,
+ resolvedType->minorVersion,
+ cacheError);
+ if (!ref->typePropertyCache) {
+ cacheError.setColumn(resolvedType->location.column);
+ cacheError.setLine(resolvedType->location.line);
+ recordError(cacheError);
+ delete ref;
+ return false;
+ }
+ ref->typePropertyCache->addref();
+ }
}
ref->majorVersion = resolvedType->majorVersion;
ref->minorVersion = resolvedType->minorVersion;