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>
This commit is contained in:
parent
b1afde8ada
commit
febb6ba891
|
@ -0,0 +1,6 @@
|
|||
import QtQuick 2.15
|
||||
|
||||
Rectangle {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
import QtQuick 2.15
|
||||
|
||||
Rectangle {
|
||||
nanchors.horizontalCenter: parent.horizontalCenter
|
||||
nanchors.verticalCenter: parent.verticalCenter
|
||||
}
|
|
@ -203,6 +203,10 @@ void TestQmllint::dirtyQmlCode_data()
|
|||
<< QStringLiteral("nanchors1.qml")
|
||||
<< QString()
|
||||
<< QString();
|
||||
QTest::newRow("nanchors2")
|
||||
<< QStringLiteral("nanchors2.qml")
|
||||
<< QString()
|
||||
<< QString();
|
||||
QTest::newRow("nanchors3")
|
||||
<< QStringLiteral("nanchors3.qml")
|
||||
<< QString()
|
||||
|
@ -221,6 +225,7 @@ void TestQmllint::dirtyQmlCode()
|
|||
QVERIFY(process.waitForFinished());
|
||||
QCOMPARE(process.exitStatus(), QProcess::NormalExit);
|
||||
QEXPECT_FAIL("nanchors1", "Invalid grouped properties are not detected", Abort);
|
||||
QEXPECT_FAIL("nanchors2", "Invalid grouped properties are not detected", Abort);
|
||||
QEXPECT_FAIL("nanchors3", "Invalid grouped properties are not detected", Abort);
|
||||
QVERIFY(process.exitCode() != 0);
|
||||
});
|
||||
|
@ -262,6 +267,7 @@ void TestQmllint::cleanQmlCode_data()
|
|||
<< QStringLiteral("javascriptMethodsInModuleGood.qml");
|
||||
QTest::newRow("enumFromQtQml") << QStringLiteral("enumFromQtQml.qml");
|
||||
QTest::newRow("anchors1") << QStringLiteral("anchors1.qml");
|
||||
QTest::newRow("anchors2") << QStringLiteral("anchors2.qml");
|
||||
QTest::newRow("anchors3") << QStringLiteral("anchors3.qml");
|
||||
}
|
||||
|
||||
|
|
|
@ -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 *)
|
||||
|
|
|
@ -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)),
|
||||
|
|
|
@ -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; }
|
||||
|
|
Loading…
Reference in New Issue