diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2024-01-30 16:13:29 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2024-01-31 09:36:41 +0100 |
commit | 7bc52d660c692bf727c1741e1b9981e5b337f45f (patch) | |
tree | 99cd7fdfc9eff939dc5e588d2667a2ac6c2755e3 | |
parent | 14b93596a70d1b9381eec3bb6ada7f275e3e99b2 (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.cpp | 11 | ||||
-rw-r--r-- | tests/auto/qml/qmllint/tst_qmllint.cpp | 5 |
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 } |