mirror of
https://github.com/boostorg/openmethod.git
synced 2026-01-22 05:22:26 +00:00
Compare commits
2 Commits
develop
...
fix/coveri
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
55b8c07a57 | ||
|
|
6fdbfb361a |
@@ -70,8 +70,8 @@ struct va_args<ReturnType> {
|
|||||||
ForwarderParameters...>::type \
|
ForwarderParameters...>::type \
|
||||||
BOOST_OPENMETHOD_GUIDE(NAME)(ForwarderParameters && ... args); \
|
BOOST_OPENMETHOD_GUIDE(NAME)(ForwarderParameters && ... args); \
|
||||||
template<typename... ForwarderParameters> \
|
template<typename... ForwarderParameters> \
|
||||||
inline auto NAME(ForwarderParameters&&... args) \
|
inline auto NAME(ForwarderParameters&&... args) -> \
|
||||||
->typename ::boost::openmethod::detail::enable_forwarder< \
|
typename ::boost::openmethod::detail::enable_forwarder< \
|
||||||
void, BOOST_OPENMETHOD_TYPE(NAME, ARGS, __VA_ARGS__), \
|
void, BOOST_OPENMETHOD_TYPE(NAME, ARGS, __VA_ARGS__), \
|
||||||
::boost::openmethod::detail::va_args<__VA_ARGS__>::return_type, \
|
::boost::openmethod::detail::va_args<__VA_ARGS__>::return_type, \
|
||||||
ForwarderParameters...>::type { \
|
ForwarderParameters...>::type { \
|
||||||
@@ -102,15 +102,13 @@ struct va_args<ReturnType> {
|
|||||||
static auto next(Args&&... args) -> decltype(auto); \
|
static auto next(Args&&... args) -> decltype(auto); \
|
||||||
}; \
|
}; \
|
||||||
inline auto BOOST_OPENMETHOD_OVERRIDERS( \
|
inline auto BOOST_OPENMETHOD_OVERRIDERS( \
|
||||||
NAME)<__VA_ARGS__ ARGS>::has_next() \
|
NAME)<__VA_ARGS__ ARGS>::has_next() -> bool { \
|
||||||
->bool { \
|
|
||||||
return boost_openmethod_detail_locate_method_aux< \
|
return boost_openmethod_detail_locate_method_aux< \
|
||||||
void ARGS>::type::has_next<fn>(); \
|
void ARGS>::type::has_next<fn>(); \
|
||||||
} \
|
} \
|
||||||
template<typename... Args> \
|
template<typename... Args> \
|
||||||
inline auto BOOST_OPENMETHOD_OVERRIDERS(NAME)<__VA_ARGS__ ARGS>::next( \
|
inline auto BOOST_OPENMETHOD_OVERRIDERS(NAME)<__VA_ARGS__ ARGS>::next( \
|
||||||
Args&&... args) \
|
Args&&... args) -> decltype(auto) { \
|
||||||
->decltype(auto) { \
|
|
||||||
return boost_openmethod_detail_locate_method_aux< \
|
return boost_openmethod_detail_locate_method_aux< \
|
||||||
void ARGS>::type::next<fn>(std::forward<Args>(args)...); \
|
void ARGS>::type::next<fn>(std::forward<Args>(args)...); \
|
||||||
}
|
}
|
||||||
@@ -125,7 +123,7 @@ struct va_args<ReturnType> {
|
|||||||
#define BOOST_OPENMETHOD_DEFINE_OVERRIDER(NAME, ARGS, ...) \
|
#define BOOST_OPENMETHOD_DEFINE_OVERRIDER(NAME, ARGS, ...) \
|
||||||
BOOST_OPENMETHOD_DETAIL_REGISTER_OVERRIDER(NAME, ARGS, __VA_ARGS__) \
|
BOOST_OPENMETHOD_DETAIL_REGISTER_OVERRIDER(NAME, ARGS, __VA_ARGS__) \
|
||||||
auto BOOST_OPENMETHOD_OVERRIDER(NAME, ARGS, __VA_ARGS__)::fn ARGS \
|
auto BOOST_OPENMETHOD_OVERRIDER(NAME, ARGS, __VA_ARGS__)::fn ARGS \
|
||||||
->boost::mp11::mp_back<boost::mp11::mp_list<__VA_ARGS__>>
|
-> boost::mp11::mp_back<boost::mp11::mp_list<__VA_ARGS__>>
|
||||||
|
|
||||||
#define BOOST_OPENMETHOD_OVERRIDE(NAME, ARGS, ...) \
|
#define BOOST_OPENMETHOD_OVERRIDE(NAME, ARGS, ...) \
|
||||||
BOOST_OPENMETHOD_DECLARE_OVERRIDER(NAME, ARGS, __VA_ARGS__) \
|
BOOST_OPENMETHOD_DECLARE_OVERRIDER(NAME, ARGS, __VA_ARGS__) \
|
||||||
@@ -135,7 +133,7 @@ struct va_args<ReturnType> {
|
|||||||
BOOST_OPENMETHOD_DECLARE_OVERRIDER(NAME, ARGS, __VA_ARGS__) \
|
BOOST_OPENMETHOD_DECLARE_OVERRIDER(NAME, ARGS, __VA_ARGS__) \
|
||||||
BOOST_OPENMETHOD_DETAIL_REGISTER_OVERRIDER(NAME, ARGS, __VA_ARGS__) \
|
BOOST_OPENMETHOD_DETAIL_REGISTER_OVERRIDER(NAME, ARGS, __VA_ARGS__) \
|
||||||
inline auto BOOST_OPENMETHOD_OVERRIDER(NAME, ARGS, __VA_ARGS__)::fn ARGS \
|
inline auto BOOST_OPENMETHOD_OVERRIDER(NAME, ARGS, __VA_ARGS__)::fn ARGS \
|
||||||
->boost::mp11::mp_back<boost::mp11::mp_list<__VA_ARGS__>>
|
-> boost::mp11::mp_back<boost::mp11::mp_list<__VA_ARGS__>>
|
||||||
|
|
||||||
#define BOOST_OPENMETHOD_CLASSES(...) \
|
#define BOOST_OPENMETHOD_CLASSES(...) \
|
||||||
BOOST_OPENMETHOD_REGISTER(::boost::openmethod::use_classes<__VA_ARGS__>)
|
BOOST_OPENMETHOD_REGISTER(::boost::openmethod::use_classes<__VA_ARGS__>)
|
||||||
|
|||||||
@@ -116,6 +116,7 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(
|
|||||||
unique_virtual_ptr<Dog, Registry> p(std::make_unique<Dog>());
|
unique_virtual_ptr<Dog, Registry> p(std::make_unique<Dog>());
|
||||||
auto dog = p.get();
|
auto dog = p.get();
|
||||||
unique_virtual_ptr<Dog, Registry> q(std::move(p));
|
unique_virtual_ptr<Dog, Registry> q(std::move(p));
|
||||||
|
// coverity[use_after_move]
|
||||||
BOOST_TEST(q.get() == dog);
|
BOOST_TEST(q.get() == dog);
|
||||||
BOOST_TEST(q.vptr() == Registry::template static_vptr<Dog>);
|
BOOST_TEST(q.vptr() == Registry::template static_vptr<Dog>);
|
||||||
BOOST_TEST(p.get() == nullptr);
|
BOOST_TEST(p.get() == nullptr);
|
||||||
@@ -127,6 +128,7 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(
|
|||||||
unique_virtual_ptr<Dog, Registry> p(std::make_unique<Dog>());
|
unique_virtual_ptr<Dog, Registry> p(std::make_unique<Dog>());
|
||||||
auto dog = p.get();
|
auto dog = p.get();
|
||||||
unique_virtual_ptr<Animal, Registry> q(std::move(p));
|
unique_virtual_ptr<Animal, Registry> q(std::move(p));
|
||||||
|
// coverity[use_after_move]
|
||||||
BOOST_TEST(q.get() == dog);
|
BOOST_TEST(q.get() == dog);
|
||||||
BOOST_TEST(q.vptr() == Registry::template static_vptr<Dog>);
|
BOOST_TEST(q.vptr() == Registry::template static_vptr<Dog>);
|
||||||
BOOST_TEST(p.get() == nullptr);
|
BOOST_TEST(p.get() == nullptr);
|
||||||
|
|||||||
@@ -168,6 +168,7 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(
|
|||||||
Dog snoopy;
|
Dog snoopy;
|
||||||
virtual_ptr<Dog, Registry> p(snoopy);
|
virtual_ptr<Dog, Registry> p(snoopy);
|
||||||
virtual_ptr<Dog, Registry> q(std::move(p));
|
virtual_ptr<Dog, Registry> q(std::move(p));
|
||||||
|
// coverity[use_after_move]
|
||||||
BOOST_TEST(q.get() == &snoopy);
|
BOOST_TEST(q.get() == &snoopy);
|
||||||
BOOST_TEST(q.vptr() == Registry::template static_vptr<Dog>);
|
BOOST_TEST(q.vptr() == Registry::template static_vptr<Dog>);
|
||||||
BOOST_TEST(p.get() == &snoopy);
|
BOOST_TEST(p.get() == &snoopy);
|
||||||
|
|||||||
Reference in New Issue
Block a user