- 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
				
			
		|  | @ -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