diff options
Diffstat (limited to 'src/qmlcompiler/qqmljsbasicblocks.cpp')
| -rw-r--r-- | src/qmlcompiler/qqmljsbasicblocks.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/qmlcompiler/qqmljsbasicblocks.cpp b/src/qmlcompiler/qqmljsbasicblocks.cpp index a16db323f9..073e294f45 100644 --- a/src/qmlcompiler/qqmljsbasicblocks.cpp +++ b/src/qmlcompiler/qqmljsbasicblocks.cpp @@ -679,14 +679,17 @@ void QQmlJSBasicBlocks::adjustTypes() if (!liveConversions[i.key()].contains(conversion.key())) continue; - QQmlJSScope::ConstPtr conversionResult = conversion->second.content.conversionResult(); - const auto conversionOrigins = conversion->second.content.conversionOrigins(); QQmlJSScope::ConstPtr newResult; - for (const auto &origin : conversionOrigins) - newResult = m_typeResolver->merge(newResult, origin); - if (!m_typeResolver->adjustTrackedType(conversionResult, newResult)) - setError(adjustErrorMessage(conversionResult, newResult)); - transformRegister(conversion->second.content); + const auto content = conversion->second.content; + if (content.isConversion()) { + QQmlJSScope::ConstPtr conversionResult = content.conversionResult(); + const auto conversionOrigins = content.conversionOrigins(); + for (const auto &origin : conversionOrigins) + newResult = m_typeResolver->merge(newResult, origin); + if (!m_typeResolver->adjustTrackedType(conversionResult, newResult)) + setError(adjustErrorMessage(conversionResult, newResult)); + } + transformRegister(content); newRegisters.appendOrdered(conversion); } i->second.typeConversions = newRegisters.take(); |
