Summary:
[Folly] Rename `exception_wrapper::get_object` to `get_exception`.
This will be a template overload of the existing non-template member `get_exception`, but it should just work.
Reviewed By: spacedentist
Differential Revision:
D5180845
fbshipit-source-id:
28e16e039ec6a7939b38f217b4ad5c6bc803f515
-inline Ex* exception_wrapper::get_object() noexcept {
+inline Ex* exception_wrapper::get_exception() noexcept {
Ex* object{nullptr};
with_exception([&](Ex& ex) { object = &ex; });
return object;
}
template <typename Ex>
Ex* object{nullptr};
with_exception([&](Ex& ex) { object = &ex; });
return object;
}
template <typename Ex>
-inline Ex const* exception_wrapper::get_object() const noexcept {
+inline Ex const* exception_wrapper::get_exception() const noexcept {
Ex const* object{nullptr};
with_exception([&](Ex const& ex) { object = &ex; });
return object;
Ex const* object{nullptr};
with_exception([&](Ex const& ex) { object = &ex; });
return object;
//! \note This function may cause an exception to be thrown and immediately
//! caught internally, affecting runtime performance.
template <typename Ex>
//! \note This function may cause an exception to be thrown and immediately
//! caught internally, affecting runtime performance.
template <typename Ex>
- Ex* get_object() noexcept;
+ Ex* get_exception() noexcept;
//! \overload
template <typename Ex>
//! \overload
template <typename Ex>
- Ex const* get_object() const noexcept;
+ Ex const* get_exception() const noexcept;
//! \return A `std::exception_ptr` that references either the exception held
//! by `*this`, or a copy of same.
//! \return A `std::exception_ptr` that references either the exception held
//! by `*this`, or a copy of same.
EXPECT_EQ(exception_wrapper::none(), ew.type());
EXPECT_FALSE(bool(ew));
EXPECT_EQ(nullptr, ew.get_exception());
EXPECT_EQ(exception_wrapper::none(), ew.type());
EXPECT_FALSE(bool(ew));
EXPECT_EQ(nullptr, ew.get_exception());
- EXPECT_EQ(nullptr, ew.get_object<std::exception>());
- EXPECT_EQ(nullptr, ew.get_object<int>());
+ EXPECT_EQ(nullptr, ew.get_exception<std::exception>());
+ EXPECT_EQ(nullptr, ew.get_exception<int>());
EXPECT_FALSE(ew.has_exception_ptr());
EXPECT_EQ(nullptr, ew.to_exception_ptr());
EXPECT_FALSE(ew.has_exception_ptr());
EXPECT_FALSE(ew.has_exception_ptr());
EXPECT_EQ(nullptr, ew.to_exception_ptr());
EXPECT_FALSE(ew.has_exception_ptr());
EXPECT_TRUE(bool(ew));
EXPECT_EQ(typeid(std::runtime_error), ew.type());
EXPECT_NE(nullptr, ew.get_exception());
EXPECT_TRUE(bool(ew));
EXPECT_EQ(typeid(std::runtime_error), ew.type());
EXPECT_NE(nullptr, ew.get_exception());
- EXPECT_NE(nullptr, ew.get_object<std::exception>());
- EXPECT_EQ(nullptr, ew.get_object<int>());
+ EXPECT_NE(nullptr, ew.get_exception<std::exception>());
+ EXPECT_EQ(nullptr, ew.get_exception<int>());
EXPECT_FALSE(ew.has_exception_ptr());
EXPECT_NE(nullptr, ew.to_exception_ptr());
EXPECT_TRUE(ew.has_exception_ptr());
EXPECT_FALSE(ew.has_exception_ptr());
EXPECT_NE(nullptr, ew.to_exception_ptr());
EXPECT_TRUE(ew.has_exception_ptr());
EXPECT_FALSE(bool(ew));
EXPECT_EQ(exception_wrapper::none(), ew.type());
EXPECT_EQ(nullptr, ew.get_exception());
EXPECT_FALSE(bool(ew));
EXPECT_EQ(exception_wrapper::none(), ew.type());
EXPECT_EQ(nullptr, ew.get_exception());
- EXPECT_EQ(nullptr, ew.get_object<std::exception>());
- EXPECT_EQ(nullptr, ew.get_object<int>());
+ EXPECT_EQ(nullptr, ew.get_exception<std::exception>());
+ EXPECT_EQ(nullptr, ew.get_exception<int>());
EXPECT_EQ(nullptr, ew.to_exception_ptr());
EXPECT_EQ("", ew.class_name());
EXPECT_EQ("", ew.what());
EXPECT_EQ(nullptr, ew.to_exception_ptr());
EXPECT_EQ("", ew.class_name());
EXPECT_EQ("", ew.what());
EXPECT_TRUE(bool(ew));
EXPECT_EQ(typeid(std::runtime_error), ew.type());
EXPECT_NE(nullptr, ew.get_exception());
EXPECT_TRUE(bool(ew));
EXPECT_EQ(typeid(std::runtime_error), ew.type());
EXPECT_NE(nullptr, ew.get_exception());
- EXPECT_NE(nullptr, ew.get_object<std::exception>());
- EXPECT_EQ(nullptr, ew.get_object<int>());
+ EXPECT_NE(nullptr, ew.get_exception<std::exception>());
+ EXPECT_EQ(nullptr, ew.get_exception<int>());
EXPECT_TRUE(ew.has_exception_ptr());
EXPECT_EQ(ep, ew.to_exception_ptr());
EXPECT_TRUE(ew.has_exception_ptr());
EXPECT_TRUE(ew.has_exception_ptr());
EXPECT_EQ(ep, ew.to_exception_ptr());
EXPECT_TRUE(ew.has_exception_ptr());
EXPECT_FALSE(bool(ew));
EXPECT_EQ(exception_wrapper::none(), ew.type());
EXPECT_EQ(nullptr, ew.get_exception());
EXPECT_FALSE(bool(ew));
EXPECT_EQ(exception_wrapper::none(), ew.type());
EXPECT_EQ(nullptr, ew.get_exception());
- EXPECT_EQ(nullptr, ew.get_object<std::exception>());
- EXPECT_EQ(nullptr, ew.get_object<int>());
+ EXPECT_EQ(nullptr, ew.get_exception<std::exception>());
+ EXPECT_EQ(nullptr, ew.get_exception<int>());
EXPECT_EQ(nullptr, ew.to_exception_ptr());
EXPECT_EQ("", ew.class_name());
EXPECT_EQ("", ew.what());
EXPECT_EQ(nullptr, ew.to_exception_ptr());
EXPECT_EQ("", ew.class_name());
EXPECT_EQ("", ew.what());
auto ew = exception_wrapper(ep, from_eptr<int>(ep));
EXPECT_TRUE(bool(ew));
EXPECT_EQ(nullptr, ew.get_exception());
auto ew = exception_wrapper(ep, from_eptr<int>(ep));
EXPECT_TRUE(bool(ew));
EXPECT_EQ(nullptr, ew.get_exception());
- EXPECT_EQ(nullptr, ew.get_object<std::exception>());
- EXPECT_NE(nullptr, ew.get_object<int>());
+ EXPECT_EQ(nullptr, ew.get_exception<std::exception>());
+ EXPECT_NE(nullptr, ew.get_exception<int>());
EXPECT_TRUE(ew.has_exception_ptr());
EXPECT_EQ(ep, ew.to_exception_ptr());
EXPECT_TRUE(ew.has_exception_ptr());
EXPECT_TRUE(ew.has_exception_ptr());
EXPECT_EQ(ep, ew.to_exception_ptr());
EXPECT_TRUE(ew.has_exception_ptr());
exception_wrapper(std::move(ew));
EXPECT_FALSE(bool(ew));
EXPECT_EQ(nullptr, ew.get_exception());
exception_wrapper(std::move(ew));
EXPECT_FALSE(bool(ew));
EXPECT_EQ(nullptr, ew.get_exception());
- EXPECT_EQ(nullptr, ew.get_object<std::exception>());
- EXPECT_EQ(nullptr, ew.get_object<int>());
+ EXPECT_EQ(nullptr, ew.get_exception<std::exception>());
+ EXPECT_EQ(nullptr, ew.get_exception<int>());
EXPECT_EQ(nullptr, ew.to_exception_ptr());
EXPECT_FALSE(ew.has_exception_ptr());
EXPECT_EQ("", ew.class_name());
EXPECT_EQ(nullptr, ew.to_exception_ptr());
EXPECT_FALSE(ew.has_exception_ptr());
EXPECT_EQ("", ew.class_name());
auto ew = exception_wrapper(folly::in_place, 42);
EXPECT_TRUE(bool(ew));
EXPECT_EQ(nullptr, ew.get_exception());
auto ew = exception_wrapper(folly::in_place, 42);
EXPECT_TRUE(bool(ew));
EXPECT_EQ(nullptr, ew.get_exception());
- EXPECT_EQ(nullptr, ew.get_object<std::exception>());
- EXPECT_NE(nullptr, ew.get_object<int>());
+ EXPECT_EQ(nullptr, ew.get_exception<std::exception>());
+ EXPECT_NE(nullptr, ew.get_exception<int>());
EXPECT_FALSE(ew.has_exception_ptr());
EXPECT_EQ("int", ew.class_name());
EXPECT_EQ("int", ew.what());
EXPECT_FALSE(ew.has_exception_ptr());
EXPECT_EQ("int", ew.class_name());
EXPECT_EQ("int", ew.what());
exception_wrapper(std::move(ew));
EXPECT_FALSE(bool(ew));
EXPECT_EQ(nullptr, ew.get_exception());
exception_wrapper(std::move(ew));
EXPECT_FALSE(bool(ew));
EXPECT_EQ(nullptr, ew.get_exception());
- EXPECT_EQ(nullptr, ew.get_object<std::exception>());
- EXPECT_EQ(nullptr, ew.get_object<int>());
+ EXPECT_EQ(nullptr, ew.get_exception<std::exception>());
+ EXPECT_EQ(nullptr, ew.get_exception<int>());
EXPECT_EQ(nullptr, ew.to_exception_ptr());
EXPECT_FALSE(ew.has_exception_ptr());
EXPECT_EQ("", ew.class_name());
EXPECT_EQ(nullptr, ew.to_exception_ptr());
EXPECT_FALSE(ew.has_exception_ptr());
EXPECT_EQ("", ew.class_name());
auto ew = exception_wrapper(ep); // concrete type is erased
EXPECT_TRUE(bool(ew));
EXPECT_EQ(nullptr, ew.get_exception());
auto ew = exception_wrapper(ep); // concrete type is erased
EXPECT_TRUE(bool(ew));
EXPECT_EQ(nullptr, ew.get_exception());
- EXPECT_EQ(nullptr, ew.get_object<std::exception>());
- EXPECT_NE(nullptr, ew.get_object<int>());
+ EXPECT_EQ(nullptr, ew.get_exception<std::exception>());
+ EXPECT_NE(nullptr, ew.get_exception<int>());
EXPECT_EQ(ep, ew.to_exception_ptr());
EXPECT_EQ("<unknown exception>", ew.class_name()); // because concrete type is
// erased
EXPECT_EQ(ep, ew.to_exception_ptr());
EXPECT_EQ("<unknown exception>", ew.class_name()); // because concrete type is
// erased
exception_wrapper(std::move(ew));
EXPECT_FALSE(bool(ew));
EXPECT_EQ(nullptr, ew.get_exception());
exception_wrapper(std::move(ew));
EXPECT_FALSE(bool(ew));
EXPECT_EQ(nullptr, ew.get_exception());
- EXPECT_EQ(nullptr, ew.get_object<std::exception>());
- EXPECT_EQ(nullptr, ew.get_object<int>());
+ EXPECT_EQ(nullptr, ew.get_exception<std::exception>());
+ EXPECT_EQ(nullptr, ew.get_exception<int>());
EXPECT_EQ(nullptr, ew.to_exception_ptr());
EXPECT_EQ("", ew.class_name());
EXPECT_EQ("", ew.what());
EXPECT_EQ(nullptr, ew.to_exception_ptr());
EXPECT_EQ("", ew.class_name());
EXPECT_EQ("", ew.what());