aboutsummaryrefslogtreecommitdiffstats
path: root/src/qmlcompiler/qqmljsfunctioninitializer.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2024-11-25 11:43:57 +0100
committerUlf Hermann <ulf.hermann@qt.io>2024-12-03 10:02:49 +0100
commit54445f3c3fb65b3358dbe41099e768a52d30c3cd (patch)
tree05d3cf7819eda342b32a87b1e3518ca918dcb714 /src/qmlcompiler/qqmljsfunctioninitializer.cpp
parent60cedb86cad9c3fc275e305e9615d67a2363d269 (diff)
QmlCompiler: Track function signature types only once
namedType() already creates a fresh QQmlJSRegisterContent. There is no need to clone it right away. Task-number: QTBUG-124670 Change-Id: I7a669df3a8cd2992afde20037d9400fd8ed8253b Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
Diffstat (limited to 'src/qmlcompiler/qqmljsfunctioninitializer.cpp')
-rw-r--r--src/qmlcompiler/qqmljsfunctioninitializer.cpp20
1 files changed, 6 insertions, 14 deletions
diff --git a/src/qmlcompiler/qqmljsfunctioninitializer.cpp b/src/qmlcompiler/qqmljsfunctioninitializer.cpp
index 975720c112..df85d53ad2 100644
--- a/src/qmlcompiler/qqmljsfunctioninitializer.cpp
+++ b/src/qmlcompiler/qqmljsfunctioninitializer.cpp
@@ -86,13 +86,10 @@ void QQmlJSFunctionInitializer::populateSignature(
for (const QQmlJS::AST::BoundName &argument : std::as_const(arguments)) {
if (argument.typeAnnotation) {
if (const auto type = m_typeResolver->typeFromAST(argument.typeAnnotation->type)) {
- function->argumentTypes.append(
- m_typeResolver->tracked(
- m_typeResolver->namedType(type)));
+ function->argumentTypes.append(m_typeResolver->namedType(type));
} else {
function->argumentTypes.append(
- m_typeResolver->tracked(
- m_typeResolver->namedType(m_typeResolver->varType())));
+ m_typeResolver->namedType(m_typeResolver->varType()));
signatureError(u"Cannot resolve the argument type %1."_s
.arg(argument.typeAnnotation->type->toString()));
}
@@ -100,8 +97,7 @@ void QQmlJSFunctionInitializer::populateSignature(
if (!alreadyWarnedAboutMissingAnnotations) {
alreadyWarnedAboutMissingAnnotations = true;
function->argumentTypes.append(
- m_typeResolver->tracked(
- m_typeResolver->namedType(m_typeResolver->varType())));
+ m_typeResolver->namedType(m_typeResolver->varType()));
signatureError(u"Functions without type annotations won't be compiled"_s);
}
}
@@ -134,8 +130,7 @@ void QQmlJSFunctionInitializer::populateSignature(
for (int i = QQmlJSCompilePass::FirstArgument + function->argumentTypes.size();
i < context->registerCountInFunction; ++i) {
- function->registerTypes.append(m_typeResolver->tracked(
- m_typeResolver->namedType(m_typeResolver->voidType())));
+ function->registerTypes.append(m_typeResolver->namedType(m_typeResolver->voidType()));
}
function->addressableScopes = m_typeResolver->objectsById();
@@ -195,12 +190,9 @@ QQmlJSCompilePass::Function QQmlJSFunctionInitializer::run(
arguments[i].typeName()),
QtDebugMsg, bindingLocation, errors);
function.argumentTypes.append(
- m_typeResolver->tracked(
- m_typeResolver->namedType(
- m_typeResolver->varType())));
+ m_typeResolver->namedType(m_typeResolver->varType()));
} else {
- function.argumentTypes.append(m_typeResolver->tracked(
- m_typeResolver->namedType(type)));
+ function.argumentTypes.append(m_typeResolver->namedType(type));
}
}
break;