diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2022-10-12 14:52:40 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2022-10-13 22:13:12 +0200 |
commit | 9cfc19faf5d1ce2b9626914ab4528998b072385d (patch) | |
tree | e481fb931ca3ba90b99f745f580ca4a2a5353202 /src/qml/compiler/qqmlirbuilder.cpp | |
parent | a21f49320a3c2546b025c4037398d052046bf3e7 (diff) |
Qml: Analyze qsTranslate at compile time
We generate translation bindings for all the other translation functions
already. We can just as well generate a translation binding for this
one, too.
Fixes: QTBUG-107536
Change-Id: I851f03c26510b6d450aa78f5d7a1f0142d3a81aa
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qml/compiler/qqmlirbuilder.cpp')
-rw-r--r-- | src/qml/compiler/qqmlirbuilder.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/qml/compiler/qqmlirbuilder.cpp b/src/qml/compiler/qqmlirbuilder.cpp index d15f2177ff..3832621589 100644 --- a/src/qml/compiler/qqmlirbuilder.cpp +++ b/src/qml/compiler/qqmlirbuilder.cpp @@ -1231,17 +1231,25 @@ void IRBuilder::setBindingValue(QV4::CompiledData::Binding *binding, QQmlJS::AST void IRBuilder::tryGeneratingTranslationBinding(QStringView base, AST::ArgumentList *args, QV4::CompiledData::Binding *binding) { - auto registerMainString = [&](QStringView mainString) { return jsGenerator->registerString(mainString.toString()) ; }; - auto registerCommentString = [&](QStringView commentString) { return jsGenerator->registerString(commentString.toString()); }; - auto finalizeTranslationData = [&](QV4::CompiledData::Binding::Type type, QV4::CompiledData::TranslationData translationData) { + const auto registerString = [&](QStringView string) { + return jsGenerator->registerString(string.toString()) ; + }; + + const auto finalizeTranslationData = [&]( + QV4::CompiledData::Binding::Type type, + QV4::CompiledData::TranslationData translationData) { binding->setType(type); - if (type == QV4::CompiledData::Binding::Type_Translation || type == QV4::CompiledData::Binding::Type_TranslationById) + if (type == QV4::CompiledData::Binding::Type_Translation + || type == QV4::CompiledData::Binding::Type_TranslationById) { binding->value.translationDataIndex = jsGenerator->registerTranslation(translationData); - else if (type == QV4::CompiledData::Binding::Type_String) + } else if (type == QV4::CompiledData::Binding::Type_String) { binding->stringIndex = translationData.number; + } }; - tryGeneratingTranslationBindingBase(base, args, registerMainString, registerCommentString, finalizeTranslationData); + tryGeneratingTranslationBindingBase( + base, args, + registerString, registerString, registerString, finalizeTranslationData); } void IRBuilder::appendBinding(QQmlJS::AST::UiQualifiedId *name, QQmlJS::AST::Statement *value, QQmlJS::AST::Node *parentNode) |