diff options
Diffstat (limited to 'src/qmlcompiler')
| -rw-r--r-- | src/qmlcompiler/qqmljscodegenerator.cpp | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/qmlcompiler/qqmljscodegenerator.cpp b/src/qmlcompiler/qqmljscodegenerator.cpp index f9472dd9b6..e4194defa8 100644 --- a/src/qmlcompiler/qqmljscodegenerator.cpp +++ b/src/qmlcompiler/qqmljscodegenerator.cpp @@ -2339,9 +2339,8 @@ void QQmlJSCodeGenerator::generateLookup(const QString &lookup, const QString &i void QQmlJSCodeGenerator::generateJumpCodeWithTypeConversions(int relativeOffset) { - m_body += u"{\n"_qs; - int absoluteOffset =nextInstructionOffset() + relativeOffset; - + QString conversionCode; + const int absoluteOffset = nextInstructionOffset() + relativeOffset; const auto annotation = m_annotations->find(absoluteOffset); if (annotation != m_annotations->constEnd()) { const auto &conversions = annotation->second.typeConversions; @@ -2378,10 +2377,10 @@ void QQmlJSCodeGenerator::generateJumpCodeWithTypeConversions(int relativeOffset if (variable == currentRegisterVariables.end() || *variable == currentVariable) continue; - m_body += *variable; - m_body += u" = "_qs; - m_body += conversion(currentType, targetType, currentVariable); - m_body += u";\n"_qs; + conversionCode += *variable; + conversionCode += u" = "_qs; + conversionCode += conversion(currentType, targetType, currentVariable); + conversionCode += u";\n"_qs; } } @@ -2389,9 +2388,11 @@ void QQmlJSCodeGenerator::generateJumpCodeWithTypeConversions(int relativeOffset auto labelIt = m_labels.find(absoluteOffset); if (labelIt == m_labels.end()) labelIt = m_labels.insert(absoluteOffset, u"label_%1"_qs.arg(m_labels.count())); - m_body += u" goto "_qs + *labelIt + u";\n"_qs; + conversionCode += u" goto "_qs + *labelIt + u";\n"_qs; } - m_body += u"}\n"_qs; + + if (!conversionCode.isEmpty()) + m_body += u"{\n"_qs + conversionCode + u"}\n"_qs; } QString QQmlJSCodeGenerator::registerVariable(int index) const |
