mirror of
https://github.com/fmtlib/fmt.git
synced 2025-03-13 01:14:32 +00:00
Backport from GoogleTest: "Work around a maybe-uninitialized warning under GCC 12" (0320f517fd
)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
This commit is contained in:
parent
b6de66819e
commit
5bf577ca58
@ -13360,6 +13360,7 @@ bool UnorderedElementsAreMatcherImplBase::FindPairing(
|
|||||||
#include <memory>
|
#include <memory>
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <unordered_map>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
|
||||||
@ -13983,46 +13984,50 @@ MockObjectRegistry g_mock_object_registry;
|
|||||||
|
|
||||||
// Maps a mock object to the reaction Google Mock should have when an
|
// Maps a mock object to the reaction Google Mock should have when an
|
||||||
// uninteresting method is called. Protected by g_gmock_mutex.
|
// uninteresting method is called. Protected by g_gmock_mutex.
|
||||||
std::map<const void*, internal::CallReaction> g_uninteresting_call_reaction;
|
std::unordered_map<uintptr_t, internal::CallReaction>&
|
||||||
|
UninterestingCallReactionMap() {
|
||||||
|
static auto* map = new std::unordered_map<uintptr_t, internal::CallReaction>;
|
||||||
|
return *map;
|
||||||
|
}
|
||||||
|
|
||||||
// Sets the reaction Google Mock should have when an uninteresting
|
// Sets the reaction Google Mock should have when an uninteresting
|
||||||
// method of the given mock object is called.
|
// method of the given mock object is called.
|
||||||
void SetReactionOnUninterestingCalls(const void* mock_obj,
|
void SetReactionOnUninterestingCalls(uintptr_t mock_obj,
|
||||||
internal::CallReaction reaction)
|
internal::CallReaction reaction)
|
||||||
GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
|
GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
|
||||||
internal::MutexLock l(&internal::g_gmock_mutex);
|
internal::MutexLock l(&internal::g_gmock_mutex);
|
||||||
g_uninteresting_call_reaction[mock_obj] = reaction;
|
UninterestingCallReactionMap()[mock_obj] = reaction;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
// Tells Google Mock to allow uninteresting calls on the given mock
|
// Tells Google Mock to allow uninteresting calls on the given mock
|
||||||
// object.
|
// object.
|
||||||
void Mock::AllowUninterestingCalls(const void* mock_obj)
|
void Mock::AllowUninterestingCalls(uintptr_t mock_obj)
|
||||||
GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
|
GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
|
||||||
SetReactionOnUninterestingCalls(mock_obj, internal::kAllow);
|
SetReactionOnUninterestingCalls(mock_obj, internal::kAllow);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tells Google Mock to warn the user about uninteresting calls on the
|
// Tells Google Mock to warn the user about uninteresting calls on the
|
||||||
// given mock object.
|
// given mock object.
|
||||||
void Mock::WarnUninterestingCalls(const void* mock_obj)
|
void Mock::WarnUninterestingCalls(uintptr_t mock_obj)
|
||||||
GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
|
GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
|
||||||
SetReactionOnUninterestingCalls(mock_obj, internal::kWarn);
|
SetReactionOnUninterestingCalls(mock_obj, internal::kWarn);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tells Google Mock to fail uninteresting calls on the given mock
|
// Tells Google Mock to fail uninteresting calls on the given mock
|
||||||
// object.
|
// object.
|
||||||
void Mock::FailUninterestingCalls(const void* mock_obj)
|
void Mock::FailUninterestingCalls(uintptr_t mock_obj)
|
||||||
GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
|
GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
|
||||||
SetReactionOnUninterestingCalls(mock_obj, internal::kFail);
|
SetReactionOnUninterestingCalls(mock_obj, internal::kFail);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tells Google Mock the given mock object is being destroyed and its
|
// Tells Google Mock the given mock object is being destroyed and its
|
||||||
// entry in the call-reaction table should be removed.
|
// entry in the call-reaction table should be removed.
|
||||||
void Mock::UnregisterCallReaction(const void* mock_obj)
|
void Mock::UnregisterCallReaction(uintptr_t mock_obj)
|
||||||
GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
|
GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
|
||||||
internal::MutexLock l(&internal::g_gmock_mutex);
|
internal::MutexLock l(&internal::g_gmock_mutex);
|
||||||
g_uninteresting_call_reaction.erase(mock_obj);
|
UninterestingCallReactionMap().erase(static_cast<uintptr_t>(mock_obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the reaction Google Mock will have on uninteresting calls
|
// Returns the reaction Google Mock will have on uninteresting calls
|
||||||
@ -14031,9 +14036,12 @@ internal::CallReaction Mock::GetReactionOnUninterestingCalls(
|
|||||||
const void* mock_obj)
|
const void* mock_obj)
|
||||||
GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
|
GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex) {
|
||||||
internal::MutexLock l(&internal::g_gmock_mutex);
|
internal::MutexLock l(&internal::g_gmock_mutex);
|
||||||
return (g_uninteresting_call_reaction.count(mock_obj) == 0) ?
|
return (UninterestingCallReactionMap().count(
|
||||||
internal::intToCallReaction(GMOCK_FLAG(default_mock_behavior)) :
|
reinterpret_cast<uintptr_t>(mock_obj)) == 0)
|
||||||
g_uninteresting_call_reaction[mock_obj];
|
? internal::intToCallReaction(
|
||||||
|
GMOCK_FLAG(default_mock_behavior))
|
||||||
|
: UninterestingCallReactionMap()[reinterpret_cast<uintptr_t>(
|
||||||
|
mock_obj)];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tells Google Mock to ignore mock_obj when checking for leaked mock
|
// Tells Google Mock to ignore mock_obj when checking for leaked mock
|
||||||
|
@ -2860,6 +2860,7 @@ GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251
|
|||||||
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_SPEC_BUILDERS_H_
|
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_SPEC_BUILDERS_H_
|
||||||
#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_SPEC_BUILDERS_H_
|
#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_SPEC_BUILDERS_H_
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
@ -8646,22 +8647,22 @@ class GTEST_API_ Mock {
|
|||||||
|
|
||||||
// Tells Google Mock to allow uninteresting calls on the given mock
|
// Tells Google Mock to allow uninteresting calls on the given mock
|
||||||
// object.
|
// object.
|
||||||
static void AllowUninterestingCalls(const void* mock_obj)
|
static void AllowUninterestingCalls(uintptr_t mock_obj)
|
||||||
GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
|
GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
|
||||||
|
|
||||||
// Tells Google Mock to warn the user about uninteresting calls on
|
// Tells Google Mock to warn the user about uninteresting calls on
|
||||||
// the given mock object.
|
// the given mock object.
|
||||||
static void WarnUninterestingCalls(const void* mock_obj)
|
static void WarnUninterestingCalls(uintptr_t mock_obj)
|
||||||
GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
|
GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
|
||||||
|
|
||||||
// Tells Google Mock to fail uninteresting calls on the given mock
|
// Tells Google Mock to fail uninteresting calls on the given mock
|
||||||
// object.
|
// object.
|
||||||
static void FailUninterestingCalls(const void* mock_obj)
|
static void FailUninterestingCalls(uintptr_t mock_obj)
|
||||||
GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
|
GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
|
||||||
|
|
||||||
// Tells Google Mock the given mock object is being destroyed and
|
// Tells Google Mock the given mock object is being destroyed and
|
||||||
// its entry in the call-reaction table should be removed.
|
// its entry in the call-reaction table should be removed.
|
||||||
static void UnregisterCallReaction(const void* mock_obj)
|
static void UnregisterCallReaction(uintptr_t mock_obj)
|
||||||
GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
|
GTEST_LOCK_EXCLUDED_(internal::g_gmock_mutex);
|
||||||
|
|
||||||
// Returns the reaction Google Mock will have on uninteresting calls
|
// Returns the reaction Google Mock will have on uninteresting calls
|
||||||
@ -11417,6 +11418,7 @@ MATCHER(IsFalse, negation ? "is true" : "is false") {
|
|||||||
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_NICE_STRICT_H_
|
#ifndef GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_NICE_STRICT_H_
|
||||||
#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_NICE_STRICT_H_
|
#define GOOGLEMOCK_INCLUDE_GMOCK_GMOCK_NICE_STRICT_H_
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
|
|
||||||
|
|
||||||
@ -11461,25 +11463,37 @@ constexpr bool HasStrictnessModifier() {
|
|||||||
template <typename Base>
|
template <typename Base>
|
||||||
class NiceMockImpl {
|
class NiceMockImpl {
|
||||||
public:
|
public:
|
||||||
NiceMockImpl() { ::testing::Mock::AllowUninterestingCalls(this); }
|
NiceMockImpl() {
|
||||||
|
::testing::Mock::AllowUninterestingCalls(reinterpret_cast<uintptr_t>(this));
|
||||||
|
}
|
||||||
|
|
||||||
~NiceMockImpl() { ::testing::Mock::UnregisterCallReaction(this); }
|
~NiceMockImpl() {
|
||||||
|
::testing::Mock::UnregisterCallReaction(reinterpret_cast<uintptr_t>(this));
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename Base>
|
template <typename Base>
|
||||||
class NaggyMockImpl {
|
class NaggyMockImpl {
|
||||||
public:
|
public:
|
||||||
NaggyMockImpl() { ::testing::Mock::WarnUninterestingCalls(this); }
|
NaggyMockImpl() {
|
||||||
|
::testing::Mock::WarnUninterestingCalls(reinterpret_cast<uintptr_t>(this));
|
||||||
|
}
|
||||||
|
|
||||||
~NaggyMockImpl() { ::testing::Mock::UnregisterCallReaction(this); }
|
~NaggyMockImpl() {
|
||||||
|
::testing::Mock::UnregisterCallReaction(reinterpret_cast<uintptr_t>(this));
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename Base>
|
template <typename Base>
|
||||||
class StrictMockImpl {
|
class StrictMockImpl {
|
||||||
public:
|
public:
|
||||||
StrictMockImpl() { ::testing::Mock::FailUninterestingCalls(this); }
|
StrictMockImpl() {
|
||||||
|
::testing::Mock::FailUninterestingCalls(reinterpret_cast<uintptr_t>(this));
|
||||||
|
}
|
||||||
|
|
||||||
~StrictMockImpl() { ::testing::Mock::UnregisterCallReaction(this); }
|
~StrictMockImpl() {
|
||||||
|
::testing::Mock::UnregisterCallReaction(reinterpret_cast<uintptr_t>(this));
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace internal
|
} // namespace internal
|
||||||
|
Loading…
x
Reference in New Issue
Block a user