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>
This commit is contained in:
Ulf Hermann 2024-01-30 16:13:29 +01:00
parent 14b93596a7
commit 7bc52d660c
2 changed files with 15 additions and 1 deletions

View File

@ -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

View File

@ -2058,6 +2058,11 @@ void TestQmllint::quickPlugin()
"You should phrase this binding as \"foo.myColor: Qt.rgba(0.5, ...\""_s,
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