QOrderedMutexLocker: plaster with [[nodiscard]]

It's a RAII class, and RAII classes should be marked [[nodiscard]] at
the class as well as the ctor level.

Task-number: QTBUG-104164
Change-Id: Ie88023ba7c57dad7c2116c1c19a80b908b3a9f4d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
(cherry picked from commit 123118f82958bb48cb9cf5f46b72c0298fe8c7f3)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Marc Mutz 2023-06-13 09:34:12 +02:00 committed by Qt Cherry-pick Bot
parent 281e067a62
commit ecdd82ac34

View File

@ -28,9 +28,10 @@ QT_BEGIN_NAMESPACE
Locks 2 mutexes in a defined order, avoiding a recursive lock if Locks 2 mutexes in a defined order, avoiding a recursive lock if
we're trying to lock the same mutex twice. we're trying to lock the same mutex twice.
*/ */
class QOrderedMutexLocker class [[nodiscard]] QOrderedMutexLocker
{ {
public: public:
Q_NODISCARD_CTOR
QOrderedMutexLocker(QBasicMutex *m1, QBasicMutex *m2) QOrderedMutexLocker(QBasicMutex *m1, QBasicMutex *m2)
: mtx1((m1 == m2) ? m1 : (std::less<QBasicMutex *>()(m1, m2) ? m1 : m2)), : mtx1((m1 == m2) ? m1 : (std::less<QBasicMutex *>()(m1, m2) ? m1 : m2)),
mtx2((m1 == m2) ? nullptr : (std::less<QBasicMutex *>()(m1, m2) ? m2 : m1)), mtx2((m1 == m2) ? nullptr : (std::less<QBasicMutex *>()(m1, m2) ? m2 : m1)),
@ -50,6 +51,7 @@ public:
QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_MOVE_AND_SWAP(QOrderedMutexLocker) QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_MOVE_AND_SWAP(QOrderedMutexLocker)
Q_NODISCARD_CTOR
QOrderedMutexLocker(QOrderedMutexLocker &&other) noexcept QOrderedMutexLocker(QOrderedMutexLocker &&other) noexcept
: mtx1(std::exchange(other.mtx1, nullptr)) : mtx1(std::exchange(other.mtx1, nullptr))
, mtx2(std::exchange(other.mtx2, nullptr)) , mtx2(std::exchange(other.mtx2, nullptr))
@ -147,11 +149,13 @@ private:
#else #else
class QOrderedMutexLocker class [[nodiscard]] QOrderedMutexLocker
{ {
public: public:
Q_DISABLE_COPY(QOrderedMutexLocker) Q_DISABLE_COPY(QOrderedMutexLocker)
Q_NODISCARD_CTOR
QOrderedMutexLocker(QBasicMutex *, QBasicMutex *) {} QOrderedMutexLocker(QBasicMutex *, QBasicMutex *) {}
Q_NODISCARD_CTOR
QOrderedMutexLocker(QOrderedMutexLocker &&) = default; QOrderedMutexLocker(QOrderedMutexLocker &&) = default;
QOrderedMutexLocker& operator=(QOrderedMutexLocker &&other) = default; QOrderedMutexLocker& operator=(QOrderedMutexLocker &&other) = default;
~QOrderedMutexLocker() {} ~QOrderedMutexLocker() {}