aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/compiler/qqmlirbuilder.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2022-10-12 14:52:40 +0200
committerUlf Hermann <ulf.hermann@qt.io>2022-10-13 22:13:12 +0200
commit9cfc19faf5d1ce2b9626914ab4528998b072385d (patch)
treee481fb931ca3ba90b99f745f580ca4a2a5353202 /src/qml/compiler/qqmlirbuilder.cpp
parenta21f49320a3c2546b025c4037398d052046bf3e7 (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.cpp20
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)