Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qqmlsa_p.h
Go to the documentation of this file.
1// Copyright (C) 2022 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3// Qt-Security score:significant
4
5#ifndef QQMLSA_P_H
6#define QQMLSA_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17
18#include <qtqmlcompilerexports.h>
19
20#include <private/qqmljslogger_p.h>
21#include <private/qqmlsasourcelocation_p.h>
23
24#include <unordered_map>
25#include <vector>
26#include <memory>
27
28QT_BEGIN_NAMESPACE
29
30class QQmlJSImportVisitor;
31
32namespace QQmlSA {
33
47
49{
51 std::shared_ptr<QQmlSA::PropertyPass> pass;
52 bool allowInheritance = true;
53};
54
79
81{
83 Q_DECLARE_PUBLIC(Binding)
84
85public:
86 explicit BindingPrivate(Binding *);
87 BindingPrivate(Binding *, const BindingPrivate &);
88
89 static BindingPrivate *get(Binding *binding) { return binding->d_func(); }
90 static const BindingPrivate *get(const Binding *binding) { return binding->d_func(); }
91
92 static QQmlSA::Binding createBinding(const QQmlJSMetaPropertyBinding &);
93 static QQmlJSMetaPropertyBinding binding(QQmlSA::Binding &binding);
94 static const QQmlJSMetaPropertyBinding binding(const QQmlSA::Binding &binding);
95
96 void setPropertyName(QString name) { m_binding.setPropertyName(name); }
97
98 Element bindingScope() const { return m_bindingScope; }
99 void setBindingScope(Element bindingScope) { m_bindingScope = bindingScope; }
100
101 bool isAttached() const { return m_isAttached; }
102 void setIsAttached(bool isAttached) { m_isAttached = isAttached; }
103
104private:
105 QQmlJSMetaPropertyBinding m_binding;
106 Element m_bindingScope;
107 Binding *q_ptr = nullptr;
108 bool m_isAttached = false;
109};
110
112
114{
116 Q_DECLARE_PUBLIC(Method)
117
118public:
119 explicit MethodPrivate(Method *);
120 MethodPrivate(Method *, const MethodPrivate &);
121
122 QString methodName() const;
124 MethodType methodType() const;
125
127 static QQmlJSMetaMethod method(const QQmlSA::Method &);
128
129private:
130 QQmlJSMetaMethod m_method;
131 Method *q_ptr = nullptr;
132};
133
135{
138
139public:
140 explicit MethodsPrivate(QQmlSA::Method::Methods *);
141 MethodsPrivate(QQmlSA::Method::Methods *, const MethodsPrivate &);
142 MethodsPrivate(QQmlSA::Method::Methods *, MethodsPrivate &&);
143 ~MethodsPrivate() = default;
144
147
148 static QQmlSA::Method::Methods createMethods(const QMultiHash<QString, QQmlJSMetaMethod> &);
149
150private:
151 QMultiHash<QString, Method> m_methods;
152 QQmlSA::Method::Methods *q_ptr = nullptr;
153};
154
156{
158 Q_DECLARE_PUBLIC(QQmlSA::Property)
159
160public:
161 explicit PropertyPrivate(Property *);
162 PropertyPrivate(Property *, const PropertyPrivate &);
163 PropertyPrivate(Property *, PropertyPrivate &&);
164 ~PropertyPrivate() = default;
165
166 QString typeName() const;
167 bool isValid() const;
168 bool isReadonly() const;
169 QQmlSA::Element type() const;
170
171 static QQmlJSMetaProperty property(const QQmlSA::Property &property);
173
174private:
175 QQmlJSMetaProperty m_property;
176 QQmlSA::Property *q_ptr = nullptr;
177};
178
179class Q_QMLCOMPILER_EXPORT PassManagerPrivate
180{
182
183public:
185
186 friend class GenericPass;
191
193 static const PassManagerPrivate *get(const PassManager *manager) { return manager->d_func(); }
200 static void deletePassManager(PassManager *q) { delete q; }
201
206 bool allowInheritance = true);
210 bool allowInheritance = true);
211
212 void analyze(const Element &root);
213
215
218
219
221 const QString &propertyName);
222
224 const QQmlSA::Element &value, const QQmlSA::Element &writeScope,
232
234 const QQmlSA::Element &scope = QQmlSA::Element(),
235 const QString prefix = QString(), bool isAttached = false);
236
242};
243
245{
246 Q_DECLARE_PUBLIC(FixSuggestion)
248
249public:
250 explicit FixSuggestionPrivate(FixSuggestion *);
251 FixSuggestionPrivate(FixSuggestion *, const QString &fixDescription,
252 const QQmlSA::SourceLocation &location, const QString &replacement);
253 FixSuggestionPrivate(FixSuggestion *, const FixSuggestionPrivate &);
254 FixSuggestionPrivate(FixSuggestion *, FixSuggestionPrivate &&);
256
257 QString fixDescription() const;
259 QString replacement() const;
260
261 void setFileName(const QString &);
262 QString fileName() const;
263
264 void setHint(const QString &);
265 QString hint() const;
266
267 void setAutoApplicable(bool autoApplicable = true);
268 bool isAutoApplicable() const;
269
270 static QQmlJSFixSuggestion &fixSuggestion(QQmlSA::FixSuggestion &);
271 static const QQmlJSFixSuggestion &fixSuggestion(const QQmlSA::FixSuggestion &);
272
273private:
274 QQmlJSFixSuggestion m_fixSuggestion;
275 QQmlSA::FixSuggestion *q_ptr = nullptr;
276};
277
279 const LoggerWarningId &id,
282
284{
285 using PropertyPass::PropertyPass;
286
287 static void onBindingDefault(PropertyPass *, const Element &, const QString &, const Binding &,
288 const Element &, const Element &)
289 {
290 }
291 static void onReadDefault(PropertyPass *, const Element &, const QString &, const Element &,
293 {
294 }
295 static void onCallDefault(PropertyPass *, const Element &, const QString &, const Element &,
297 {
298 }
299 static void onWriteDefault(PropertyPass *, const Element &, const QString &, const Element &,
300 const Element &, SourceLocation)
301 {
302 }
303
304 using OnBinding = decltype(&onBindingDefault);
305 using OnRead = decltype(&onReadDefault);
306 using OnCall = decltype(&onCallDefault);
307 using OnWrite = decltype(&onWriteDefault);
308
309 void onBinding(const Element &element, const QString &propertyName, const Binding &binding,
310 const Element &bindingScope, const Element &value) override
311 {
312 m_onBinding(this, element, propertyName, binding, bindingScope, value);
313 }
314 void onRead(const Element &element, const QString &propertyName, const Element &readScope,
315 SourceLocation location) override
316 {
317 m_onRead(this, element, propertyName, readScope, location);
318 }
319 void onCall(const Element &element, const QString &propertyName, const Element &readScope,
320 SourceLocation location) override
321 {
322 m_onCall(this, element, propertyName, readScope, location);
323 }
324 void onWrite(const Element &element, const QString &propertyName, const Element &value,
325 const Element &writeScope, SourceLocation location) override
326 {
327 m_onWrite(this, element, propertyName, value, writeScope, location);
328 }
329
334};
335
337{
338public:
339 PropertyPassBuilder(PassManager *passManager)
340 : m_pass(std::make_unique<GenericPropertyPass>(passManager)), m_passManager(passManager)
341 {
342 Q_ASSERT(m_passManager);
343 }
344
348 {
349 Q_ASSERT_X(!m_pass, "GenericPropertyPassBuilder", "Built PropertyPass was not registered!");
350 }
351
353 {
354 Q_ASSERT_X(m_pass, "GenericPropertyPassBuilder",
355 "PropertyPasses can't be modified after registration");
357 return *this;
358 }
360 {
361 Q_ASSERT_X(m_pass, "GenericPropertyPassBuilder",
362 "PropertyPasses can't be modified after registration");
364 return *this;
365 }
367 {
368 Q_ASSERT_X(m_pass, "GenericPropertyPassBuilder",
369 "PropertyPasses can't be modified after registration");
371 return *this;
372 }
374 {
375 Q_ASSERT_X(m_pass, "GenericPropertyPassBuilder",
376 "PropertyPasses can't be modified after registration");
378 return *this;
379 }
381 {
382 Q_ASSERT_X(m_pass, "GenericPropertyPassBuilder",
383 "Current PropertyPass was already registered");
385 }
387 {
388 Q_ASSERT_X(m_pass, "GenericPropertyPassBuilder",
389 "Current PropertyPass was already registered");
392 }
393
394private:
396 PassManager *m_passManager;
397};
398
399} // namespace QQmlSA
400
401QT_END_NAMESPACE
402
403#endif
friend bool operator==(const QByteArray::FromBase64Result &lhs, const QByteArray::FromBase64Result &rhs) noexcept
Returns true if lhs and rhs are equal, otherwise returns false.
Definition qbytearray.h:801
friend bool operator!=(const QByteArray::FromBase64Result &lhs, const QByteArray::FromBase64Result &rhs) noexcept
Returns true if lhs and rhs are different, otherwise returns false.
Definition qbytearray.h:812
bool isValid() const
QString fileName() const
If the currently assigned device is a QFile, or if setFileName() has been called, this function retur...
void setFileName(const QString &fileName)
Sets the file name of QImageReader to fileName.
virtual Type type() const =0
Reimplement this function to return the paint engine \l{Type}.
virtual bool isValid() const
virtual QString location() const
QString typeName() const
void setIsFlag(bool isFlag)
void setLineNumber(int lineNumber)
friend bool operator!=(const QQmlJSMetaEnum &a, const QQmlJSMetaEnum &b)
void setName(const QString &name)
QQmlJSMetaEnum()=default
int lineNumber() const
friend size_t qHash(const QQmlJSMetaEnum &e, size_t seed=0)
friend bool operator==(const QQmlJSMetaEnum &a, const QQmlJSMetaEnum &b)
void setTypeName(const QString &typeName)
bool hasKey(const QString &key) const
void setIsScoped(bool v)
void setType(const QSharedPointer< const QQmlJSScope > &type)
QSharedPointer< const QQmlJSScope > type() const
int value(const QString &key) const
bool isQml() const
void setIsQml(bool v)
void addValue(int value)
bool isScoped() const
QList< int > values() const
bool isFlag() const
QString alias() const
QStringList keys() const
bool isValid() const
void addKey(const QString &key)
void setAlias(const QString &alias)
QString name() const
QQmlJSMetaEnum(QString name)
bool hasValues() const
QQmlJSMetaReturnType returnValue() const
QQmlJSMetaMethod()=default
void setReturnType(QWeakPointer< const QQmlJSScope > type)
void setSourceLocation(QQmlJS::SourceLocation location)
QQmlJS::SourceLocation sourceLocation() const
QString methodName() const
QQmlJSMetaMethodType MethodType
void setMethodName(const QString &name)
void setReturnTypeName(const QString &typeName)
QString returnTypeName() const
QQmlJSMetaMethod(QString name, QString returnType=QString())
QList< QQmlJSMetaParameter > parameters() const
void setReturnValue(const QQmlJSMetaReturnType returnValue)
QSharedPointer< const QQmlJSScope > returnType() const
void setIsPointer(bool isPointer)
void setType(QWeakPointer< const QQmlJSScope > type)
void setIsList(bool isList)
friend bool operator!=(const QQmlJSMetaParameter &a, const QQmlJSMetaParameter &b)
friend size_t qHash(const QQmlJSMetaParameter &e, size_t seed=0)
void setName(const QString &name)
void setTypeName(const QString &typeName)
void setTypeQualifier(Constness typeQualifier)
Constness typeQualifier() const
QString typeName() const
QQmlJSMetaParameter(QString name=QString(), QString typeName=QString(), Constness typeQualifier=NonConst, QWeakPointer< const QQmlJSScope > type={})
friend bool operator==(const QQmlJSMetaParameter &a, const QQmlJSMetaParameter &b)
QSharedPointer< const QQmlJSScope > type() const
friend bool operator!=(const QQmlJSMetaProperty &a, const QQmlJSMetaProperty &b)
QString notify() const
QSharedPointer< const QQmlJSScope > aliasTargetScope() const
QString aliasExpression() const
friend bool operator==(const QQmlJSMetaProperty &a, const QQmlJSMetaProperty &b)
void setPropertyName(const QString &propertyName)
QString aliasTargetName() const
void setAnnotations(const QList< QQmlJSAnnotation > &annotation)
void setIsList(bool isList)
QString bindable() const
QSharedPointer< const QQmlJSScope > type() const
void setPrivateClass(const QString &privateClass)
void setRead(const QString &read)
friend size_t qHash(const QQmlJSMetaProperty &prop, size_t seed=0)
void setBindable(const QString &bindable)
void setWrite(const QString &write)
void setIsPropertyConstant(bool isPropertyConstant)
QString reset() const
void setRevision(int revision)
void setIsFinal(bool isFinal)
QString typeName() const
void setAliasTargetScope(const QSharedPointer< const QQmlJSScope > &scope)
void setSourceLocation(const QQmlJS::SourceLocation &newSourceLocation)
QString write() const
void setIsTypeConstant(bool isTypeConstant)
const QList< QQmlJSAnnotation > & annotations() const
QQmlJS::SourceLocation sourceLocation() const
void setTypeName(const QString &typeName)
QQmlJSMetaProperty()=default
void setReset(const QString &reset)
QString privateClass() const
void setIsWritable(bool isWritable)
void setAliasExpression(const QString &aliasString)
void setAliasTargetName(const QString &name)
void setIndex(int index)
void setNotify(const QString &notify)
bool isPropertyConstant() const
bool isTypeConstant() const
void setType(const QSharedPointer< const QQmlJSScope > &type)
QString propertyName() const
void setIsPointer(bool isPointer)
QQmlJSRegisterContent createMethod(const QList< QQmlJSMetaMethod > &methods, const QQmlJSScope::ConstPtr &methodType, ContentVariant variant, QQmlJSRegisterContent scope)
QQmlJSRegisterContent createImportNamespace(uint importNamespaceStringId, const QQmlJSScope::ConstPtr &importNamespaceType, ContentVariant variant, QQmlJSRegisterContent scope)
QQmlJSRegisterContent createProperty(const QQmlJSMetaProperty &property, int baseLookupIndex, int resultLookupIndex, ContentVariant variant, QQmlJSRegisterContent scope)
void adjustType(QQmlJSRegisterContent content, const QQmlJSScope::ConstPtr &adjusted)
void generalizeType(QQmlJSRegisterContent content, const QQmlJSScope::ConstPtr &generalized)
void storeType(QQmlJSRegisterContent content, const QQmlJSScope::ConstPtr &stored)
QQmlJSRegisterContent castTo(QQmlJSRegisterContent content, const QQmlJSScope::ConstPtr &newContainedType)
QQmlJSRegisterContent createEnumeration(const QQmlJSMetaEnum &enumeration, const QString &enumMember, ContentVariant variant, QQmlJSRegisterContent scope)
void setAllocationMode(AllocationMode mode)
QQmlJSRegisterContent storedIn(QQmlJSRegisterContent content, const QQmlJSScope::ConstPtr &newStoredType)
QQmlJSRegisterContent clone(QQmlJSRegisterContent from)
QQmlJSRegisterContent createType(const QQmlJSScope::ConstPtr &type, int resultLookupIndex, ContentVariant variant, QQmlJSRegisterContent scope={})
QQmlJSRegisterContent createConversion(const QList< QQmlJSRegisterContent > &origins, const QQmlJSScope::ConstPtr &conversion, QQmlJSRegisterContent conversionScope, ContentVariant variant, QQmlJSRegisterContent scope)
QQmlJSRegisterContent createMethodCall(const QQmlJSMetaMethod &method, const QQmlJSScope::ConstPtr &returnType, QQmlJSRegisterContent scope)
Tracks the types for the QmlCompiler.
QTypeRevision revision() const
QString type() const
QTypeRevision version() const
bool isValid() const
QString package() const
Export()=default
Export(QString package, QString type, QTypeRevision version, QTypeRevision revision)
virtual QQmlSourceLocation sourceLocation() const
static BindingPrivate * get(Binding *binding)
Definition qqmlsa_p.h:89
static QQmlJSMetaPropertyBinding binding(QQmlSA::Binding &binding)
Definition qqmlsa.cpp:320
Element bindingScope() const
Definition qqmlsa_p.h:98
void setPropertyName(QString name)
Definition qqmlsa_p.h:96
static QQmlSA::Binding createBinding(const QQmlJSMetaPropertyBinding &)
Definition qqmlsa.cpp:313
static const QQmlJSMetaPropertyBinding binding(const QQmlSA::Binding &binding)
Definition qqmlsa.cpp:325
bool isAttached() const
Definition qqmlsa_p.h:101
void setIsAttached(bool isAttached)
Definition qqmlsa_p.h:102
BindingPrivate(Binding *, const BindingPrivate &)
Definition qqmlsa.cpp:307
void setBindingScope(Element bindingScope)
Definition qqmlsa_p.h:99
static const BindingPrivate * get(const Binding *binding)
Definition qqmlsa_p.h:90
\inmodule QtQmlCompiler
Definition qqmlsa.h:52
Element attachedType() const
Returns the attached type if the content type of this binding is AttachedProperty,...
Definition qqmlsa.cpp:384
BindingType bindingType() const
Returns the type of this binding.
Definition qqmlsa.cpp:350
Element bindingScope() const
Returns the Element scope in which the binding is defined.
Definition qqmlsa.cpp:342
friend bool operator!=(const Binding &lhs, const Binding &rhs)
Returns true if lhs and rhs are not equal, and false otherwise.
Definition qqmlsa.h:106
bool hasUndefinedScriptValue() const
Returns whether this binding has script value type undefined like when it is assigned undefined.
Definition qqmlsa.cpp:451
Binding(const Binding &)
Creates a copy of other.
Definition qqmlsa.cpp:254
Binding & operator=(const Binding &)
Assigns other to this Binding instance.
Definition qqmlsa.cpp:266
bool isAttached() const
Returns true if this type is attached to another one, false otherwise.
Definition qqmlsa.cpp:375
bool hasObject() const
Returns true if this binding has an objects, otherwise returns false.
Definition qqmlsa.cpp:432
friend bool operator==(const Binding &lhs, const Binding &rhs)
Returns true if lhs and rhs are equal, and false otherwise.
Definition qqmlsa.h:102
static bool isLiteralBinding(BindingType)
Returns true if bindingType is a literal type, and false otherwise.
Definition qqmlsa.cpp:475
QString propertyName() const
Returns the name of the property bound with this binding.
Definition qqmlsa.cpp:367
Binding()
Constructs a new Binding object.
Definition qqmlsa.cpp:247
QString stringValue() const
Returns the associated string literal if the content type of this binding is StringLiteral,...
Definition qqmlsa.cpp:359
Element objectType() const
Returns the type of the associated object if the content type of this binding is Object,...
Definition qqmlsa.cpp:441
Binding & operator=(Binding &&) noexcept
Move-assigns other to this Binding instance.
Definition qqmlsa.cpp:282
QQmlSA::SourceLocation sourceLocation() const
Returns the location in the QML code where this binding is defined.
Definition qqmlsa.cpp:405
ScriptBindingKind scriptKind() const
Returns the kind of the associated script if the content type of this binding is Script,...
Definition qqmlsa.cpp:424
double numberValue() const
Returns the associated number if the content type of this binding is NumberLiteral,...
Definition qqmlsa.cpp:415
Element groupType() const
Returns the type of the property of this binding if it is a group property, otherwise returns an inva...
Definition qqmlsa.cpp:334
bool hasFunctionScriptValue() const
Returns whether this binding has script value type function like when it is assigned a (lambda) metho...
Definition qqmlsa.cpp:464
QMultiHash< QString, Binding >::const_iterator constBegin() const
Definition qqmlsa.cpp:213
BindingsPrivate(QQmlSA::Binding::Bindings *, const BindingsPrivate &)
Definition qqmlsa.cpp:189
friend class QT_PREPEND_NAMESPACE(QQmlJSMetaPropertyBinding)
QMultiHash< QString, Binding >::const_iterator constEnd() const
Definition qqmlsa.cpp:232
\inmodule QtQmlCompiler
Definition qqmlsa.h:368
\inmodule QtQmlCompiler
Definition qqmlsa.h:202
QQmlSA::SourceLocation location() const
Definition qqmlsa.cpp:2037
FixSuggestionPrivate(FixSuggestion *, const QString &fixDescription, const QQmlSA::SourceLocation &location, const QString &replacement)
Definition qqmlsa.cpp:2012
void setHint(const QString &)
Definition qqmlsa.cpp:2057
void setFileName(const QString &)
Definition qqmlsa.cpp:2047
QString fixDescription() const
Definition qqmlsa.cpp:2032
FixSuggestionPrivate(FixSuggestion *)
Definition qqmlsa.cpp:2010
void setAutoApplicable(bool autoApplicable=true)
Definition qqmlsa.cpp:2067
static const QQmlJSFixSuggestion & fixSuggestion(const QQmlSA::FixSuggestion &)
Definition qqmlsa.cpp:2082
FixSuggestionPrivate(FixSuggestion *, FixSuggestionPrivate &&)
Definition qqmlsa.cpp:2027
QString replacement() const
Definition qqmlsa.cpp:2042
static QQmlJSFixSuggestion & fixSuggestion(QQmlSA::FixSuggestion &)
Definition qqmlsa.cpp:2077
FixSuggestionPrivate(FixSuggestion *, const FixSuggestionPrivate &)
Definition qqmlsa.cpp:2021
\inmodule QtQmlCompiler
Definition qqmlsa.h:397
void setHint(const QString &)
Sets hint as the hint for this fix suggestion.
Definition qqmlsa.cpp:2193
FixSuggestion(const FixSuggestion &)
Creates a copy of other.
Definition qqmlsa.cpp:2107
QString hint() const
Returns the hint for this fix suggestion.
Definition qqmlsa.cpp:2201
QString replacement() const
Returns the fix that will replace the problematic source code.
Definition qqmlsa.cpp:2169
QString fixDescription() const
Returns the description of the fix.
Definition qqmlsa.cpp:2152
bool isAutoApplicable() const
Returns whether this suggested fix can be applied automatically.
Definition qqmlsa.cpp:2218
void setAutoApplicable(bool autoApplicable=true)
Sets autoApplicable to determine whether this suggested fix can be applied automatically.
Definition qqmlsa.cpp:2210
\inmodule QtQmlCompiler
Definition qqmlsa.h:283
void emitWarning(QAnyStringView diagnostic, LoggerWarningId id)
Emits a warning message diagnostic about an issue of type id.
Definition qqmlsa.cpp:1264
Element resolveLiteralType(const Binding &binding)
Returns the element representing the type of literal in binding.
Definition qqmlsa.cpp:1376
void emitWarning(QAnyStringView diagnostic, LoggerWarningId id, QQmlSA::SourceLocation srcLocation, const QQmlSA::FixSuggestion &fix)
Emits a warning message diagnostic about an issue of type id located at srcLocation and with suggeste...
Definition qqmlsa.cpp:1287
void emitWarning(QAnyStringView diagnostic, LoggerWarningId id, QQmlSA::SourceLocation srcLocation)
Emits warning message diagnostic about an issue of type id located at srcLocation.
Definition qqmlsa.cpp:1273
Element resolveBuiltinType(QAnyStringView typeName) const
Returns the type of the built-in type identified by typeName.
Definition qqmlsa.cpp:1348
Element resolveAttached(QAnyStringView moduleName, QAnyStringView typeName)
Returns the attached type of typeName defined in module moduleName.
Definition qqmlsa.cpp:1366
QString resolveElementToId(const Element &element, const Element &context)
Returns the id of element in a given context.
Definition qqmlsa.cpp:1399
Element resolveTypeInFileScope(QAnyStringView typeName)
Returns the type corresponding to typeName inside the currently analysed file.
Definition qqmlsa.cpp:1302
QString sourceCode(QQmlSA::SourceLocation location)
Returns the source code located within location.
Definition qqmlsa.cpp:1411
Element resolveAttachedInFileScope(QAnyStringView typeName)
Returns the attached type corresponding to typeName used inside the currently analysed file.
Definition qqmlsa.cpp:1314
Element resolveIdToElement(QAnyStringView id, const Element &context)
Returns the element in context that has id id.
Definition qqmlsa.cpp:1387
Element resolveType(QAnyStringView moduleName, QAnyStringView typeName)
Returns the type of typeName defined in module moduleName.
Definition qqmlsa.cpp:1332
\inmodule QtQmlCompiler
Definition qqmlsa.h:340
MethodPrivate(Method *, const MethodPrivate &)
Definition qqmlsa.cpp:563
QQmlSA::SourceLocation sourceLocation() const
Definition qqmlsa.cpp:573
static QQmlSA::Method createMethod(const QQmlJSMetaMethod &)
Definition qqmlsa.cpp:680
MethodType methodType() const
Definition qqmlsa.cpp:578
static QQmlJSMetaMethod method(const QQmlSA::Method &)
Definition qqmlsa.cpp:701
QString methodName() const
Definition qqmlsa.cpp:568
\inmodule QtQmlCompiler
Definition qqmlsa.h:120
Method & operator=(Method &&) noexcept
Move-assigns other to this Method instance.
Definition qqmlsa.cpp:624
MethodType methodType() const
Returns the type of this method.
Definition qqmlsa.cpp:651
Method(const Method &)
Creates a copy of other.
Definition qqmlsa.cpp:598
Method()
Constructs a new Method object.
Definition qqmlsa.cpp:593
Method & operator=(const Method &)
Assigns other to this Method instance.
Definition qqmlsa.cpp:611
QString methodName() const
Returns the name of the this method.
Definition qqmlsa.cpp:642
MethodsPrivate(QQmlSA::Method::Methods *, MethodsPrivate &&)
Definition qqmlsa.cpp:556
static QQmlSA::Method::Methods createMethods(const QMultiHash< QString, QQmlJSMetaMethod > &)
Definition qqmlsa.cpp:689
QMultiHash< QString, Method >::const_iterator constEnd() const
Definition qqmlsa.cpp:544
MethodsPrivate(QQmlSA::Method::Methods *, const MethodsPrivate &)
Definition qqmlsa.cpp:551
QMultiHash< QString, Method >::const_iterator constBegin() const
Definition qqmlsa.cpp:525
\inmodule QtQmlCompiler
Definition qqmlsa.h:314
void analyze(const Element &root)
Runs the element passes over root and all its children.
Definition qqmlsa.cpp:1600
bool isCategoryEnabled(LoggerWarningId category) const
Returns true if warnings of category are enabled, false otherwise.
Definition qqmlsa.cpp:1711
bool registerPropertyPass(std::shared_ptr< PropertyPass > pass, QAnyStringView moduleName, QAnyStringView typeName, QAnyStringView propertyName=QAnyStringView(), bool allowInheritance=true)
Registers a static analysis pass for properties.
Definition qqmlsa.cpp:1503
std::unordered_map< quint32, Binding > bindingsByLocation() const
Returns bindings by their source location.
Definition qqmlsa.cpp:2004
bool hasImportedModule(QAnyStringView name) const
Returns true if the module named module has been imported by the QML to be analyzed,...
Definition qqmlsa.cpp:1703
PropertyPassBuilder(PassManager *passManager)
Definition qqmlsa_p.h:339
\inmodule QtQmlCompiler
Definition qqmlsa.h:351
static QQmlSA::Property createProperty(const QQmlJSMetaProperty &)
Definition qqmlsa.cpp:751
PropertyPrivate(Property *, const PropertyPrivate &)
Definition qqmlsa.cpp:708
PropertyPrivate(Property *, PropertyPrivate &&)
Definition qqmlsa.cpp:713
static QQmlJSMetaProperty property(const QQmlSA::Property &property)
Definition qqmlsa.cpp:746
QQmlSA::Element type() const
Returns the type that this property was defined with.
Definition qqmlsa.cpp:741
bool isValid() const
Definition qqmlsa.cpp:723
QString typeName() const
Definition qqmlsa.cpp:718
bool isReadonly() const
Returns whether this property is readonly.
Definition qqmlsa.cpp:733
\inmodule QtQmlCompiler
Definition qqmlsa.h:169
Property(const Property &)
Creates a copy of other.
Definition qqmlsa.cpp:774
QString typeName() const
Returns the name of the type of this property.
Definition qqmlsa.cpp:819
bool isReadonly() const
Returns true if this property is read-only, false otherwise.
Definition qqmlsa.cpp:837
\inmodule QtQmlCompiler
MethodType
Definition qqmlsa.h:48
Q_QMLCOMPILER_EXPORT void emitWarningWithOptionalFix(GenericPass &pass, QAnyStringView diagnostic, const LoggerWarningId &id, const QQmlSA::SourceLocation &srcLocation, const std::optional< QQmlJSFixSuggestion > &fix)
Definition qqmlsa.cpp:2237
bool isRegularBindingType(BindingType type)
Definition qqmlsa.cpp:2253
constexpr bool isFunctionScope(ScopeType type)
AccessSemantics
Definition qqmlsa.h:49
@ HasBaseTypeError
Definition qqmlsa_p.h:43
@ InlineComponent
Definition qqmlsa_p.h:41
@ HasExtensionNamespace
Definition qqmlsa_p.h:44
@ WrappedInImplicitComponent
Definition qqmlsa_p.h:42
Q_DECLARE_INTERFACE(QNetworkAccessBackendFactory, QNetworkAccessBackendFactory_iid)
Q_DECLARE_TYPEINFO(QObjectPrivate::ConnectionList, Q_RELOCATABLE_TYPE)
static QString toNumericString(double value)
static QString messageTypeForMethod(const QString &method)
static QString derefContentPointer(const QString &contentPointer)
#define BYTECODE_UNIMPLEMENTED()
#define INJECT_TRACE_INFO(function)
#define REJECT
static QString registerName(int registerIndex, int offset)
static QString minExpression(int argc)
static QString maxExpression(int argc)
static bool isTypeStorable(const QQmlJSTypeResolver *resolver, const QQmlJSScope::ConstPtr &type)
QQmlSA::MethodType QQmlJSMetaMethodType
QQmlJSMetaParameter QQmlJSMetaReturnType
ScriptBindingValueType
@ ScriptValue_Function
@ ScriptValue_Unknown
@ ScriptValue_Undefined
#define QmlLintPluginInterface_iid
Definition qqmlsa.h:440
QList< Export > exports
QTypeRevision revision
static void onWriteDefault(PropertyPass *, const Element &, const QString &, const Element &, const Element &, SourceLocation)
Definition qqmlsa_p.h:299
static void onBindingDefault(PropertyPass *, const Element &, const QString &, const Binding &, const Element &, const Element &)
Definition qqmlsa_p.h:287
void onRead(const Element &element, const QString &propertyName, const Element &readScope, SourceLocation location) override
Executes whenever a property is read.
Definition qqmlsa_p.h:314
static void onCallDefault(PropertyPass *, const Element &, const QString &, const Element &, SourceLocation)
Definition qqmlsa_p.h:295
void onBinding(const Element &element, const QString &propertyName, const Binding &binding, const Element &bindingScope, const Element &value) override
Executes whenever a property gets bound to a value.
Definition qqmlsa_p.h:309
void onCall(const Element &element, const QString &propertyName, const Element &readScope, SourceLocation location) override
Executes whenever a property or method is called.
Definition qqmlsa_p.h:319
static void onReadDefault(PropertyPass *, const Element &, const QString &, const Element &, SourceLocation)
Definition qqmlsa_p.h:291
void onWrite(const Element &element, const QString &propertyName, const Element &value, const Element &writeScope, SourceLocation location) override
Executes whenever a property is written to.
Definition qqmlsa_p.h:324
std::shared_ptr< QQmlSA::PropertyPass > pass
Definition qqmlsa_p.h:51