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>
This commit is contained in:
parent
1b10ce6a08
commit
3615c72b66
|
@ -0,0 +1,9 @@
|
|||
import QtQuick 2.0
|
||||
|
||||
Item {
|
||||
enum Status {
|
||||
On, Off
|
||||
}
|
||||
|
||||
property int status: EnumAccess1.Off
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
import QtQuick 2.0
|
||||
|
||||
Item {
|
||||
enum Status {
|
||||
On, Off
|
||||
}
|
||||
|
||||
property int status: EnumAccess1.Status.Off
|
||||
}
|
|
@ -220,6 +220,8 @@ void TestQmllint::cleanQmlCode_data()
|
|||
QTest::newRow("unknownBuiltinFont") << QStringLiteral("ButtonLoader.qml");
|
||||
QTest::newRow("confusingImport") << QStringLiteral("Dialog.qml");
|
||||
QTest::newRow("qualifiedAttached") << QStringLiteral("Drawer.qml");
|
||||
QTest::newRow("EnumAccess1") << QStringLiteral("EnumAccess1.qml");
|
||||
QTest::newRow("EnumAccess2") << QStringLiteral("EnumAccess2.qml");
|
||||
}
|
||||
|
||||
void TestQmllint::cleanQmlCode()
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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(); }
|
||||
|
|
Loading…
Reference in New Issue