aboutsummaryrefslogtreecommitdiffstats
path: root/tools/qmllint
diff options
context:
space:
mode:
authorEvgeniy A. Dushistov <dushistov@mail.ru>2020-06-16 23:52:24 +0300
committerEvgeniy A. Dushistov <dushistov@mail.ru>2020-06-17 14:04:42 +0300
commit3615c72b666633cef9045012bbb05d5372c35cdf (patch)
tree8c6a456db529bd46e2bec9f6b23e0990c8e4fd2f /tools/qmllint
parent1b10ce6a08edbc2ac7e8fd7e97e3fc691f2081df (diff)
qmllint: fix wrong warning about enum usage
Fixes: QTBUG-83796 Change-Id: I635bbfd98cf7be8418b454626ba7725e92b71c2c Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'tools/qmllint')
-rw-r--r--tools/qmllint/checkidentifiers.cpp6
-rw-r--r--tools/qmllint/importedmembersvisitor.cpp12
-rw-r--r--tools/qmllint/importedmembersvisitor.h1
3 files changed, 19 insertions, 0 deletions
diff --git a/tools/qmllint/checkidentifiers.cpp b/tools/qmllint/checkidentifiers.cpp
index 32c2fa4d79..e1593182ab 100644
--- a/tools/qmllint/checkidentifiers.cpp
+++ b/tools/qmllint/checkidentifiers.cpp
@@ -173,6 +173,12 @@ bool CheckIdentifiers::checkMemberAccess(const QVector<ScopeTree::FieldMember> &
const auto enums = scope->enums();
for (const auto &enumerator : enums) {
+ if (enumerator.name() == access.m_name) {
+ detectedRestrictiveKind = QLatin1String("enum");
+ detectedRestrictiveName = access.m_name;
+ expectedNext.append(enumerator.keys());
+ break;
+ }
for (const QString &key : enumerator.keys()) {
if (access.m_name == key) {
detectedRestrictiveKind = QLatin1String("enum");
diff --git a/tools/qmllint/importedmembersvisitor.cpp b/tools/qmllint/importedmembersvisitor.cpp
index bf3787d489..7bc58dee24 100644
--- a/tools/qmllint/importedmembersvisitor.cpp
+++ b/tools/qmllint/importedmembersvisitor.cpp
@@ -51,6 +51,9 @@ ScopeTree::Ptr ImportedMembersVisitor::result(const QString &scopeName) const
for (const auto &method : m_rootObject->methods())
result->addMethod(method);
+ for (const auto &enumerator : m_rootObject->enums())
+ result->addEnum(enumerator);
+
return result;
}
@@ -151,6 +154,15 @@ bool ImportedMembersVisitor::visit(UiScriptBinding *scriptBinding)
return true;
}
+bool ImportedMembersVisitor::visit(QQmlJS::AST::UiEnumDeclaration *uied)
+{
+ MetaEnum qmlEnum(uied->name.toString());
+ for (const auto *member = uied->members; member; member = member->next)
+ qmlEnum.addKey(member->member.toString());
+ currentObject()->addEnum(qmlEnum);
+ return true;
+}
+
void ImportedMembersVisitor::throwRecursionDepthError()
{
m_colorOut->write(QStringLiteral("Error"), Error);
diff --git a/tools/qmllint/importedmembersvisitor.h b/tools/qmllint/importedmembersvisitor.h
index 045ba00420..023e58df73 100644
--- a/tools/qmllint/importedmembersvisitor.h
+++ b/tools/qmllint/importedmembersvisitor.h
@@ -59,6 +59,7 @@ private:
bool visit(QQmlJS::AST::UiPublicMember *) override;
bool visit(QQmlJS::AST::UiSourceElement *) override;
bool visit(QQmlJS::AST::UiScriptBinding *) override;
+ bool visit(QQmlJS::AST::UiEnumDeclaration *uied) override;
void throwRecursionDepthError() override;
ScopeTree::Ptr currentObject() const { return m_currentObjects.back(); }