- abe587c2360b21f085b7d65a77d840015bc04cf6 Factor an internal interface into its own header, as it w... by Greg Falcon <gfalcon@google.com>
- 2201f1644336e64280dbd20207d8fbc3bfea2bf4 Internal change. by Abseil Team <absl-team@google.com> - 94e6b5b20d2cc754c99a18c575a4f1f3cd1f28d4 Rename no_throw_ctor to nothrow_ctor to match the standar... by Abseil Team <absl-team@google.com> - 86aa34d2129c4914c5133b7b619480aae786288e Update header files in debugging target by Tom Manshreck <shreck@google.com> - ed234519ced458724a7267b8fdf184eaae1c97c7 Remove CMAKE_CXX_WARNING_VLA from our c++ flags in the cm... by Jon Cohen <cohenjon@google.com> GitOrigin-RevId: abe587c2360b21f085b7d65a77d840015bc04cf6 Change-Id: I92f9301c69419d3830c358b88984967185aa33f6
This commit is contained in:
parent
add89fd0e4
commit
04dd99d8c1
13 changed files with 277 additions and 115 deletions
|
@ -19,7 +19,12 @@
|
|||
|
||||
namespace testing {
|
||||
|
||||
exceptions_internal::NoThrowTag no_throw_ctor;
|
||||
exceptions_internal::NoThrowTag nothrow_ctor;
|
||||
|
||||
bool nothrow_guarantee(const void*) {
|
||||
return ::testing::AssertionFailure()
|
||||
<< "Exception thrown violating NoThrow Guarantee";
|
||||
}
|
||||
exceptions_internal::StrongGuaranteeTagType strong_guarantee;
|
||||
|
||||
namespace exceptions_internal {
|
||||
|
|
|
@ -227,7 +227,9 @@ inline absl::optional<testing::AssertionResult> TestAllInvariantsAtCountdown(
|
|||
|
||||
} // namespace exceptions_internal
|
||||
|
||||
extern exceptions_internal::NoThrowTag no_throw_ctor;
|
||||
extern exceptions_internal::NoThrowTag nothrow_ctor;
|
||||
|
||||
bool nothrow_guarantee(const void*);
|
||||
extern exceptions_internal::StrongGuaranteeTagType strong_guarantee;
|
||||
|
||||
// A test class which is convertible to bool. The conversion can be
|
||||
|
@ -246,7 +248,7 @@ class ThrowingBool {
|
|||
|
||||
/*
|
||||
* Configuration enum for the ThrowingValue type that defines behavior for the
|
||||
* lifetime of the instance. Use testing::no_throw_ctor to prevent the integer
|
||||
* lifetime of the instance. Use testing::nothrow_ctor to prevent the integer
|
||||
* constructor from throwing.
|
||||
*
|
||||
* kEverythingThrows: Every operation can throw an exception
|
||||
|
@ -341,22 +343,22 @@ class ThrowingValue : private exceptions_internal::TrackedObject {
|
|||
// Arithmetic Operators
|
||||
ThrowingValue operator+(const ThrowingValue& other) const {
|
||||
exceptions_internal::MaybeThrow(ABSL_PRETTY_FUNCTION);
|
||||
return ThrowingValue(dummy_ + other.dummy_, no_throw_ctor);
|
||||
return ThrowingValue(dummy_ + other.dummy_, nothrow_ctor);
|
||||
}
|
||||
|
||||
ThrowingValue operator+() const {
|
||||
exceptions_internal::MaybeThrow(ABSL_PRETTY_FUNCTION);
|
||||
return ThrowingValue(dummy_, no_throw_ctor);
|
||||
return ThrowingValue(dummy_, nothrow_ctor);
|
||||
}
|
||||
|
||||
ThrowingValue operator-(const ThrowingValue& other) const {
|
||||
exceptions_internal::MaybeThrow(ABSL_PRETTY_FUNCTION);
|
||||
return ThrowingValue(dummy_ - other.dummy_, no_throw_ctor);
|
||||
return ThrowingValue(dummy_ - other.dummy_, nothrow_ctor);
|
||||
}
|
||||
|
||||
ThrowingValue operator-() const {
|
||||
exceptions_internal::MaybeThrow(ABSL_PRETTY_FUNCTION);
|
||||
return ThrowingValue(-dummy_, no_throw_ctor);
|
||||
return ThrowingValue(-dummy_, nothrow_ctor);
|
||||
}
|
||||
|
||||
ThrowingValue& operator++() {
|
||||
|
@ -367,7 +369,7 @@ class ThrowingValue : private exceptions_internal::TrackedObject {
|
|||
|
||||
ThrowingValue operator++(int) {
|
||||
exceptions_internal::MaybeThrow(ABSL_PRETTY_FUNCTION);
|
||||
auto out = ThrowingValue(dummy_, no_throw_ctor);
|
||||
auto out = ThrowingValue(dummy_, nothrow_ctor);
|
||||
++dummy_;
|
||||
return out;
|
||||
}
|
||||
|
@ -380,34 +382,34 @@ class ThrowingValue : private exceptions_internal::TrackedObject {
|
|||
|
||||
ThrowingValue operator--(int) {
|
||||
exceptions_internal::MaybeThrow(ABSL_PRETTY_FUNCTION);
|
||||
auto out = ThrowingValue(dummy_, no_throw_ctor);
|
||||
auto out = ThrowingValue(dummy_, nothrow_ctor);
|
||||
--dummy_;
|
||||
return out;
|
||||
}
|
||||
|
||||
ThrowingValue operator*(const ThrowingValue& other) const {
|
||||
exceptions_internal::MaybeThrow(ABSL_PRETTY_FUNCTION);
|
||||
return ThrowingValue(dummy_ * other.dummy_, no_throw_ctor);
|
||||
return ThrowingValue(dummy_ * other.dummy_, nothrow_ctor);
|
||||
}
|
||||
|
||||
ThrowingValue operator/(const ThrowingValue& other) const {
|
||||
exceptions_internal::MaybeThrow(ABSL_PRETTY_FUNCTION);
|
||||
return ThrowingValue(dummy_ / other.dummy_, no_throw_ctor);
|
||||
return ThrowingValue(dummy_ / other.dummy_, nothrow_ctor);
|
||||
}
|
||||
|
||||
ThrowingValue operator%(const ThrowingValue& other) const {
|
||||
exceptions_internal::MaybeThrow(ABSL_PRETTY_FUNCTION);
|
||||
return ThrowingValue(dummy_ % other.dummy_, no_throw_ctor);
|
||||
return ThrowingValue(dummy_ % other.dummy_, nothrow_ctor);
|
||||
}
|
||||
|
||||
ThrowingValue operator<<(int shift) const {
|
||||
exceptions_internal::MaybeThrow(ABSL_PRETTY_FUNCTION);
|
||||
return ThrowingValue(dummy_ << shift, no_throw_ctor);
|
||||
return ThrowingValue(dummy_ << shift, nothrow_ctor);
|
||||
}
|
||||
|
||||
ThrowingValue operator>>(int shift) const {
|
||||
exceptions_internal::MaybeThrow(ABSL_PRETTY_FUNCTION);
|
||||
return ThrowingValue(dummy_ >> shift, no_throw_ctor);
|
||||
return ThrowingValue(dummy_ >> shift, nothrow_ctor);
|
||||
}
|
||||
|
||||
// Comparison Operators
|
||||
|
@ -463,22 +465,22 @@ class ThrowingValue : private exceptions_internal::TrackedObject {
|
|||
// Bitwise Logical Operators
|
||||
ThrowingValue operator~() const {
|
||||
exceptions_internal::MaybeThrow(ABSL_PRETTY_FUNCTION);
|
||||
return ThrowingValue(~dummy_, no_throw_ctor);
|
||||
return ThrowingValue(~dummy_, nothrow_ctor);
|
||||
}
|
||||
|
||||
ThrowingValue operator&(const ThrowingValue& other) const {
|
||||
exceptions_internal::MaybeThrow(ABSL_PRETTY_FUNCTION);
|
||||
return ThrowingValue(dummy_ & other.dummy_, no_throw_ctor);
|
||||
return ThrowingValue(dummy_ & other.dummy_, nothrow_ctor);
|
||||
}
|
||||
|
||||
ThrowingValue operator|(const ThrowingValue& other) const {
|
||||
exceptions_internal::MaybeThrow(ABSL_PRETTY_FUNCTION);
|
||||
return ThrowingValue(dummy_ | other.dummy_, no_throw_ctor);
|
||||
return ThrowingValue(dummy_ | other.dummy_, nothrow_ctor);
|
||||
}
|
||||
|
||||
ThrowingValue operator^(const ThrowingValue& other) const {
|
||||
exceptions_internal::MaybeThrow(ABSL_PRETTY_FUNCTION);
|
||||
return ThrowingValue(dummy_ ^ other.dummy_, no_throw_ctor);
|
||||
return ThrowingValue(dummy_ ^ other.dummy_, nothrow_ctor);
|
||||
}
|
||||
|
||||
// Compound Assignment operators
|
||||
|
@ -1034,12 +1036,6 @@ MakeExceptionSafetyTester() {
|
|||
return {};
|
||||
}
|
||||
|
||||
// Always return false, intended to be used as a checker with
|
||||
// TestExceptionSafety() to check that no exception is thrown.
|
||||
inline bool nothrow_guarantee(const void*) {
|
||||
return ::testing::AssertionFailure() << "Violating NoThrowGuarantee";
|
||||
}
|
||||
|
||||
} // namespace testing
|
||||
|
||||
#endif // ABSL_BASE_INTERNAL_EXCEPTION_SAFETY_TESTING_H_
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue