aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2024-01-30 16:13:29 +0100
committerUlf Hermann <ulf.hermann@qt.io>2024-01-31 09:36:41 +0100
commit7bc52d660c692bf727c1741e1b9981e5b337f45f (patch)
tree99cd7fdfc9eff939dc5e588d2667a2ac6c2755e3
parent14b93596a70d1b9381eec3bb6ada7f275e3e99b2 (diff)
qmllint: Complain about "target" when complaining about PropertyChanges
You should remove the binding on the target property, too, after rephrasing the binding. Pick-to: 6.7 6.6 6.5 Fixes: QTBUG-113695 Change-Id: I917f506c932605ae5851ae09f4383af59a3cae1e Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
-rw-r--r--src/plugins/qmllint/quick/quicklintplugin.cpp11
-rw-r--r--tests/auto/qml/qmllint/tst_qmllint.cpp5
2 files changed, 15 insertions, 1 deletions
diff --git a/src/plugins/qmllint/quick/quicklintplugin.cpp b/src/plugins/qmllint/quick/quicklintplugin.cpp
index 5452b84dfb..7735a8e596 100644
--- a/src/plugins/qmllint/quick/quicklintplugin.cpp
+++ b/src/plugins/qmllint/quick/quicklintplugin.cpp
@@ -750,11 +750,13 @@ void PropertyChangesValidatorPass::run(const QQmlSA::Element &element)
return;
QString targetId = u"<id>"_s;
- const QString targetBinding = sourceCode(target.value().sourceLocation());
+ const auto targetLocation = target.value().sourceLocation();
+ const QString targetBinding = sourceCode(targetLocation);
const QQmlSA::Element targetElement = resolveIdToElement(targetBinding, element);
if (!targetElement.isNull())
targetId = targetBinding;
+ bool hadCustomParsedBindings = false;
for (auto it = bindings.constBegin(); it != bindings.constEnd(); ++it) {
const auto &propertyName = it.key();
const auto &propertyBinding = it.value();
@@ -773,11 +775,18 @@ void PropertyChangesValidatorPass::run(const QQmlSA::Element &element)
if (binding.length() > 16)
binding = binding.left(13) + "..."_L1;
+ hadCustomParsedBindings = true;
emitWarning("Property \"%1\" is custom-parsed in PropertyChanges. "
"You should phrase this binding as \"%2.%1: %3\""_L1.arg(propertyName, targetId,
binding),
quickPropertyChangesParsed, bindingLocation);
}
+
+ if (hadCustomParsedBindings && !targetElement.isNull()) {
+ emitWarning("You should remove any bindings on the \"target\" property and avoid "
+ "custom-parsed bindings in PropertyChanges.",
+ quickPropertyChangesParsed, targetLocation);
+ }
}
QT_END_NAMESPACE
diff --git a/tests/auto/qml/qmllint/tst_qmllint.cpp b/tests/auto/qml/qmllint/tst_qmllint.cpp
index 3ab57903d6..98efac11a6 100644
--- a/tests/auto/qml/qmllint/tst_qmllint.cpp
+++ b/tests/auto/qml/qmllint/tst_qmllint.cpp
@@ -2059,6 +2059,11 @@ void TestQmllint::quickPlugin()
12, 30
},
Message {
+ u"You should remove any bindings on the \"target\" property and avoid "
+ "custom-parsed bindings in PropertyChanges."_s,
+ 11, 29
+ },
+ Message {
u"Unknown property \"notThere\" in PropertyChanges."_s,
13, 31
}