Googletest export
Validate spec modifiers. PiperOrigin-RevId: 221810235
This commit is contained in:
		
				
					committed by
					
						
						Gennadiy Civil
					
				
			
			
				
	
			
			
			
						parent
						
							45d66d81be
						
					
				
				
					commit
					5dab7be70d
				
			@@ -45,9 +45,10 @@
 | 
			
		||||
      "enclosed in parentheses. If _Ret is a type with unprotected commas, " \
 | 
			
		||||
      "it must also be enclosed in parentheses.")
 | 
			
		||||
 | 
			
		||||
#define GMOCK_INTERNAL_ASSERT_PARENTHESIS(_Tuple)    \
 | 
			
		||||
  static_assert(GMOCK_PP_IS_ENCLOSED_PARENS(_Tuple), \
 | 
			
		||||
                "_Tuple should be enclosed in parentheses")
 | 
			
		||||
#define GMOCK_INTERNAL_ASSERT_PARENTHESIS(_Tuple) \
 | 
			
		||||
  static_assert(                                  \
 | 
			
		||||
      GMOCK_PP_IS_ENCLOSED_PARENS(_Tuple),        \
 | 
			
		||||
      GMOCK_PP_STRINGIZE(_Tuple) " should be enclosed in parentheses.")
 | 
			
		||||
 | 
			
		||||
#define GMOCK_INTERNAL_ASSERT_VALID_SIGNATURE(_N, ...)                 \
 | 
			
		||||
  static_assert(                                                       \
 | 
			
		||||
@@ -60,8 +61,8 @@
 | 
			
		||||
      "This method does not take " GMOCK_PP_STRINGIZE(                 \
 | 
			
		||||
          _N) " arguments. Parenthesize all types with unproctected commas.")
 | 
			
		||||
 | 
			
		||||
// TODO(iserna): Verify each element in spec is one of the allowed.
 | 
			
		||||
#define GMOCK_INTERNAL_ASSERT_VALID_SPEC(_Spec) static_assert(true, "");
 | 
			
		||||
#define GMOCK_INTERNAL_ASSERT_VALID_SPEC(_Spec) \
 | 
			
		||||
  GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_ASSERT_VALID_SPEC_ELEMENT, ~, _Spec)
 | 
			
		||||
 | 
			
		||||
#define GMOCK_INTERNAL_MOCK_METHOD_IMPL(_N, _MethodName, _Constness,           \
 | 
			
		||||
                                        _Override, _Final, _Noexcept,          \
 | 
			
		||||
@@ -100,6 +101,7 @@
 | 
			
		||||
 | 
			
		||||
#define GMOCK_INTERNAL_EXPAND(...) __VA_ARGS__
 | 
			
		||||
 | 
			
		||||
// Five Valid modifiers.
 | 
			
		||||
#define GMOCK_INTERNAL_HAS_CONST(_Tuple) \
 | 
			
		||||
  GMOCK_PP_HAS_COMMA(GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_DETECT_CONST, ~, _Tuple))
 | 
			
		||||
 | 
			
		||||
@@ -117,6 +119,17 @@
 | 
			
		||||
#define GMOCK_INTERNAL_GET_CALLTYPE(_Tuple) \
 | 
			
		||||
  GMOCK_PP_FOR_EACH(GMOCK_INTERNAL_GET_CALLTYPE_IMPL, ~, _Tuple)
 | 
			
		||||
 | 
			
		||||
#define GMOCK_INTERNAL_ASSERT_VALID_SPEC_ELEMENT(_i, _, _elem)            \
 | 
			
		||||
  static_assert(                                                          \
 | 
			
		||||
      (GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_CONST(_i, _, _elem)) +    \
 | 
			
		||||
       GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_OVERRIDE(_i, _, _elem)) + \
 | 
			
		||||
       GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_FINAL(_i, _, _elem)) +    \
 | 
			
		||||
       GMOCK_PP_HAS_COMMA(GMOCK_INTERNAL_DETECT_NOEXCEPT(_i, _, _elem)) + \
 | 
			
		||||
       GMOCK_INTERNAL_IS_CALLTYPE(_elem)) == 1,                           \
 | 
			
		||||
      GMOCK_PP_STRINGIZE(                                                 \
 | 
			
		||||
          _elem) " cannot be recognized as a valid specification modifier.");
 | 
			
		||||
 | 
			
		||||
// Modifiers implementation.
 | 
			
		||||
#define GMOCK_INTERNAL_DETECT_CONST(_i, _, _elem) \
 | 
			
		||||
  GMOCK_PP_CAT(GMOCK_INTERNAL_DETECT_CONST_I_, _elem)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,7 @@ static_assert(
 | 
			
		||||
#define GMOCK_PP_CAT(_1, _2) GMOCK_PP_INTERNAL_CAT(_1, _2)
 | 
			
		||||
 | 
			
		||||
// Expands and stringifies the only argument.
 | 
			
		||||
#define GMOCK_PP_STRINGIZE(_x) GMOCK_PP_INTERNAL_STRINGIZE(_x)
 | 
			
		||||
#define GMOCK_PP_STRINGIZE(...) GMOCK_PP_INTERNAL_STRINGIZE(__VA_ARGS__)
 | 
			
		||||
 | 
			
		||||
// Returns empty. Given a variadic number of arguments.
 | 
			
		||||
#define GMOCK_PP_EMPTY(...)
 | 
			
		||||
@@ -178,7 +178,7 @@ static_assert(
 | 
			
		||||
// file or we will break your code.
 | 
			
		||||
#define GMOCK_PP_INTENRAL_EMPTY_TUPLE (, , , , , , , , , , , , , , , )
 | 
			
		||||
#define GMOCK_PP_INTERNAL_CAT(_1, _2) _1##_2
 | 
			
		||||
#define GMOCK_PP_INTERNAL_STRINGIZE(_x) #_x
 | 
			
		||||
#define GMOCK_PP_INTERNAL_STRINGIZE(...) #__VA_ARGS__
 | 
			
		||||
#define GMOCK_PP_INTERNAL_INTERNAL_16TH(_1, _2, _3, _4, _5, _6, _7, _8, _9, \
 | 
			
		||||
                                        _10, _11, _12, _13, _14, _15, _16,  \
 | 
			
		||||
                                        ...)                                \
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user