diff options
Diffstat (limited to 'src/qmlcompiler/qqmljsfunctioninitializer_p.h')
| -rw-r--r-- | src/qmlcompiler/qqmljsfunctioninitializer_p.h | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/src/qmlcompiler/qqmljsfunctioninitializer_p.h b/src/qmlcompiler/qqmljsfunctioninitializer_p.h new file mode 100644 index 0000000000..0320a1aa49 --- /dev/null +++ b/src/qmlcompiler/qqmljsfunctioninitializer_p.h @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QQMLJSFUNCTIONINITIALIAZER_P_H +#define QQMLJSFUNCTIONINITIALIAZER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. + +#include <private/qqmljscompilepass_p.h> + +QT_BEGIN_NAMESPACE + +class QQmlJSFunctionInitializer +{ + Q_DISABLE_COPY_MOVE(QQmlJSFunctionInitializer) +public: + QQmlJSFunctionInitializer( + const QQmlJSTypeResolver *typeResolver, const QmlIR::Object *object, + const QmlIR::Object *scope) + : m_typeResolver(typeResolver) + , m_currentObject(object) + , m_scopeType(typeResolver->scopeForLocation(scope->location)) + , m_objectType(typeResolver->scopeForLocation(object->location)) + {} + + QQmlJSCompilePass::Function run( + const QV4::Compiler::Context *context, + const QString &propertyName, const QmlIR::Binding &irBinding, + QQmlJS::DiagnosticMessage *error); + QQmlJSCompilePass::Function run( + const QV4::Compiler::Context *context, + const QString &functionName, const QmlIR::Function &irFunction, + QQmlJS::DiagnosticMessage *error); + +private: + void populateSignature( + const QV4::Compiler::Context *context, QQmlJS::AST::FunctionExpression *ast, + QQmlJSCompilePass::Function *function, QQmlJS::DiagnosticMessage *error); + + const QQmlJSTypeResolver *m_typeResolver = nullptr; + const QmlIR::Object *m_currentObject = nullptr; + const QQmlJSScope::ConstPtr m_scopeType; + const QQmlJSScope::ConstPtr m_objectType; +}; + +QT_END_NAMESPACE + +#endif // QQMLJSFUNCTIONINITIALIZER_P_H |
