Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qqmljsstoragegeneralizer.cpp
Go to the documentation of this file.
1
// Copyright (C) 2021 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3
4
#include "
qqmljsstoragegeneralizer_p.h
"
5
6
QT_BEGIN_NAMESPACE
7
22
QQmlJSCompilePass::BlocksAndAnnotations
23
QQmlJSStorageGeneralizer::run
(
Function
*function,
QQmlJS::DiagnosticMessage
*
error
)
24
{
25
m_error
=
error
;
26
27
if
(
QQmlJSRegisterContent
&returnType = function->returnType; returnType.isValid()) {
28
if
(
QQmlJSScope::ConstPtr
stored =
m_typeResolver
->
genericType
(
29
returnType.storedType(),
QQmlJSTypeResolver::ComponentIsGeneric::Yes
)) {
30
returnType = returnType.storedIn(stored);
31
}
else
{
32
setError
(
QStringLiteral
(
"Cannot store the return type %1."
)
33
.
arg
(returnType.storedType()->internalName()));
34
return
{};
35
}
36
}
37
38
const
auto
transformRegister = [&](
QQmlJSRegisterContent
&content) {
39
if
(
const
QQmlJSScope::ConstPtr
&specific = content.storedType())
40
m_typeResolver
->
generalizeType
(specific);
41
};
42
43
const
auto
transformRegisters = [&](
VirtualRegisters
®isters) {
44
for
(
auto
j
= registers.begin(), jEnd = registers.end();
j
!= jEnd; ++
j
) {
45
QQmlJSRegisterContent
&content =
j
.value().content;
46
transformRegister(content);
47
}
48
};
49
50
for
(
QQmlJSRegisterContent
&
argument
: function->argumentTypes) {
51
Q_ASSERT
(
argument
.isValid());
52
transformRegister(
argument
);
53
}
54
55
for
(
auto
i
=
m_annotations
.
begin
(), iEnd =
m_annotations
.
end
();
i
!= iEnd; ++
i
) {
56
transformRegister(
i
->second.changedRegister);
57
transformRegisters(
i
->second.typeConversions);
58
}
59
60
return
{ std::move(
m_basicBlocks
), std::move(
m_annotations
) };
61
}
62
63
QT_END_NAMESPACE
QDeferredSharedPointer< const QQmlJSScope >
QFlatMap< int, VirtualRegister >
QFlatMap::begin
iterator begin()
Definition
qflatmap_p.h:769
QFlatMap::end
iterator end()
Definition
qflatmap_p.h:773
QQmlJSCompilePass::m_typeResolver
const QQmlJSTypeResolver * m_typeResolver
Definition
qqmljscompilepass_p.h:278
QQmlJSCompilePass::m_error
QQmlJS::DiagnosticMessage * m_error
Definition
qqmljscompilepass_p.h:284
QQmlJSCompilePass::m_annotations
InstructionAnnotations m_annotations
Definition
qqmljscompilepass_p.h:283
QQmlJSCompilePass::m_basicBlocks
BasicBlocks m_basicBlocks
Definition
qqmljscompilepass_p.h:282
QQmlJSCompilePass::setError
void setError(const QString &message, int instructionOffset)
Definition
qqmljscompilepass_p.h:373
QQmlJSRegisterContent
Definition
qqmljsregistercontent_p.h:26
QQmlJSStorageGeneralizer::run
BlocksAndAnnotations run(Function *function, QQmlJS::DiagnosticMessage *error)
Definition
qqmljsstoragegeneralizer.cpp:23
QQmlJSTypeResolver::ComponentIsGeneric::Yes
@ Yes
QQmlJSTypeResolver::genericType
QQmlJSScope::ConstPtr genericType(const QQmlJSScope::ConstPtr &type, ComponentIsGeneric allowComponent=ComponentIsGeneric::No) const
Definition
qqmljstyperesolver.cpp:913
QQmlJSTypeResolver::generalizeType
void generalizeType(const QQmlJSScope::ConstPtr &type) const
Definition
qqmljstyperesolver.cpp:645
j
int j
Definition
doc_src_containers.cpp:275
i
i
[1]
Definition
doc_src_containers.cpp:169
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qstandardpaths_haiku.cpp:21
QT_END_NAMESPACE
Definition
qsharedpointer.cpp:1590
error
DBusConnection const char DBusError * error
Definition
qdbus_symbols_p.h:165
qqmljsstoragegeneralizer_p.h
Q_ASSERT
#define Q_ASSERT(cond)
Definition
qrandom.cpp:47
arg
SSL_CTX int void * arg
Definition
qsslsocket_openssl_symbols.cpp:402
QStringLiteral
#define QStringLiteral(str)
Definition
qstringliteral.h:36
argument
QDBusArgument argument
Definition
src_qdbus_qdbusargument.cpp:16
QQmlJSCompilePass::BlocksAndAnnotations
Definition
qqmljscompilepass_p.h:87
QQmlJSCompilePass::Function
Definition
qqmljscompilepass_p.h:93
QQmlJS::DiagnosticMessage
Definition
qqmljsdiagnosticmessage_p.h:30
qtdeclarative
src
qmlcompiler
qqmljsstoragegeneralizer.cpp
Generated by
1.10.0