aboutsummaryrefslogtreecommitdiffstats
path: root/src/qmlcompiler/qqmljsfunctioninitializer.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2024-10-09 13:43:27 +0200
committerUlf Hermann <ulf.hermann@qt.io>2024-10-17 07:34:33 +0200
commit848d3e6c751bdeaa11005b5d89c1312caae071d1 (patch)
tree1a04c1ca8674b56e1754a11ac48991e8045f57a3 /src/qmlcompiler/qqmljsfunctioninitializer.cpp
parent097712ae79924837dd7ac02965475e152978133d (diff)
QmlCompiler: Mark types in function signatures as "named"
We have the TypeByName content variant already for the related concept of naming a type in script code, for example to perform a type assertion. We can re-use it for signatures. Task-number: QTBUG-124670 Change-Id: If13518df2b2217769d02c4618f57203907b3f5f9 Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
Diffstat (limited to 'src/qmlcompiler/qqmljsfunctioninitializer.cpp')
-rw-r--r--src/qmlcompiler/qqmljsfunctioninitializer.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/qmlcompiler/qqmljsfunctioninitializer.cpp b/src/qmlcompiler/qqmljsfunctioninitializer.cpp
index 309bea8dff..c276d2ff4f 100644
--- a/src/qmlcompiler/qqmljsfunctioninitializer.cpp
+++ b/src/qmlcompiler/qqmljsfunctioninitializer.cpp
@@ -88,11 +88,11 @@ void QQmlJSFunctionInitializer::populateSignature(
if (const auto type = m_typeResolver->typeFromAST(argument.typeAnnotation->type)) {
function->argumentTypes.append(
m_typeResolver->tracked(
- m_typeResolver->globalType(type)));
+ m_typeResolver->namedType(type)));
} else {
function->argumentTypes.append(
m_typeResolver->tracked(
- m_typeResolver->globalType(m_typeResolver->varType())));
+ m_typeResolver->namedType(m_typeResolver->varType())));
signatureError(u"Cannot resolve the argument type %1."_s
.arg(argument.typeAnnotation->type->toString()));
}
@@ -101,7 +101,7 @@ void QQmlJSFunctionInitializer::populateSignature(
alreadyWarnedAboutMissingAnnotations = true;
function->argumentTypes.append(
m_typeResolver->tracked(
- m_typeResolver->globalType(m_typeResolver->varType())));
+ m_typeResolver->namedType(m_typeResolver->varType())));
signatureError(u"Functions without type annotations won't be compiled"_s);
}
}
@@ -124,7 +124,7 @@ void QQmlJSFunctionInitializer::populateSignature(
if (!function->returnType.isValid()) {
if (ast->typeAnnotation) {
- function->returnType = m_typeResolver->globalType(
+ function->returnType = m_typeResolver->namedType(
m_typeResolver->typeFromAST(ast->typeAnnotation->type));
if (!function->returnType.isValid())
signatureError(u"Cannot resolve return type %1"_s.arg(
@@ -135,7 +135,7 @@ void QQmlJSFunctionInitializer::populateSignature(
for (int i = QQmlJSCompilePass::FirstArgument + function->argumentTypes.size();
i < context->registerCountInFunction; ++i) {
function->registerTypes.append(m_typeResolver->tracked(
- m_typeResolver->globalType(m_typeResolver->voidType())));
+ m_typeResolver->namedType(m_typeResolver->voidType())));
}
function->addressableScopes = m_typeResolver->objectsById();
@@ -196,10 +196,11 @@ QQmlJSCompilePass::Function QQmlJSFunctionInitializer::run(
QtDebugMsg, bindingLocation, errors);
function.argumentTypes.append(
m_typeResolver->tracked(
- m_typeResolver->globalType(m_typeResolver->varType())));
+ m_typeResolver->namedType(
+ m_typeResolver->varType())));
} else {
function.argumentTypes.append(m_typeResolver->tracked(
- m_typeResolver->globalType(type)));
+ m_typeResolver->namedType(type)));
}
}
break;
@@ -223,7 +224,7 @@ QQmlJSCompilePass::Function QQmlJSFunctionInitializer::run(
const auto property = m_objectType->property(propertyName);
if (const QQmlJSScope::ConstPtr propertyType = property.type()) {
- function.returnType = m_typeResolver->globalType(propertyType->isListProperty()
+ function.returnType = m_typeResolver->namedType(propertyType->isListProperty()
? m_typeResolver->qObjectListType()
: QQmlJSScope::ConstPtr(property.type()));
} else {