mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 05:07:45 +00:00
AK: Resolve clang-tidy warnings about unusual assignment operators
Either not returning *this, or in the case of Variant, not checking for self assignment. In AK::Atomic, we can't return *this due to the wrapper semantics Atomic implements.
This commit is contained in:
parent
22feb9d47b
commit
163367da39
3 changed files with 17 additions and 9 deletions
|
@ -187,6 +187,7 @@ public:
|
||||||
return *ret;
|
return *ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOLINTNEXTLINE(misc-unconventional-assign-operator) We want operator= to exchange the value, so returning an object of type Atomic& here does not make sense
|
||||||
ALWAYS_INLINE T operator=(T desired) volatile noexcept
|
ALWAYS_INLINE T operator=(T desired) volatile noexcept
|
||||||
{
|
{
|
||||||
store(desired);
|
store(desired);
|
||||||
|
@ -317,6 +318,7 @@ public:
|
||||||
return __atomic_load_n(&m_value, order);
|
return __atomic_load_n(&m_value, order);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOLINTNEXTLINE(misc-unconventional-assign-operator) We want operator= to exchange the value, so returning an object of type Atomic& here does not make sense
|
||||||
ALWAYS_INLINE T operator=(T desired) volatile noexcept
|
ALWAYS_INLINE T operator=(T desired) volatile noexcept
|
||||||
{
|
{
|
||||||
store(desired);
|
store(desired);
|
||||||
|
@ -417,6 +419,7 @@ public:
|
||||||
return __atomic_load_n(&m_value, order);
|
return __atomic_load_n(&m_value, order);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOLINTNEXTLINE(misc-unconventional-assign-operator) We want operator= to exchange the value, so returning an object of type Atomic& here does not make sense
|
||||||
T* operator=(T* desired) volatile noexcept
|
T* operator=(T* desired) volatile noexcept
|
||||||
{
|
{
|
||||||
store(desired);
|
store(desired);
|
||||||
|
|
|
@ -138,7 +138,8 @@ public:
|
||||||
template<typename U>
|
template<typename U>
|
||||||
constexpr Checked& operator=(U value)
|
constexpr Checked& operator=(U value)
|
||||||
{
|
{
|
||||||
return *this = Checked(value);
|
*this = Checked(value);
|
||||||
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
constexpr Checked& operator=(const Checked& other) = default;
|
constexpr Checked& operator=(const Checked& other) = default;
|
||||||
|
|
20
AK/Variant.h
20
AK/Variant.h
|
@ -271,11 +271,13 @@ public:
|
||||||
requires(!(IsTriviallyCopyConstructible<Ts> && ...) || !(IsTriviallyDestructible<Ts> && ...))
|
requires(!(IsTriviallyCopyConstructible<Ts> && ...) || !(IsTriviallyDestructible<Ts> && ...))
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
if constexpr (!(IsTriviallyDestructible<Ts> && ...)) {
|
if (this != &other) {
|
||||||
Helper::delete_(m_index, m_data);
|
if constexpr (!(IsTriviallyDestructible<Ts> && ...)) {
|
||||||
|
Helper::delete_(m_index, m_data);
|
||||||
|
}
|
||||||
|
m_index = other.m_index;
|
||||||
|
Helper::copy_(other.m_index, other.m_data, m_data);
|
||||||
}
|
}
|
||||||
m_index = other.m_index;
|
|
||||||
Helper::copy_(other.m_index, other.m_data, m_data);
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -284,11 +286,13 @@ public:
|
||||||
requires(!(IsTriviallyMoveConstructible<Ts> && ...) || !(IsTriviallyDestructible<Ts> && ...))
|
requires(!(IsTriviallyMoveConstructible<Ts> && ...) || !(IsTriviallyDestructible<Ts> && ...))
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
if constexpr (!(IsTriviallyDestructible<Ts> && ...)) {
|
if (this != &other) {
|
||||||
Helper::delete_(m_index, m_data);
|
if constexpr (!(IsTriviallyDestructible<Ts> && ...)) {
|
||||||
|
Helper::delete_(m_index, m_data);
|
||||||
|
}
|
||||||
|
m_index = other.m_index;
|
||||||
|
Helper::move_(other.m_index, other.m_data, m_data);
|
||||||
}
|
}
|
||||||
m_index = other.m_index;
|
|
||||||
Helper::move_(other.m_index, other.m_data, m_data);
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue