From d0d0be17933041f92c54dc367aa4163b27d52e1c Mon Sep 17 00:00:00 2001 From: mat007 Date: Sat, 7 Nov 2009 10:03:24 +0000 Subject: [PATCH] Workaround for spurious msvc warning C4505, see http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=324427 git-svn-id: https://svn.code.sf.net/p/turtle/code/trunk@62 860be788-9bd5-4423-9f1e-828f051e677b --- src/libraries/turtle/mock.hpp | 37 +++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/src/libraries/turtle/mock.hpp b/src/libraries/turtle/mock.hpp index 1ef0846..4a958c9 100644 --- a/src/libraries/turtle/mock.hpp +++ b/src/libraries/turtle/mock.hpp @@ -159,10 +159,11 @@ namespace detail #define MOCK_METHOD_EXPECTATION(S, t) \ mutable mock::expectation< S > exp##t; -#define MOCK_METHOD_STUB(M, n, S, t, c, tpn) \ +#define MOCK_METHOD_STUB(M, n, S, t, c, tpn, fix) \ tpn boost::function< S >::result_type M( \ MOCK_METHOD_ARGS(n, tpn boost::function< S >::arg) ) c \ { \ + fix \ return MOCK_MOCKER(this, t)( MOCK_MOCKER_ARGS(n) ); \ } #define MOCK_SIGNATURE(M) \ @@ -170,31 +171,41 @@ namespace detail #define MOCK_SIGNATURE_TPL(M) \ BOOST_DEDUCED_TYPENAME mock::detail::signature< BOOST_TYPEOF_TPL(&base_type::M) >::type -#define MOCK_METHOD_EXT(M, n, S, t) \ - MOCK_METHOD_STUB(M, n, S, t,,) \ - MOCK_METHOD_STUB(M, n, S, t, const,) \ +#ifdef _MSC_VER +#define MOCK_FIX_C4505(M) &base_type::M; +#else +#define MOCK_FIX_C4505(M) +#endif + +#define MOCK_METHOD_EXT_(M, n, S, t, fix) \ + MOCK_METHOD_STUB(M, n, S, t,,, fix) \ + MOCK_METHOD_STUB(M, n, S, t, const,,) \ MOCK_METHOD_EXPECTATION(S, t) +#define MOCK_METHOD_EXT(M, n, S, t) \ + MOCK_METHOD_EXT_(M, n, S, t,) #define MOCK_CONST_METHOD_EXT(M, n, S, t) \ - MOCK_METHOD_STUB(M, n, S, t, const,) \ + MOCK_METHOD_STUB(M, n, S, t, const,,) \ MOCK_METHOD_EXPECTATION(S, t) #define MOCK_NON_CONST_METHOD_EXT(M, n, S, t) \ - MOCK_METHOD_STUB(M, n, S, t,,) \ + MOCK_METHOD_STUB(M, n, S, t,,,) \ MOCK_METHOD_EXPECTATION(S, t) #define MOCK_METHOD(M, n) \ - MOCK_METHOD_EXT(M, n, MOCK_SIGNATURE(M), M) + MOCK_METHOD_EXT_(M, n, MOCK_SIGNATURE(M), M, MOCK_FIX_C4505(M)) -#define MOCK_METHOD_EXT_TPL(M, n, S, t) \ - MOCK_METHOD_STUB(M, n, S, t,, BOOST_DEDUCED_TYPENAME) \ - MOCK_METHOD_STUB(M, n, S, t, const, BOOST_DEDUCED_TYPENAME) \ +#define MOCK_METHOD_EXT_TPL_(M, n, S, t, fix) \ + MOCK_METHOD_STUB(M, n, S, t,, BOOST_DEDUCED_TYPENAME,fix) \ + MOCK_METHOD_STUB(M, n, S, t, const, BOOST_DEDUCED_TYPENAME,) \ MOCK_METHOD_EXPECTATION(S, t) +#define MOCK_METHOD_EXT_TPL(M, n, S, t) \ + MOCK_METHOD_EXT_TPL_(M, n, S, t,) #define MOCK_CONST_METHOD_EXT_TPL(M, n, S, t) \ - MOCK_METHOD_STUB(M, n, S, t, const, BOOST_DEDUCED_TYPENAME) \ + MOCK_METHOD_STUB(M, n, S, t, const, BOOST_DEDUCED_TYPENAME,) \ MOCK_METHOD_EXPECTATION(S, t) #define MOCK_NON_CONST_METHOD_EXT_TPL(M, n, S, t) \ - MOCK_METHOD_STUB(M, n, S, t,, BOOST_DEDUCED_TYPENAME) \ + MOCK_METHOD_STUB(M, n, S, t,, BOOST_DEDUCED_TYPENAME,) \ MOCK_METHOD_EXPECTATION(S, t) #define MOCK_METHOD_TPL(M, n) \ - MOCK_METHOD_EXT_TPL(M, n, MOCK_SIGNATURE_TPL(M), M) + MOCK_METHOD_EXT_TPL_(M, n, MOCK_SIGNATURE_TPL(M), M, MOCK_FIX_C4505(M)) #define MOCK_EXPECT(o,t) MOCK_MOCKER(o,t).expect( __FILE__, __LINE__ ) #define MOCK_RESET(o,t) MOCK_MOCKER(o,t).reset()