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.h
Go to the documentation of this file.
1// Copyright (C) 2023 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_H
6#define QQMLSA_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is part of the qmllint plugin API, with limited compatibility guarantees.
13// Usage of this API may make your code source and binary incompatible with
14// future versions of Qt.
15//
16
17#include <QtQmlCompiler/qqmlsaconstants.h>
18#include <QtQmlCompiler/qqmljsloggingutils.h>
19
20#include <QtQmlCompiler/qtqmlcompilerexports.h>
21
22#include <QtCore/qhash.h>
23#include <QtCore/qsharedpointer.h>
24#include <QtCore/qplugin.h>
25#include <QtQmlCompiler/qqmlsasourcelocation.h>
26
27#include <unordered_map>
28
29QT_BEGIN_NAMESPACE
30
31namespace QQmlSA {
32
33class BindingPrivate;
34class BindingsPrivate;
35class Element;
36class ElementPass;
37class FixSuggestion;
40class MethodPrivate;
41class MethodsPrivate;
42class PassManager;
43class PassManagerPrivate;
44class PropertyPass;
45class PropertyPrivate;
46struct PropertyPassInfo;
47
50
51class Q_QMLCOMPILER_EXPORT Binding
52{
54
55public:
73
74 Binding();
75 Binding(const Binding &);
76 Binding(Binding &&) noexcept;
77 Binding &operator=(const Binding &);
78 Binding &operator=(Binding &&) noexcept;
80
81 Element groupType() const;
82 Element bindingScope() const;
84 QString stringValue() const;
85 QString propertyName() const;
86 bool isAttached() const;
87 Element attachedType() const;
88
89#if QT_DEPRECATED_SINCE(6, 9)
90 QT_DEPRECATED_X("Use attachedType()")
91 Element attachingType() const;
92#endif
93
95 double numberValue() const;
97 bool hasObject() const;
98 Element objectType() const;
99 bool hasUndefinedScriptValue() const;
100 bool hasFunctionScriptValue() const;
101
102 friend bool operator==(const Binding &lhs, const Binding &rhs)
103 {
104 return operatorEqualsImpl(lhs, rhs);
105 }
106 friend bool operator!=(const Binding &lhs, const Binding &rhs)
107 {
108 return !operatorEqualsImpl(lhs, rhs);
109 }
110
111 static bool isLiteralBinding(BindingType);
112
113private:
114 static bool operatorEqualsImpl(const Binding &, const Binding &);
115
116 std::unique_ptr<BindingPrivate> d_ptr;
117};
118
119class Q_QMLCOMPILER_EXPORT Method
120{
121 Q_DECLARE_PRIVATE(Method)
122
123public:
124 class Q_QMLCOMPILER_EXPORT Methods
125 {
126 Q_DECLARE_PRIVATE(Methods)
127
128 public:
129 Methods();
130 Methods(const Methods &);
131 ~Methods();
132
133 QMultiHash<QString, Method>::const_iterator begin() const { return constBegin(); }
134 QMultiHash<QString, Method>::const_iterator end() const { return constEnd(); }
135 QMultiHash<QString, Method>::const_iterator constBegin() const;
136 QMultiHash<QString, Method>::const_iterator constEnd() const;
137
138 private:
139 std::unique_ptr<MethodsPrivate> d_ptr;
140 };
141
142 Method();
143 Method(const Method &);
144 Method(Method &&) noexcept;
145 Method &operator=(const Method &);
146 Method &operator=(Method &&) noexcept;
147 ~Method();
148
149 QString methodName() const;
151 MethodType methodType() const;
152
153 friend bool operator==(const Method &lhs, const Method &rhs)
154 {
155 return operatorEqualsImpl(lhs, rhs);
156 }
157 friend bool operator!=(const Method &lhs, const Method &rhs)
158 {
159 return !operatorEqualsImpl(lhs, rhs);
160 }
161
162private:
163 static bool operatorEqualsImpl(const Method &, const Method &);
164
165 std::unique_ptr<MethodPrivate> d_ptr;
166};
167
168class Q_QMLCOMPILER_EXPORT Property
169{
170 Q_DECLARE_PRIVATE(Property)
171
172public:
173 Property();
174 Property(const Property &);
175 Property(Property &&) noexcept;
176 Property &operator=(const Property &);
177 Property &operator=(Property &&) noexcept;
178 ~Property();
179
180 QString typeName() const;
181 bool isValid() const;
182 bool isReadonly() const;
183 QQmlSA::Element type() const;
184
185 friend bool operator==(const Property &lhs, const Property &rhs)
186 {
187 return operatorEqualsImpl(lhs, rhs);
188 }
189
190 friend bool operator!=(const Property &lhs, const Property &rhs)
191 {
192 return !operatorEqualsImpl(lhs, rhs);
193 }
194
195private:
196 static bool operatorEqualsImpl(const Property &, const Property &);
197
198 std::unique_ptr<PropertyPrivate> d_ptr;
199};
200
201class Q_QMLCOMPILER_EXPORT Element
202{
203 friend class QT_PREPEND_NAMESPACE(QQmlJSScope);
204
205public:
206 Element();
207 Element(const Element &);
208 Element(Element &&other) noexcept
209 {
210 memcpy(m_data, other.m_data, sizeofElement);
211 memset(other.m_data, 0, sizeofElement);
212 }
213 Element &operator=(const Element &);
214 QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_MOVE_AND_SWAP(Element)
215 ~Element();
216
217 ScopeType scopeType() const;
218 Element baseType() const;
219 QString baseTypeName() const;
220 Element parentScope() const;
221 bool inherits(const Element &) const;
222 bool isFileRootComponent() const;
223
224 bool isNull() const;
225 QString internalId() const;
226 AccessSemantics accessSemantics() const;
227 bool isComposite() const;
228
229 bool hasProperty(const QString &propertyName) const;
230 bool hasOwnProperty(const QString &propertyName) const;
231 Property property(const QString &propertyName) const;
232 bool isPropertyRequired(const QString &propertyName) const;
233 QString defaultPropertyName() const;
234
235 bool hasMethod(const QString &methodName) const;
236 Method::Methods ownMethods() const;
237
238 QQmlSA::SourceLocation sourceLocation() const;
239 QQmlSA::SourceLocation idSourceLocation() const;
240 QString filePath() const;
241
242 bool hasPropertyBindings(const QString &name) const;
243 bool hasOwnPropertyBindings(const QString &propertyName) const;
244
245 Binding::Bindings ownPropertyBindings() const;
246 Binding::Bindings ownPropertyBindings(const QString &propertyName) const;
247 QList<Binding> propertyBindings(const QString &propertyName) const;
248
249 explicit operator bool() const;
250 bool operator!() const;
251
252 QString name() const;
253
254 friend inline bool operator==(const QQmlSA::Element &lhs, const QQmlSA::Element &rhs)
255 {
256 return operatorEqualsImpl(lhs, rhs);
257 }
258 friend inline bool operator!=(const Element &lhs, const Element &rhs) { return !(lhs == rhs); }
259
260 friend inline qsizetype qHash(const Element &key, qsizetype seed = 0) noexcept
261 {
262 return qHashImpl(key, seed);
263 }
264
265private:
266 static bool operatorEqualsImpl(const Element &, const Element &);
267 static qsizetype qHashImpl(const Element &key, qsizetype seed) noexcept;
268
269 static constexpr qsizetype sizeofElement = 2 * sizeof(QSharedPointer<int>);
270 alignas(QSharedPointer<int>) char m_data[sizeofElement];
271
272 void swap(Element &other) noexcept
273 {
274 char t[sizeofElement];
275 memcpy(t, m_data, sizeofElement);
276 memcpy(m_data, other.m_data, sizeofElement);
277 memcpy(other.m_data, t, sizeofElement);
278 }
279 friend void swap(Element &lhs, Element &rhs) noexcept { lhs.swap(rhs); }
280};
281
282class Q_QMLCOMPILER_EXPORT GenericPass
283{
284 Q_DECLARE_PRIVATE(GenericPass)
285 Q_DISABLE_COPY_MOVE(GenericPass)
286
287public:
288 GenericPass(PassManager *manager);
289 virtual ~GenericPass();
290
291 void emitWarning(QAnyStringView diagnostic, LoggerWarningId id);
292 void emitWarning(QAnyStringView diagnostic, LoggerWarningId id,
293 QQmlSA::SourceLocation srcLocation);
294 void emitWarning(QAnyStringView diagnostic, LoggerWarningId id,
295 QQmlSA::SourceLocation srcLocation, const QQmlSA::FixSuggestion &fix);
296
297 Element resolveTypeInFileScope(QAnyStringView typeName);
298 Element resolveAttachedInFileScope(QAnyStringView typeName);
299 Element resolveType(QAnyStringView moduleName, QAnyStringView typeName); // #### TODO: revisions
300 Element resolveBuiltinType(QAnyStringView typeName) const;
301 Element resolveAttached(QAnyStringView moduleName, QAnyStringView typeName);
302 Element resolveLiteralType(const Binding &binding);
303
304 Element resolveIdToElement(QAnyStringView id, const Element &context);
305 QString resolveElementToId(const Element &element, const Element &context);
306
307 QString sourceCode(QQmlSA::SourceLocation location);
308
309private:
310 std::unique_ptr<GenericPassPrivate> d_ptr;
311};
312
313class Q_QMLCOMPILER_EXPORT PassManager
314{
315 Q_DISABLE_COPY_MOVE(PassManager)
316 Q_DECLARE_PRIVATE(PassManager)
317
318public:
319 void registerElementPass(std::unique_ptr<ElementPass> pass);
320 bool registerPropertyPass(std::shared_ptr<PropertyPass> pass, QAnyStringView moduleName,
321 QAnyStringView typeName,
322 QAnyStringView propertyName = QAnyStringView(),
323 bool allowInheritance = true);
324 void analyze(const Element &root);
325
326 bool hasImportedModule(QAnyStringView name) const;
327
328 bool isCategoryEnabled(LoggerWarningId category) const;
329
331
332private:
333 PassManager();
334 ~PassManager();
335
336 std::unique_ptr<PassManagerPrivate> d_ptr;
337};
338
339class Q_QMLCOMPILER_EXPORT LintPlugin
340{
341public:
342 LintPlugin() = default;
343 virtual ~LintPlugin() = default;
344
345 Q_DISABLE_COPY_MOVE(LintPlugin)
346
347 virtual void registerPasses(PassManager *manager, const Element &rootElement) = 0;
348};
349
350class Q_QMLCOMPILER_EXPORT PropertyPass : public GenericPass
351{
352public:
353 PropertyPass(PassManager *manager);
354
355 virtual void onBinding(const QQmlSA::Element &element, const QString &propertyName,
356 const QQmlSA::Binding &binding, const QQmlSA::Element &bindingScope,
357 const QQmlSA::Element &value);
358 virtual void onRead(const QQmlSA::Element &element, const QString &propertyName,
359 const QQmlSA::Element &readScope, QQmlSA::SourceLocation location);
360 virtual void onCall(const QQmlSA::Element &element, const QString &propertyName,
361 const QQmlSA::Element &readScope, QQmlSA::SourceLocation location);
362 virtual void onWrite(const QQmlSA::Element &element, const QString &propertyName,
363 const QQmlSA::Element &value, const QQmlSA::Element &writeScope,
364 QQmlSA::SourceLocation location);
365};
366
367class Q_QMLCOMPILER_EXPORT ElementPass : public GenericPass
368{
369public:
370 ElementPass(PassManager *manager) : GenericPass(manager) { }
371
372 virtual bool shouldRun(const Element &element);
373 virtual void run(const Element &element) = 0;
374};
375
376class Q_QMLCOMPILER_EXPORT DebugElementPass : public ElementPass
377{
378 void run(const Element &element) override;
379};
380
381class Q_QMLCOMPILER_EXPORT DebugPropertyPass : public QQmlSA::PropertyPass
382{
383public:
384 DebugPropertyPass(QQmlSA::PassManager *manager);
385
386 void onRead(const QQmlSA::Element &element, const QString &propertyName,
387 const QQmlSA::Element &readScope, QQmlSA::SourceLocation location) override;
388 void onBinding(const QQmlSA::Element &element, const QString &propertyName,
389 const QQmlSA::Binding &binding, const QQmlSA::Element &bindingScope,
390 const QQmlSA::Element &value) override;
391 void onWrite(const QQmlSA::Element &element, const QString &propertyName,
392 const QQmlSA::Element &value, const QQmlSA::Element &writeScope,
393 QQmlSA::SourceLocation location) override;
394};
395
396class Q_QMLCOMPILER_EXPORT FixSuggestion
397{
398 Q_DECLARE_PRIVATE(FixSuggestion)
399
400public:
401 FixSuggestion(const QString &fixDescription, const QQmlSA::SourceLocation &location,
402 const QString &replacement = QString());
403 FixSuggestion(const FixSuggestion &);
404 FixSuggestion(FixSuggestion &&) noexcept;
405 FixSuggestion &operator=(const FixSuggestion &);
406 FixSuggestion &operator=(FixSuggestion &&) noexcept;
407 ~FixSuggestion();
408
409 QString fixDescription() const;
411 QString replacement() const;
412
413 void setFileName(const QString &);
414 QString fileName() const;
415
416 void setHint(const QString &);
417 QString hint() const;
418
419 void setAutoApplicable(bool autoApplicable = true);
420 bool isAutoApplicable() const;
421
422 friend bool operator==(const FixSuggestion &lhs, const FixSuggestion &rhs)
423 {
424 return operatorEqualsImpl(lhs, rhs);
425 }
426
427 friend bool operator!=(const FixSuggestion &lhs, const FixSuggestion &rhs)
428 {
429 return !operatorEqualsImpl(lhs, rhs);
430 }
431
432private:
433 static bool operatorEqualsImpl(const FixSuggestion &, const FixSuggestion &);
434
435 std::unique_ptr<FixSuggestionPrivate> d_ptr;
436};
437
438} // namespace QQmlSA
439
440#define QmlLintPluginInterface_iid "org.qt-project.Qt.Qml.SA.LintPlugin/1.0"
441
443
444QT_END_NAMESPACE
445
446#endif // QQMLSA_H
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
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)
virtual QQmlSourceLocation sourceLocation() const
\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
\inmodule QtQmlCompiler
Definition qqmlsa.h:368
\inmodule QtQmlCompiler
Definition qqmlsa.h:202
\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
\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
\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
\inmodule QtQmlCompiler
Definition qqmlsa.h:351
\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
AccessSemantics
Definition qqmlsa.h:49
Q_DECLARE_INTERFACE(QNetworkAccessBackendFactory, QNetworkAccessBackendFactory_iid)
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