Add GTEST_MOVE macro, to support mocking methods with move-only return types.
Add GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
This commit is contained in:
parent
7d1051ce2b
commit
35956659ea
@ -198,6 +198,10 @@
|
||||
// GTEST_DISALLOW_COPY_AND_ASSIGN_ - disables copy ctor and operator=.
|
||||
// GTEST_MUST_USE_RESULT_ - declares that a function's result must be used.
|
||||
//
|
||||
// C++11 feature wrappers:
|
||||
//
|
||||
// GTEST_MOVE_ - portability wrapper for std::move.
|
||||
//
|
||||
// Synchronization:
|
||||
// Mutex, MutexLock, ThreadLocal, GetThreadCount()
|
||||
// - synchronization primitives.
|
||||
@ -264,6 +268,7 @@
|
||||
#include <iostream> // NOLINT
|
||||
#include <sstream> // NOLINT
|
||||
#include <string> // NOLINT
|
||||
#include <utility>
|
||||
|
||||
#define GTEST_DEV_EMAIL_ "googletestframework@@googlegroups.com"
|
||||
#define GTEST_FLAG_PREFIX_ "gtest_"
|
||||
@ -823,6 +828,12 @@ using ::std::tuple_size;
|
||||
# define GTEST_MUST_USE_RESULT_
|
||||
#endif // __GNUC__ && (GTEST_GCC_VER_ >= 30400) && !COMPILER_ICC
|
||||
|
||||
#if GTEST_LANG_CXX11
|
||||
# define GTEST_MOVE_(x) ::std::move(x) // NOLINT
|
||||
#else
|
||||
# define GTEST_MOVE_(x) x
|
||||
#endif
|
||||
|
||||
// Determine whether the compiler supports Microsoft's Structured Exception
|
||||
// Handling. This is supported by several Windows compilers but generally
|
||||
// does not exist on any other system.
|
||||
@ -875,10 +886,22 @@ using ::std::tuple_size;
|
||||
__attribute__((no_sanitize_memory))
|
||||
# else
|
||||
# define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
|
||||
# endif
|
||||
# endif // __has_feature(memory_sanitizer)
|
||||
#else
|
||||
# define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
|
||||
#endif
|
||||
#endif // __clang__
|
||||
|
||||
// A function level attribute to disable AddressSanitizer instrumentation.
|
||||
#if defined(__clang__)
|
||||
# if __has_feature(address_sanitizer)
|
||||
# define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_ \
|
||||
__attribute__((no_sanitize_address))
|
||||
# else
|
||||
# define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
|
||||
# endif // __has_feature(address_sanitizer)
|
||||
#else
|
||||
# define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
|
||||
#endif // __clang__
|
||||
|
||||
namespace testing {
|
||||
|
||||
|
@ -57,6 +57,7 @@ using ::std::ostream;
|
||||
|
||||
// Prints a segment of bytes in the given object.
|
||||
GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
|
||||
GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
|
||||
void PrintByteSegmentInObjectTo(const unsigned char* obj_bytes, size_t start,
|
||||
size_t count, ostream* os) {
|
||||
char text[5] = "";
|
||||
@ -254,6 +255,7 @@ void PrintTo(wchar_t wc, ostream* os) {
|
||||
// and may not be NUL-terminated.
|
||||
template <typename CharType>
|
||||
GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
|
||||
GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
|
||||
static void PrintCharsAsStringTo(
|
||||
const CharType* begin, size_t len, ostream* os) {
|
||||
const char* const kQuoteBegin = sizeof(CharType) == 1 ? "\"" : "L\"";
|
||||
@ -276,6 +278,7 @@ static void PrintCharsAsStringTo(
|
||||
// 'begin'. CharType must be either char or wchar_t.
|
||||
template <typename CharType>
|
||||
GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
|
||||
GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
|
||||
static void UniversalPrintCharArray(
|
||||
const CharType* begin, size_t len, ostream* os) {
|
||||
// The code
|
||||
|
Loading…
Reference in New Issue
Block a user