From 0d1208f0f08727c55de9eed8e0ceef092080b927 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Tue, 7 Jul 2020 21:34:57 +0200 Subject: [PATCH] Cleanup QPropertyBindingError Remove location(). The method would always return an empty value. If you need the location, the binding itself has it. Remove setDescription() and require that the description gets passed in the constructor. Never create a d pointer if type is NoError, so we can quickly check for it inline. Change-Id: I7eb8a94786281069d6ea2d82567c09aa50c52ef6 Reviewed-by: Fabian Kosmale --- src/corelib/kernel/qproperty.cpp | 21 ++++++------------- src/corelib/kernel/qproperty.h | 7 ++++--- src/corelib/kernel/qproperty_p.h | 1 - .../kernel/qproperty/tst_qproperty.cpp | 3 +-- 4 files changed, 11 insertions(+), 21 deletions(-) diff --git a/src/corelib/kernel/qproperty.cpp b/src/corelib/kernel/qproperty.cpp index beba05c01e..92c9afc6d8 100644 --- a/src/corelib/kernel/qproperty.cpp +++ b/src/corelib/kernel/qproperty.cpp @@ -384,11 +384,16 @@ void QPropertyObserverPointer::observeProperty(QPropertyBasePointer property) property.addObserver(ptr); } -QPropertyBindingError::QPropertyBindingError(Type type) +QPropertyBindingError::QPropertyBindingError() +{ +} + +QPropertyBindingError::QPropertyBindingError(Type type, const QString &description) { if (type != NoError) { d = new QPropertyBindingErrorPrivate; d->type = type; + d->description = description; } } @@ -425,13 +430,6 @@ QPropertyBindingError::Type QPropertyBindingError::type() const return d->type; } -void QPropertyBindingError::setDescription(const QString &description) -{ - if (!d) - d = new QPropertyBindingErrorPrivate; - d->description = description; -} - QString QPropertyBindingError::description() const { if (!d) @@ -439,13 +437,6 @@ QString QPropertyBindingError::description() const return d->description; } -QPropertyBindingSourceLocation QPropertyBindingError::location() const -{ - if (!d) - return QPropertyBindingSourceLocation(); - return d->location; -} - /*! \class QProperty \inmodule QtCore diff --git a/src/corelib/kernel/qproperty.h b/src/corelib/kernel/qproperty.h index 994eb24cea..986c6afbc9 100644 --- a/src/corelib/kernel/qproperty.h +++ b/src/corelib/kernel/qproperty.h @@ -99,17 +99,18 @@ public: UnknownError }; - QPropertyBindingError(Type type = NoError); + QPropertyBindingError(); + QPropertyBindingError(Type type, const QString &description = QString()); + QPropertyBindingError(const QPropertyBindingError &other); QPropertyBindingError &operator=(const QPropertyBindingError &other); QPropertyBindingError(QPropertyBindingError &&other); QPropertyBindingError &operator=(QPropertyBindingError &&other); ~QPropertyBindingError(); + bool hasError() const { return d.get() != nullptr; } Type type() const; - void setDescription(const QString &description); QString description() const; - QPropertyBindingSourceLocation location() const; private: QSharedDataPointer d; diff --git a/src/corelib/kernel/qproperty_p.h b/src/corelib/kernel/qproperty_p.h index f15181a0ae..7b9d7c207f 100644 --- a/src/corelib/kernel/qproperty_p.h +++ b/src/corelib/kernel/qproperty_p.h @@ -103,7 +103,6 @@ class QPropertyBindingErrorPrivate : public QSharedData public: QPropertyBindingError::Type type = QPropertyBindingError::NoError; QString description; - QPropertyBindingSourceLocation location; }; struct BindingEvaluationState diff --git a/tests/auto/corelib/kernel/qproperty/tst_qproperty.cpp b/tests/auto/corelib/kernel/qproperty/tst_qproperty.cpp index 96cf6da4bb..50a8d51a46 100644 --- a/tests/auto/corelib/kernel/qproperty/tst_qproperty.cpp +++ b/tests/auto/corelib/kernel/qproperty/tst_qproperty.cpp @@ -506,8 +506,7 @@ void tst_QProperty::bindingSourceLocation() void tst_QProperty::bindingError() { QProperty prop = Qt::makePropertyBinding([]() -> std::variant { - QPropertyBindingError error(QPropertyBindingError::UnknownError); - error.setDescription(QLatin1String("my error")); + QPropertyBindingError error(QPropertyBindingError::UnknownError, QLatin1String("my error")); return error; }); QCOMPARE(prop.value(), 0);