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
5
7
24{
25 m_error = error;
26
27 if (QQmlJSRegisterContent &returnType = function->returnType; returnType.isValid()) {
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())
41 };
42
43 const auto transformRegisters = [&](VirtualRegisters &registers) {
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
iterator begin()
Definition qflatmap_p.h:769
iterator end()
Definition qflatmap_p.h:773
const QQmlJSTypeResolver * m_typeResolver
QQmlJS::DiagnosticMessage * m_error
InstructionAnnotations m_annotations
void setError(const QString &message, int instructionOffset)
BlocksAndAnnotations run(Function *function, QQmlJS::DiagnosticMessage *error)
QQmlJSScope::ConstPtr genericType(const QQmlJSScope::ConstPtr &type, ComponentIsGeneric allowComponent=ComponentIsGeneric::No) const
void generalizeType(const QQmlJSScope::ConstPtr &type) const
Combined button and popup list for selecting options.
DBusConnection const char DBusError * error
#define Q_ASSERT(cond)
Definition qrandom.cpp:47
SSL_CTX int void * arg
#define QStringLiteral(str)
QDBusArgument argument