Export of internal Abseil changes
-- 0f6565955231dc74ebad62ef32a18c457afa2dc7 by Abseil Team <absl-team@google.com>: Document guarantee that we do not move from rvalue arguments if no insertion happens with absl::raw_hash_map::try_emplace, as done with std::unordered_map::try_emplace. PiperOrigin-RevId: 264430409 -- 292e6b9e08fa689e8400d7f2db94cbcab29d5889 by CJ Johnson <johnsoncj@google.com>: Removes use of aligned_storage in FixedArray and InlinedVector in favor of aligned char buffers. PiperOrigin-RevId: 264385559 -- aa0b19ad11ae5702022feee0e2e6434cfb28c9e9 by Derek Mauro <dmauro@google.com>: Make the unit tests for absl::any, absl::optional, and absl::variant no-ops when these types are just aliases for the corresponding std:: types. We have no way to fix standard library implementation bugs, so don't bother working around them. Also disable the corresponding exception-safety tests as well when exceptions are not enabled. Fixes https://github.com/abseil/abseil-cpp/pull/360 PiperOrigin-RevId: 264382050 -- 65896a911f36481b89b4712c83b91c90a76b64e8 by Abseil Team <absl-team@google.com>: Improve documentation on erase PiperOrigin-RevId: 264381266 GitOrigin-RevId: 0f6565955231dc74ebad62ef32a18c457afa2dc7 Change-Id: I74b9bd2ddf84526014104f17e87de70bd3fe65fa
This commit is contained in:
parent
0e7afdcbd2
commit
f0afae0d49
20 changed files with 140 additions and 30 deletions
|
|
@ -111,6 +111,7 @@ cc_test(
|
|||
linkopts = ABSL_EXCEPTIONS_FLAG_LINKOPTS + ABSL_DEFAULT_LINKOPTS,
|
||||
deps = [
|
||||
":any",
|
||||
"//absl/base:config",
|
||||
"//absl/base:exception_safety_testing",
|
||||
"@com_google_googletest//:gtest_main",
|
||||
],
|
||||
|
|
@ -240,6 +241,7 @@ cc_test(
|
|||
linkopts = ABSL_EXCEPTIONS_FLAG_LINKOPTS + ABSL_DEFAULT_LINKOPTS,
|
||||
deps = [
|
||||
":optional",
|
||||
"//absl/base:config",
|
||||
"//absl/base:exception_safety_testing",
|
||||
"@com_google_googletest//:gtest_main",
|
||||
],
|
||||
|
|
|
|||
|
|
@ -105,6 +105,7 @@ absl_cc_test(
|
|||
${ABSL_EXCEPTIONS_FLAG_LINKOPTS}
|
||||
DEPS
|
||||
absl::any
|
||||
absl::config
|
||||
absl::exception_safety_testing
|
||||
gmock_main
|
||||
)
|
||||
|
|
@ -256,6 +257,7 @@ absl_cc_test(
|
|||
${ABSL_EXCEPTIONS_FLAG_LINKOPTS}
|
||||
DEPS
|
||||
absl::optional
|
||||
absl::config
|
||||
absl::exception_safety_testing
|
||||
gmock_main
|
||||
)
|
||||
|
|
|
|||
|
|
@ -14,6 +14,12 @@
|
|||
|
||||
#include "absl/types/any.h"
|
||||
|
||||
#include "absl/base/config.h"
|
||||
|
||||
// This test is a no-op when absl::any is an alias for std::any and when
|
||||
// exceptions are not enabled.
|
||||
#if !defined(ABSL_HAVE_STD_ANY) && defined(ABSL_HAVE_EXCEPTIONS)
|
||||
|
||||
#include <typeinfo>
|
||||
#include <vector>
|
||||
|
||||
|
|
@ -136,8 +142,6 @@ TEST(AnyExceptionSafety, Assignment) {
|
|||
EXPECT_TRUE(strong_empty_any_tester.Test(move));
|
||||
}
|
||||
|
||||
// libstdc++ std::any fails this test
|
||||
#if !defined(ABSL_HAVE_STD_ANY)
|
||||
TEST(AnyExceptionSafety, Emplace) {
|
||||
auto initial_val =
|
||||
absl::any{absl::in_place_type_t<Thrower>(), 1, testing::nothrow_ctor};
|
||||
|
|
@ -163,6 +167,7 @@ TEST(AnyExceptionSafety, Emplace) {
|
|||
EXPECT_TRUE(empty_tester.Test(emp_thrower));
|
||||
EXPECT_TRUE(empty_tester.Test(emp_throwervec));
|
||||
}
|
||||
#endif // ABSL_HAVE_STD_ANY
|
||||
|
||||
} // namespace
|
||||
|
||||
#endif // #if !defined(ABSL_HAVE_STD_ANY) && defined(ABSL_HAVE_EXCEPTIONS)
|
||||
|
|
|
|||
|
|
@ -14,6 +14,9 @@
|
|||
|
||||
#include "absl/types/any.h"
|
||||
|
||||
// This test is a no-op when absl::any is an alias for std::any.
|
||||
#if !defined(ABSL_HAVE_STD_ANY)
|
||||
|
||||
#include <initializer_list>
|
||||
#include <type_traits>
|
||||
#include <utility>
|
||||
|
|
@ -774,3 +777,5 @@ TEST(AnyTest, FailedEmplace) {
|
|||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
#endif // #if !defined(ABSL_HAVE_STD_ANY)
|
||||
|
|
|
|||
|
|
@ -14,6 +14,12 @@
|
|||
|
||||
#include "absl/types/optional.h"
|
||||
|
||||
#include "absl/base/config.h"
|
||||
|
||||
// This test is a no-op when absl::optional is an alias for std::optional and
|
||||
// when exceptions are not enabled.
|
||||
#if !defined(ABSL_HAVE_STD_OPTIONAL) && defined(ABSL_HAVE_EXCEPTIONS)
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include "absl/base/internal/exception_safety_testing.h"
|
||||
|
||||
|
|
@ -280,3 +286,5 @@ TEST(OptionalExceptionSafety, NothrowMoveAssign) {
|
|||
} // namespace
|
||||
|
||||
} // namespace absl
|
||||
|
||||
#endif // #if !defined(ABSL_HAVE_STD_OPTIONAL) && defined(ABSL_HAVE_EXCEPTIONS)
|
||||
|
|
|
|||
|
|
@ -14,6 +14,9 @@
|
|||
|
||||
#include "absl/types/optional.h"
|
||||
|
||||
// This test is a no-op when absl::optional is an alias for std::optional.
|
||||
#if !defined(ABSL_HAVE_STD_OPTIONAL)
|
||||
|
||||
#include <string>
|
||||
#include <type_traits>
|
||||
#include <utility>
|
||||
|
|
@ -1654,3 +1657,5 @@ TEST(optionalTest, InPlaceTSFINAEBug) {
|
|||
#endif // !defined(__EMSCRIPTEN__)
|
||||
|
||||
} // namespace
|
||||
|
||||
#endif // #if !defined(ABSL_HAVE_STD_OPTIONAL)
|
||||
|
|
|
|||
|
|
@ -14,6 +14,12 @@
|
|||
|
||||
#include "absl/types/variant.h"
|
||||
|
||||
#include "absl/base/config.h"
|
||||
|
||||
// This test is a no-op when absl::variant is an alias for std::variant and when
|
||||
// exceptions are not enabled.
|
||||
#if !defined(ABSL_HAVE_STD_VARIANT) && defined(ABSL_HAVE_EXCEPTIONS)
|
||||
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
#include <utility>
|
||||
|
|
@ -21,7 +27,6 @@
|
|||
|
||||
#include "gmock/gmock.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include "absl/base/config.h"
|
||||
#include "absl/base/internal/exception_safety_testing.h"
|
||||
#include "absl/memory/memory.h"
|
||||
|
||||
|
|
@ -521,3 +526,5 @@ TEST(VariantExceptionSafetyTest, Swap) {
|
|||
} // namespace absl
|
||||
|
||||
#endif // !defined(ABSL_INTERNAL_MSVC_2017_DBG_MODE)
|
||||
|
||||
#endif // #if !defined(ABSL_HAVE_STD_VARIANT) && defined(ABSL_HAVE_EXCEPTIONS)
|
||||
|
|
|
|||
|
|
@ -19,6 +19,9 @@
|
|||
|
||||
#include "absl/types/variant.h"
|
||||
|
||||
// This test is a no-op when absl::variant is an alias for std::variant.
|
||||
#if !defined(ABSL_HAVE_STD_VARIANT)
|
||||
|
||||
#include <algorithm>
|
||||
#include <cstddef>
|
||||
#include <functional>
|
||||
|
|
@ -2705,3 +2708,5 @@ TEST(VariantTest, MoveCtorBug) {
|
|||
|
||||
} // namespace
|
||||
} // namespace absl
|
||||
|
||||
#endif // #if !defined(ABSL_HAVE_STD_VARIANT)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue