aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2020-10-02 11:17:29 +0200
committerUlf Hermann <ulf.hermann@qt.io>2020-10-02 15:31:59 +0200
commitfebb6ba891616b71476b736d4c583054685c7766 (patch)
tree4a9be0ab41fcb3f844d6460497da2448f78fd9b3 /tools
parentb1afde8ada7959b29acb4ac0fae87d7a8ae8aa08 (diff)
qmllint: Fix updating of parent property
We need to check for the baseTypeName, not for the internalName. Also, this is not really the scope's business but a property of how qmllint sets up its scopes. Task-number: QTBUG-87116 Change-Id: I8f0e558a4a5861164c6e85f90e3d88e469ea0769 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Evgeniy Dushistov <dushistov@mail.ru>
Diffstat (limited to 'tools')
-rw-r--r--tools/qmllint/findwarnings.cpp14
-rw-r--r--tools/shared/scopetree.cpp9
-rw-r--r--tools/shared/scopetree.h1
3 files changed, 13 insertions, 11 deletions
diff --git a/tools/qmllint/findwarnings.cpp b/tools/qmllint/findwarnings.cpp
index fb69756415..09ef63d4bd 100644
--- a/tools/qmllint/findwarnings.cpp
+++ b/tools/qmllint/findwarnings.cpp
@@ -902,7 +902,19 @@ void FindWarningVisitor::endVisit(QQmlJS::AST::UiObjectDefinition *)
{
auto childScope = m_currentScope;
leaveEnvironment();
- childScope->updateParentProperty(m_currentScope);
+
+ if (m_currentScope->baseTypeName() == QStringLiteral("Component")
+ || m_currentScope->baseTypeName() == QStringLiteral("program")) {
+ return;
+ }
+
+ const auto properties = childScope->properties();
+ const auto it = properties.find(QStringLiteral("parent"));
+ if (it != properties.end()) {
+ auto property = *it;
+ property.setType(m_currentScope);
+ childScope->addProperty(property);
+ }
}
bool FindWarningVisitor::visit(QQmlJS::AST::FieldMemberExpression *)
diff --git a/tools/shared/scopetree.cpp b/tools/shared/scopetree.cpp
index 2ae2dfe054..0ead08aa10 100644
--- a/tools/shared/scopetree.cpp
+++ b/tools/shared/scopetree.cpp
@@ -190,15 +190,6 @@ void ScopeTree::setExportMetaObjectRevision(int exportIndex, int metaObjectRevis
m_exports[exportIndex].setMetaObjectRevision(metaObjectRevision);
}
-void ScopeTree::updateParentProperty(const ScopeTree::ConstPtr &scope)
-{
- auto it = m_properties.find(QLatin1String("parent"));
- if (it != m_properties.end()
- && scope->baseTypeName() != QLatin1String("Component")
- && scope->internalName() != QLatin1String("program"))
- it->setType(scope);
-}
-
ScopeTree::Export::Export(QString package, QString type, const ComponentVersion &version,
int metaObjectRevision) :
m_package(std::move(package)),
diff --git a/tools/shared/scopetree.h b/tools/shared/scopetree.h
index ecb9646db2..b4c241d561 100644
--- a/tools/shared/scopetree.h
+++ b/tools/shared/scopetree.h
@@ -159,7 +159,6 @@ public:
void addProperty(const MetaProperty &prop) { m_properties.insert(prop.propertyName(), prop); }
QHash<QString, MetaProperty> properties() const { return m_properties; }
- void updateParentProperty(const ScopeTree::ConstPtr &scope);
QString defaultPropertyName() const { return m_defaultPropertyName; }
void setDefaultPropertyName(const QString &name) { m_defaultPropertyName = name; }