diff options
author | Evgeniy A. Dushistov <dushistov@mail.ru> | 2020-06-16 23:52:24 +0300 |
---|---|---|
committer | Evgeniy A. Dushistov <dushistov@mail.ru> | 2020-06-17 14:04:42 +0300 |
commit | 3615c72b666633cef9045012bbb05d5372c35cdf (patch) | |
tree | 8c6a456db529bd46e2bec9f6b23e0990c8e4fd2f /tools/qmllint | |
parent | 1b10ce6a08edbc2ac7e8fd7e97e3fc691f2081df (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.cpp | 6 | ||||
-rw-r--r-- | tools/qmllint/importedmembersvisitor.cpp | 12 | ||||
-rw-r--r-- | tools/qmllint/importedmembersvisitor.h | 1 |
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(); } |