4#ifndef QQMLJSIMPORTEDMEMBERSVISITOR_P_H
5#define QQMLJSIMPORTEDMEMBERSVISITOR_P_H
17#include <private/qtqmlcompilerexports_p.h>
25#include <QtCore/qvariant.h>
26#include <QtCore/qstack.h>
28#include <private/qqmljsast_p.h>
29#include <private/qqmljsdiagnosticmessage_p.h>
30#include <private/qv4compileddata_p.h>
47 const QString &implicitImportDirectory,
51 using QQmlJS::AST::Visitor::endVisit;
54 using QQmlJS::AST::Visitor::visit;
65 return m_signalHandlers;
71 return m_scopesByIrLocation;
74 static QString implicitImportDirectory(
167 bool m_nextIsInlineComponent =
false;
168 bool m_rootIsSingleton =
false;
201 return x.scope ==
y.scope &&
x.name ==
y.name;
215 bool m_thisScriptBindingIsJavaScript =
false;
221 void forgetFunctionExpression(
const QString &
name);
222 int synthesizeCompilationUnitRuntimeFunctionIndices(
const QQmlJSScope::Ptr &scope,
224 void populateRuntimeFunctionIndicesForDocument()
const;
232 void leaveEnvironment();
237 template<
typename ErrorHandler>
240 if (
type->isFullyResolved())
256 void setAllBindings();
257 void addDefaultProperties();
258 void processDefaultProperties();
259 void processPropertyBindings();
260 void checkRequiredProperties();
261 void processPropertyTypes();
262 void processPropertyBindingObjects();
263 void flushPendingSignalParameters();
273 BindingExpressionParseResult parseBindingExpression(
const QString &
name,
275 bool isImportPrefix(
QString prefix)
const;
339 void importBaseModules();
340 void resolveAliasesAndIds();
344 void processImportWarnings(
QQmlJSImporter::ImportedTypes imports() const
QStack< FunctionOrExpressionIdentifier > m_functionStack
QHash< QQmlJSScope::ConstPtr, QList< QString > > m_functionsAndExpressions
QMultiHash< QString, QQmlJS::SourceLocation > m_importTypeLocationMap
QQmlJSScope::Ptr m_currentScope
QMultiHash< QString, QQmlJS::SourceLocation > m_importStaticModuleLocationMap
QSet< QString > m_usedTypes
QQmlJSImporter * importer()
QQmlJS::SourceLocation m_pendingSignalHandler
QString m_implicitImportDirectory
QQmlJSScope::ConstPtr m_globalScope
QList< QQmlJSScope::ConstPtr > m_qmlTypes
const QQmlJSLogger * logger() const
QStringList m_qmldirFiles
QQmlJSScope::Ptr m_savedBindingOuterScope
QHash< QQmlJS::SourceLocation, QQmlJSMetaSignalHandler > m_signalHandlers
const QQmlJSImporter * importer() const
QHash< QV4::CompiledData::Location, QQmlJSScope::ConstPtr > m_scopesByIrLocation
QList< UnfinishedBinding > m_bindings
QHash< QQmlJSScope::Ptr, QVector< QQmlJSScope::Ptr > > m_pendingDefaultProperties
QQmlJSScope::Ptr result() const
QQmlJSScope::RootDocumentNameType InlineComponentOrDocumentRootName
QList< QQmlJSScope::ConstPtr > qmlTypes() const
QVector< QQmlJSScope::Ptr > m_objectDefinitionScopes
QVector< QQmlJSAnnotation > m_pendingMethodAnnotations
QQmlJSScopesById addressableScopes() const
QQmlJSScope::RootDocumentNameType RootDocumentNameType
QHash< QQmlJS::SourceLocation, QQmlJSMetaSignalHandler > signalHandlers() const
QHash< FunctionOrExpressionIdentifier, int > m_innerFunctions
QSet< QQmlJSScope::ConstPtr > literalScopesToCheck() const
QVector< PendingPropertyObjectBinding > m_pendingPropertyObjectBindings
BindingExpressionParseResult
QSet< QQmlJS::SourceLocation > m_importLocations
QVector< RequiredProperty > m_requiredProperties
QVector< PendingPropertyType > m_pendingPropertyTypes
QVector< QQmlJSScope::Ptr > m_objectBindingScopes
QSet< QQmlJSScope::ConstPtr > m_literalScopesToCheck
bool rootScopeIsValid() const
bool isTypeResolved(const QQmlJSScope::ConstPtr &type, ErrorHandler handle)
QSet< QQmlJSScope::ConstPtr > m_unresolvedTypes
const QQmlJSScope::Ptr m_exportedRootScope
QQmlJSImporter::ImportedTypes m_rootScopeImports
QHash< QQmlJSScope::Ptr, QVector< WithVisibilityScope< QString > > > m_propertyBindings
QQmlJSScope::ConstPtr scopeById(const QString &id, const QQmlJSScope::ConstPtr ¤t)
QHash< QV4::CompiledData::Location, QQmlJSScope::ConstPtr > scopesBylocation() const
QQmlJSScopesById m_scopesById
QString InlineComponentNameType
std::monostate RootDocumentNameType
std::variant< InlineComponentNameType, RootDocumentNameType > InlineComponentOrDocumentRootName
A Hashable type to differentiate document roots from different inline components.
QQmlJS::SourceLocation sourceLocation() const
virtual QQmlJSASTClassListToVisit void throwRecursionDepthError()=0
bool preVisit(Node *) override
void postVisit(Node *) override
bool contains(const T &value) const
iterator insert(const T &value)
\macro QT_RESTRICTED_CAST_FROM_ASCII
Combined button and popup list for selecting options.
constexpr QtPrivate::QHashMultiReturnType< T... > qHashMulti(size_t seed, const T &... args) noexcept(std::conjunction_v< QtPrivate::QNothrowHashable< T >... >)
GLuint64 GLenum void * handle
GLint GLint GLint GLint GLint x
[0]
GLenum GLenum GLsizei count
GLsizei const GLchar *const * path
static Q_CONSTINIT QBasicAtomicInteger< unsigned > seed
friend bool operator==(const FunctionOrExpressionIdentifier &x, const FunctionOrExpressionIdentifier &y)
friend bool operator!=(const FunctionOrExpressionIdentifier &x, const FunctionOrExpressionIdentifier &y)
friend size_t qHash(const FunctionOrExpressionIdentifier &x, size_t seed=0)
QQmlJSScope::ConstPtr scope
QQmlJS::SourceLocation location
QQmlJSScope::Ptr childScope
QQmlJS::SourceLocation location
QQmlJS::SourceLocation location
std::function< QQmlJSMetaPropertyBinding()> create
Utility wrapper that adds visibility scope to the data.
QQmlJSScope::Ptr visibilityScope
QQmlJS::SourceLocation dataLocation