Turn base::optional's DCHECKs into CHECKs.
We really want to catch such errors. (std::optional throws an exception in some of these cases.) Change-Id: I7f8c3aff38aed1b3cbe52bcfb92062268fd3b201 Reviewed-on: https://chromium-review.googlesource.com/1177387 Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#55158}
This commit is contained in:
parent
4aa3ad271b
commit
8d7fb5143c
@ -182,16 +182,16 @@ class Optional {
|
||||
return *this;
|
||||
}
|
||||
|
||||
// TODO(mlamouri): can't use 'constexpr' with DCHECK.
|
||||
// TODO(mlamouri): can't use 'constexpr' with CHECK.
|
||||
const T* operator->() const {
|
||||
DCHECK(!storage_.is_null_);
|
||||
CHECK(!storage_.is_null_);
|
||||
return &value();
|
||||
}
|
||||
|
||||
// TODO(mlamouri): using 'constexpr' here breaks compiler that assume it was
|
||||
// meant to be 'constexpr const'.
|
||||
T* operator->() {
|
||||
DCHECK(!storage_.is_null_);
|
||||
CHECK(!storage_.is_null_);
|
||||
return &value();
|
||||
}
|
||||
|
||||
@ -214,26 +214,26 @@ class Optional {
|
||||
// TODO(mlamouri): using 'constexpr' here breaks compiler that assume it was
|
||||
// meant to be 'constexpr const'.
|
||||
T& value() & {
|
||||
DCHECK(!storage_.is_null_);
|
||||
CHECK(!storage_.is_null_);
|
||||
return storage_.value_;
|
||||
}
|
||||
|
||||
// TODO(mlamouri): can't use 'constexpr' with DCHECK.
|
||||
// TODO(mlamouri): can't use 'constexpr' with CHECK.
|
||||
const T& value() const & {
|
||||
DCHECK(!storage_.is_null_);
|
||||
CHECK(!storage_.is_null_);
|
||||
return storage_.value_;
|
||||
}
|
||||
|
||||
// TODO(mlamouri): using 'constexpr' here breaks compiler that assume it was
|
||||
// meant to be 'constexpr const'.
|
||||
T&& value() && {
|
||||
DCHECK(!storage_.is_null_);
|
||||
CHECK(!storage_.is_null_);
|
||||
return std::move(storage_.value_);
|
||||
}
|
||||
|
||||
// TODO(mlamouri): can't use 'constexpr' with DCHECK.
|
||||
// TODO(mlamouri): can't use 'constexpr' with CHECK.
|
||||
const T&& value() const && {
|
||||
DCHECK(!storage_.is_null_);
|
||||
CHECK(!storage_.is_null_);
|
||||
return std::move(storage_.value_);
|
||||
}
|
||||
|
||||
@ -273,7 +273,7 @@ class Optional {
|
||||
return;
|
||||
}
|
||||
|
||||
DCHECK(!storage_.is_null_ && !other.storage_.is_null_);
|
||||
CHECK(!storage_.is_null_ && !other.storage_.is_null_);
|
||||
using std::swap;
|
||||
swap(**this, *other);
|
||||
}
|
||||
@ -288,20 +288,20 @@ class Optional {
|
||||
|
||||
private:
|
||||
void Init(const T& value) {
|
||||
DCHECK(storage_.is_null_);
|
||||
CHECK(storage_.is_null_);
|
||||
new (&storage_.value_) T(value);
|
||||
storage_.is_null_ = false;
|
||||
}
|
||||
|
||||
void Init(T&& value) {
|
||||
DCHECK(storage_.is_null_);
|
||||
CHECK(storage_.is_null_);
|
||||
new (&storage_.value_) T(std::move(value));
|
||||
storage_.is_null_ = false;
|
||||
}
|
||||
|
||||
template <class... Args>
|
||||
void Init(Args&&... args) {
|
||||
DCHECK(storage_.is_null_);
|
||||
CHECK(storage_.is_null_);
|
||||
new (&storage_.value_) T(std::forward<Args>(args)...);
|
||||
storage_.is_null_ = false;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user