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:
parent
14b93596a7
commit
7bc52d660c
|
@ -750,11 +750,13 @@ void PropertyChangesValidatorPass::run(const QQmlSA::Element &element)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QString targetId = u"<id>"_s;
|
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);
|
const QQmlSA::Element targetElement = resolveIdToElement(targetBinding, element);
|
||||||
if (!targetElement.isNull())
|
if (!targetElement.isNull())
|
||||||
targetId = targetBinding;
|
targetId = targetBinding;
|
||||||
|
|
||||||
|
bool hadCustomParsedBindings = false;
|
||||||
for (auto it = bindings.constBegin(); it != bindings.constEnd(); ++it) {
|
for (auto it = bindings.constBegin(); it != bindings.constEnd(); ++it) {
|
||||||
const auto &propertyName = it.key();
|
const auto &propertyName = it.key();
|
||||||
const auto &propertyBinding = it.value();
|
const auto &propertyBinding = it.value();
|
||||||
|
@ -773,11 +775,18 @@ void PropertyChangesValidatorPass::run(const QQmlSA::Element &element)
|
||||||
if (binding.length() > 16)
|
if (binding.length() > 16)
|
||||||
binding = binding.left(13) + "..."_L1;
|
binding = binding.left(13) + "..."_L1;
|
||||||
|
|
||||||
|
hadCustomParsedBindings = true;
|
||||||
emitWarning("Property \"%1\" is custom-parsed in PropertyChanges. "
|
emitWarning("Property \"%1\" is custom-parsed in PropertyChanges. "
|
||||||
"You should phrase this binding as \"%2.%1: %3\""_L1.arg(propertyName, targetId,
|
"You should phrase this binding as \"%2.%1: %3\""_L1.arg(propertyName, targetId,
|
||||||
binding),
|
binding),
|
||||||
quickPropertyChangesParsed, bindingLocation);
|
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
|
QT_END_NAMESPACE
|
||||||
|
|
|
@ -2058,6 +2058,11 @@ void TestQmllint::quickPlugin()
|
||||||
"You should phrase this binding as \"foo.myColor: Qt.rgba(0.5, ...\""_s,
|
"You should phrase this binding as \"foo.myColor: Qt.rgba(0.5, ...\""_s,
|
||||||
12, 30
|
12, 30
|
||||||
},
|
},
|
||||||
|
Message {
|
||||||
|
u"You should remove any bindings on the \"target\" property and avoid "
|
||||||
|
"custom-parsed bindings in PropertyChanges."_s,
|
||||||
|
11, 29
|
||||||
|
},
|
||||||
Message {
|
Message {
|
||||||
u"Unknown property \"notThere\" in PropertyChanges."_s,
|
u"Unknown property \"notThere\" in PropertyChanges."_s,
|
||||||
13, 31
|
13, 31
|
||||||
|
|
Loading…
Reference in New Issue