From 04dd99d8c1813ded74cd2a9c90ecb7eaa2d68ab1 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Mon, 14 May 2018 13:41:38 -0700 Subject: - abe587c2360b21f085b7d65a77d840015bc04cf6 Factor an internal interface into its own header, as it w... by Greg Falcon - 2201f1644336e64280dbd20207d8fbc3bfea2bf4 Internal change. by Abseil Team - 94e6b5b20d2cc754c99a18c575a4f1f3cd1f28d4 Rename no_throw_ctor to nothrow_ctor to match the standar... by Abseil Team - 86aa34d2129c4914c5133b7b619480aae786288e Update header files in debugging target by Tom Manshreck - ed234519ced458724a7267b8fdf184eaae1c97c7 Remove CMAKE_CXX_WARNING_VLA from our c++ flags in the cm... by Jon Cohen GitOrigin-RevId: abe587c2360b21f085b7d65a77d840015bc04cf6 Change-Id: I92f9301c69419d3830c358b88984967185aa33f6 --- absl/base/internal/exception_safety_testing.cc | 7 ++++- absl/base/internal/exception_safety_testing.h | 42 ++++++++++++-------------- 2 files changed, 25 insertions(+), 24 deletions(-) (limited to 'absl/base/internal') diff --git a/absl/base/internal/exception_safety_testing.cc b/absl/base/internal/exception_safety_testing.cc index c92d07bc..d3e94074 100644 --- a/absl/base/internal/exception_safety_testing.cc +++ b/absl/base/internal/exception_safety_testing.cc @@ -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 { diff --git a/absl/base/internal/exception_safety_testing.h b/absl/base/internal/exception_safety_testing.h index bec3ab30..c3ff34c5 100644 --- a/absl/base/internal/exception_safety_testing.h +++ b/absl/base/internal/exception_safety_testing.h @@ -227,7 +227,9 @@ inline absl::optional 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_ -- cgit v1.2.3