mirror of
https://github.com/google/googletest.git
synced 2024-12-27 10:11:03 +08:00
Switch rank structs to be consistent with written guidance in go/ranked-overloads
PiperOrigin-RevId: 605110251 Change-Id: I304f3863333cb9ef0b85c5bab5277e757ef9950a
This commit is contained in:
parent
96519a4019
commit
b75ecf1bed
@ -2920,26 +2920,27 @@ class EachMatcher {
|
|||||||
const M inner_matcher_;
|
const M inner_matcher_;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Rank1 {};
|
// Use go/ranked-overloads for dispatching.
|
||||||
struct Rank0 : Rank1 {};
|
struct Rank0 {};
|
||||||
|
struct Rank1 : Rank0 {};
|
||||||
|
|
||||||
namespace pair_getters {
|
namespace pair_getters {
|
||||||
using std::get;
|
using std::get;
|
||||||
template <typename T>
|
template <typename T>
|
||||||
auto First(T& x, Rank1) -> decltype(get<0>(x)) { // NOLINT
|
auto First(T& x, Rank0) -> decltype(get<0>(x)) { // NOLINT
|
||||||
return get<0>(x);
|
return get<0>(x);
|
||||||
}
|
}
|
||||||
template <typename T>
|
template <typename T>
|
||||||
auto First(T& x, Rank0) -> decltype((x.first)) { // NOLINT
|
auto First(T& x, Rank1) -> decltype((x.first)) { // NOLINT
|
||||||
return x.first;
|
return x.first;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
auto Second(T& x, Rank1) -> decltype(get<1>(x)) { // NOLINT
|
auto Second(T& x, Rank0) -> decltype(get<1>(x)) { // NOLINT
|
||||||
return get<1>(x);
|
return get<1>(x);
|
||||||
}
|
}
|
||||||
template <typename T>
|
template <typename T>
|
||||||
auto Second(T& x, Rank0) -> decltype((x.second)) { // NOLINT
|
auto Second(T& x, Rank1) -> decltype((x.second)) { // NOLINT
|
||||||
return x.second;
|
return x.second;
|
||||||
}
|
}
|
||||||
} // namespace pair_getters
|
} // namespace pair_getters
|
||||||
@ -2965,7 +2966,7 @@ class KeyMatcherImpl : public MatcherInterface<PairType> {
|
|||||||
MatchResultListener* listener) const override {
|
MatchResultListener* listener) const override {
|
||||||
StringMatchResultListener inner_listener;
|
StringMatchResultListener inner_listener;
|
||||||
const bool match = inner_matcher_.MatchAndExplain(
|
const bool match = inner_matcher_.MatchAndExplain(
|
||||||
pair_getters::First(key_value, Rank0()), &inner_listener);
|
pair_getters::First(key_value, Rank1()), &inner_listener);
|
||||||
const std::string explanation = inner_listener.str();
|
const std::string explanation = inner_listener.str();
|
||||||
if (!explanation.empty()) {
|
if (!explanation.empty()) {
|
||||||
*listener << "whose first field is a value " << explanation;
|
*listener << "whose first field is a value " << explanation;
|
||||||
@ -3087,18 +3088,18 @@ class PairMatcherImpl : public MatcherInterface<PairType> {
|
|||||||
if (!listener->IsInterested()) {
|
if (!listener->IsInterested()) {
|
||||||
// If the listener is not interested, we don't need to construct the
|
// If the listener is not interested, we don't need to construct the
|
||||||
// explanation.
|
// explanation.
|
||||||
return first_matcher_.Matches(pair_getters::First(a_pair, Rank0())) &&
|
return first_matcher_.Matches(pair_getters::First(a_pair, Rank1())) &&
|
||||||
second_matcher_.Matches(pair_getters::Second(a_pair, Rank0()));
|
second_matcher_.Matches(pair_getters::Second(a_pair, Rank1()));
|
||||||
}
|
}
|
||||||
StringMatchResultListener first_inner_listener;
|
StringMatchResultListener first_inner_listener;
|
||||||
if (!first_matcher_.MatchAndExplain(pair_getters::First(a_pair, Rank0()),
|
if (!first_matcher_.MatchAndExplain(pair_getters::First(a_pair, Rank1()),
|
||||||
&first_inner_listener)) {
|
&first_inner_listener)) {
|
||||||
*listener << "whose first field does not match";
|
*listener << "whose first field does not match";
|
||||||
PrintIfNotEmpty(first_inner_listener.str(), listener->stream());
|
PrintIfNotEmpty(first_inner_listener.str(), listener->stream());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
StringMatchResultListener second_inner_listener;
|
StringMatchResultListener second_inner_listener;
|
||||||
if (!second_matcher_.MatchAndExplain(pair_getters::Second(a_pair, Rank0()),
|
if (!second_matcher_.MatchAndExplain(pair_getters::Second(a_pair, Rank1()),
|
||||||
&second_inner_listener)) {
|
&second_inner_listener)) {
|
||||||
*listener << "whose second field does not match";
|
*listener << "whose second field does not match";
|
||||||
PrintIfNotEmpty(second_inner_listener.str(), listener->stream());
|
PrintIfNotEmpty(second_inner_listener.str(), listener->stream());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user