diff options
| author | Ulf Hermann <ulf.hermann@qt.io> | 2024-11-25 11:43:57 +0100 |
|---|---|---|
| committer | Ulf Hermann <ulf.hermann@qt.io> | 2024-12-03 10:02:49 +0100 |
| commit | 54445f3c3fb65b3358dbe41099e768a52d30c3cd (patch) | |
| tree | 05d3cf7819eda342b32a87b1e3518ca918dcb714 /src/qmlcompiler/qqmljsfunctioninitializer.cpp | |
| parent | 60cedb86cad9c3fc275e305e9615d67a2363d269 (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.cpp | 20 |
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; |
