Revert "Merge pull request #2498 from thejcannon:noexcept_spec"
This reverts commitba513d2c95, reversing changes made toa3ca5b9e0b.
This commit is contained in:
		| @@ -58,16 +58,17 @@ using identity_t = T; | |||||||
| #define GMOCK_INTERNAL_MOCK_METHOD_ARG_3(_Ret, _MethodName, _Args) \ | #define GMOCK_INTERNAL_MOCK_METHOD_ARG_3(_Ret, _MethodName, _Args) \ | ||||||
|   GMOCK_INTERNAL_MOCK_METHOD_ARG_4(_Ret, _MethodName, _Args, ()) |   GMOCK_INTERNAL_MOCK_METHOD_ARG_4(_Ret, _MethodName, _Args, ()) | ||||||
|  |  | ||||||
| #define GMOCK_INTERNAL_MOCK_METHOD_ARG_4(_Ret, _MethodName, _Args, _Spec)     \ | #define GMOCK_INTERNAL_MOCK_METHOD_ARG_4(_Ret, _MethodName, _Args, _Spec)  \ | ||||||
|   GMOCK_INTERNAL_ASSERT_PARENTHESIS(_Args);                                   \ |   GMOCK_INTERNAL_ASSERT_PARENTHESIS(_Args);                                \ | ||||||
|   GMOCK_INTERNAL_ASSERT_PARENTHESIS(_Spec);                                   \ |   GMOCK_INTERNAL_ASSERT_PARENTHESIS(_Spec);                                \ | ||||||
|   GMOCK_INTERNAL_ASSERT_VALID_SIGNATURE(                                      \ |   GMOCK_INTERNAL_ASSERT_VALID_SIGNATURE(                                   \ | ||||||
|       GMOCK_PP_NARG0 _Args, GMOCK_INTERNAL_SIGNATURE(_Ret, _Args));           \ |       GMOCK_PP_NARG0 _Args, GMOCK_INTERNAL_SIGNATURE(_Ret, _Args));        \ | ||||||
|   GMOCK_INTERNAL_ASSERT_VALID_SPEC(_Spec)                                     \ |   GMOCK_INTERNAL_ASSERT_VALID_SPEC(_Spec)                                  \ | ||||||
|   GMOCK_INTERNAL_MOCK_METHOD_IMPL(                                            \ |   GMOCK_INTERNAL_MOCK_METHOD_IMPL(                                         \ | ||||||
|       GMOCK_PP_NARG0 _Args, _MethodName, GMOCK_INTERNAL_HAS_CONST(_Spec),     \ |       GMOCK_PP_NARG0 _Args, _MethodName, GMOCK_INTERNAL_HAS_CONST(_Spec),  \ | ||||||
|       GMOCK_INTERNAL_HAS_OVERRIDE(_Spec), GMOCK_INTERNAL_HAS_FINAL(_Spec),    \ |       GMOCK_INTERNAL_HAS_OVERRIDE(_Spec), GMOCK_INTERNAL_HAS_FINAL(_Spec), \ | ||||||
|       GMOCK_INTERNAL_HAS_NOEXCEPT(_Spec), GMOCK_INTERNAL_GET_CALLTYPE(_Spec), \ |       GMOCK_INTERNAL_GET_NOEXCEPT_SPEC(_Spec),                             \ | ||||||
|  |       GMOCK_INTERNAL_GET_CALLTYPE(_Spec),                                  \ | ||||||
|       (GMOCK_INTERNAL_SIGNATURE(_Ret, _Args))) |       (GMOCK_INTERNAL_SIGNATURE(_Ret, _Args))) | ||||||
|  |  | ||||||
| #define GMOCK_INTERNAL_MOCK_METHOD_ARG_5(...) \ | #define GMOCK_INTERNAL_MOCK_METHOD_ARG_5(...) \ | ||||||
| @@ -107,15 +108,14 @@ using identity_t = T; | |||||||
|   GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_ASSERT_VALID_SPEC_ELEMENT, ~, _Spec) |   GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_ASSERT_VALID_SPEC_ELEMENT, ~, _Spec) | ||||||
|  |  | ||||||
| #define GMOCK_INTERNAL_MOCK_METHOD_IMPL(_N, _MethodName, _Constness,           \ | #define GMOCK_INTERNAL_MOCK_METHOD_IMPL(_N, _MethodName, _Constness,           \ | ||||||
|                                         _Override, _Final, _Noexcept,          \ |                                         _Override, _Final, _NoexceptSpec,      \ | ||||||
|                                         _CallType, _Signature)                 \ |                                         _CallType, _Signature)                 \ | ||||||
|   typename ::testing::internal::Function<GMOCK_PP_REMOVE_PARENS(               \ |   typename ::testing::internal::Function<GMOCK_PP_REMOVE_PARENS(               \ | ||||||
|       _Signature)>::Result                                                     \ |       _Signature)>::Result                                                     \ | ||||||
|   GMOCK_INTERNAL_EXPAND(_CallType)                                             \ |   GMOCK_INTERNAL_EXPAND(_CallType)                                             \ | ||||||
|       _MethodName(GMOCK_PP_REPEAT(GMOCK_INTERNAL_PARAMETER, _Signature, _N))   \ |       _MethodName(GMOCK_PP_REPEAT(GMOCK_INTERNAL_PARAMETER, _Signature, _N))   \ | ||||||
|           GMOCK_PP_IF(_Constness, const, ) GMOCK_PP_IF(_Noexcept, noexcept, )  \ |           GMOCK_PP_IF(_Constness, const, ) _NoexceptSpec                       \ | ||||||
|               GMOCK_PP_IF(_Override, override, )                               \ |           GMOCK_PP_IF(_Override, override, ) GMOCK_PP_IF(_Final, final, ) {    \ | ||||||
|                   GMOCK_PP_IF(_Final, final, ) {                               \ |  | ||||||
|     GMOCK_MOCKER_(_N, _Constness, _MethodName)                                 \ |     GMOCK_MOCKER_(_N, _Constness, _MethodName)                                 \ | ||||||
|         .SetOwnerAndName(this, #_MethodName);                                  \ |         .SetOwnerAndName(this, #_MethodName);                                  \ | ||||||
|     return GMOCK_MOCKER_(_N, _Constness, _MethodName)                          \ |     return GMOCK_MOCKER_(_N, _Constness, _MethodName)                          \ | ||||||
| @@ -131,8 +131,7 @@ using identity_t = T; | |||||||
|   ::testing::MockSpec<GMOCK_PP_REMOVE_PARENS(_Signature)> gmock_##_MethodName( \ |   ::testing::MockSpec<GMOCK_PP_REMOVE_PARENS(_Signature)> gmock_##_MethodName( \ | ||||||
|       const ::testing::internal::WithoutMatchers&,                             \ |       const ::testing::internal::WithoutMatchers&,                             \ | ||||||
|       GMOCK_PP_IF(_Constness, const, )::testing::internal::Function<           \ |       GMOCK_PP_IF(_Constness, const, )::testing::internal::Function<           \ | ||||||
|           GMOCK_PP_REMOVE_PARENS(_Signature)>*)                                \ |           GMOCK_PP_REMOVE_PARENS(_Signature)>*) const _NoexceptSpec {          \ | ||||||
|       const GMOCK_PP_IF(_Noexcept, noexcept, ) {                               \ |  | ||||||
|     return GMOCK_PP_CAT(::testing::internal::AdjustConstness_,                 \ |     return GMOCK_PP_CAT(::testing::internal::AdjustConstness_,                 \ | ||||||
|                         GMOCK_PP_IF(_Constness, const, ))(this)                \ |                         GMOCK_PP_IF(_Constness, const, ))(this)                \ | ||||||
|         ->gmock_##_MethodName(GMOCK_PP_REPEAT(                                 \ |         ->gmock_##_MethodName(GMOCK_PP_REPEAT(                                 \ | ||||||
| @@ -154,9 +153,13 @@ using identity_t = T; | |||||||
| #define GMOCK_INTERNAL_HAS_FINAL(_Tuple) \ | #define GMOCK_INTERNAL_HAS_FINAL(_Tuple) \ | ||||||
|   GMOCK_PP_HAS_COMMA(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_DETECT_FINAL, ~, _Tuple)) |   GMOCK_PP_HAS_COMMA(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_DETECT_FINAL, ~, _Tuple)) | ||||||
|  |  | ||||||
| #define GMOCK_INTERNAL_HAS_NOEXCEPT(_Tuple) \ | #define GMOCK_INTERNAL_GET_NOEXCEPT_SPEC(_Tuple) \ | ||||||
|   GMOCK_PP_HAS_COMMA(                       \ |   GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_NOEXCEPT_SPEC_IF_NOEXCEPT, ~, _Tuple) | ||||||
|       GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_DETECT_NOEXCEPT, ~, _Tuple)) |  | ||||||
|  | #define GMOCK_INTERNAL_NOEXCEPT_SPEC_IF_NOEXCEPT(_i, _, _elem)          \ | ||||||
|  |   GMOCK_PP_IF(                                                          \ | ||||||
|  |       GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_NOEXCEPT(_i, _, _elem)), \ | ||||||
|  |       _elem, ) | ||||||
|  |  | ||||||
| #define GMOCK_INTERNAL_GET_CALLTYPE(_Tuple) \ | #define GMOCK_INTERNAL_GET_CALLTYPE(_Tuple) \ | ||||||
|   GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_GET_CALLTYPE_IMPL, ~, _Tuple) |   GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_GET_CALLTYPE_IMPL, ~, _Tuple) | ||||||
| @@ -187,7 +190,6 @@ using identity_t = T; | |||||||
|  |  | ||||||
| #define GMOCK_INTERNAL_DETECT_FINAL_I_final , | #define GMOCK_INTERNAL_DETECT_FINAL_I_final , | ||||||
|  |  | ||||||
| // TODO(iserna): Maybe noexcept should accept an argument here as well. |  | ||||||
| #define GMOCK_INTERNAL_DETECT_NOEXCEPT(_i, _, _elem) \ | #define GMOCK_INTERNAL_DETECT_NOEXCEPT(_i, _, _elem) \ | ||||||
|   GMOCK_PP_CAT(GMOCK_INTERNAL_DETECT_NOEXCEPT_I_, _elem) |   GMOCK_PP_CAT(GMOCK_INTERNAL_DETECT_NOEXCEPT_I_, _elem) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -42,6 +42,8 @@ | |||||||
|  |  | ||||||
| #include <map> | #include <map> | ||||||
| #include <string> | #include <string> | ||||||
|  | #include <type_traits> | ||||||
|  |  | ||||||
| #include "gmock/gmock.h" | #include "gmock/gmock.h" | ||||||
| #include "gtest/gtest.h" | #include "gtest/gtest.h" | ||||||
|  |  | ||||||
| @@ -663,5 +665,32 @@ TEST(MockMethodMockFunctionTest, MockMethodSizeOverhead) { | |||||||
|   EXPECT_EQ(sizeof(MockMethodSizes0), sizeof(MockMethodSizes4)); |   EXPECT_EQ(sizeof(MockMethodSizes0), sizeof(MockMethodSizes4)); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | void hasTwoParams(int, int); | ||||||
|  | void MaybeThrows(); | ||||||
|  | void DoesntThrow() noexcept; | ||||||
|  | struct MockMethodNoexceptSpecifier { | ||||||
|  |   MOCK_METHOD(void, func1, (), (noexcept)); | ||||||
|  |   MOCK_METHOD(void, func2, (), (noexcept(true))); | ||||||
|  |   MOCK_METHOD(void, func3, (), (noexcept(false))); | ||||||
|  |   MOCK_METHOD(void, func4, (), (noexcept(noexcept(MaybeThrows())))); | ||||||
|  |   MOCK_METHOD(void, func5, (), (noexcept(noexcept(DoesntThrow())))); | ||||||
|  |   MOCK_METHOD(void, func6, (), (noexcept(noexcept(DoesntThrow())), const)); | ||||||
|  |   MOCK_METHOD(void, func7, (), (const, noexcept(noexcept(DoesntThrow())))); | ||||||
|  |   // Put commas in the noexcept expression | ||||||
|  |   MOCK_METHOD(void, func8, (), (noexcept(noexcept(hasTwoParams(1, 2))), const)); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | TEST(MockMethodMockFunctionTest, NoexceptSpecifierPreserved) { | ||||||
|  |   EXPECT_TRUE(noexcept(std::declval<MockMethodNoexceptSpecifier>().func1())); | ||||||
|  |   EXPECT_TRUE(noexcept(std::declval<MockMethodNoexceptSpecifier>().func2())); | ||||||
|  |   EXPECT_FALSE(noexcept(std::declval<MockMethodNoexceptSpecifier>().func3())); | ||||||
|  |   EXPECT_FALSE(noexcept(std::declval<MockMethodNoexceptSpecifier>().func4())); | ||||||
|  |   EXPECT_TRUE(noexcept(std::declval<MockMethodNoexceptSpecifier>().func5())); | ||||||
|  |   EXPECT_TRUE(noexcept(std::declval<MockMethodNoexceptSpecifier>().func6())); | ||||||
|  |   EXPECT_TRUE(noexcept(std::declval<MockMethodNoexceptSpecifier>().func7())); | ||||||
|  |   EXPECT_EQ(noexcept(std::declval<MockMethodNoexceptSpecifier>().func8()), | ||||||
|  |             noexcept(hasTwoParams(1, 2))); | ||||||
|  | } | ||||||
|  |  | ||||||
| }  // namespace gmock_function_mocker_test | }  // namespace gmock_function_mocker_test | ||||||
| }  // namespace testing | }  // namespace testing | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Joshua Cannon
					Joshua Cannon