summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Kulukundis <kfm@google.com>2024-02-07 23:05:25 (GMT)
committerCopybara-Service <copybara-worker@google.com>2024-02-07 23:06:10 (GMT)
commitb75ecf1bed2fcd416b66c86cb6fe79122abf132e (patch)
tree6b387f7b5d83d5800db1c546a6b40aa607da57f0
parent96519a4019ff084112db9e532a621f92721cda4b (diff)
downloadgoogletest-b75ecf1bed2fcd416b66c86cb6fe79122abf132e.zip
googletest-b75ecf1bed2fcd416b66c86cb6fe79122abf132e.tar.gz
googletest-b75ecf1bed2fcd416b66c86cb6fe79122abf132e.tar.bz2
Switch rank structs to be consistent with written guidance in go/ranked-overloads
PiperOrigin-RevId: 605110251 Change-Id: I304f3863333cb9ef0b85c5bab5277e757ef9950a
-rw-r--r--googlemock/include/gmock/gmock-matchers.h23
1 files changed, 12 insertions, 11 deletions
diff --git a/googlemock/include/gmock/gmock-matchers.h b/googlemock/include/gmock/gmock-matchers.h
index 8052c74..c4149f2 100644
--- a/googlemock/include/gmock/gmock-matchers.h
+++ b/googlemock/include/gmock/gmock-matchers.h
@@ -2920,26 +2920,27 @@ class EachMatcher {
const M inner_matcher_;
};
-struct Rank1 {};
-struct Rank0 : Rank1 {};
+// Use go/ranked-overloads for dispatching.
+struct Rank0 {};
+struct Rank1 : Rank0 {};
namespace pair_getters {
using std::get;
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);
}
template <typename T>
-auto First(T& x, Rank0) -> decltype((x.first)) { // NOLINT
+auto First(T& x, Rank1) -> decltype((x.first)) { // NOLINT
return x.first;
}
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);
}
template <typename T>
-auto Second(T& x, Rank0) -> decltype((x.second)) { // NOLINT
+auto Second(T& x, Rank1) -> decltype((x.second)) { // NOLINT
return x.second;
}
} // namespace pair_getters
@@ -2965,7 +2966,7 @@ class KeyMatcherImpl : public MatcherInterface<PairType> {
MatchResultListener* listener) const override {
StringMatchResultListener inner_listener;
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();
if (!explanation.empty()) {
*listener << "whose first field is a value " << explanation;
@@ -3087,18 +3088,18 @@ class PairMatcherImpl : public MatcherInterface<PairType> {
if (!listener->IsInterested()) {
// If the listener is not interested, we don't need to construct the
// explanation.
- return first_matcher_.Matches(pair_getters::First(a_pair, Rank0())) &&
- second_matcher_.Matches(pair_getters::Second(a_pair, Rank0()));
+ return first_matcher_.Matches(pair_getters::First(a_pair, Rank1())) &&
+ second_matcher_.Matches(pair_getters::Second(a_pair, Rank1()));
}
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)) {
*listener << "whose first field does not match";
PrintIfNotEmpty(first_inner_listener.str(), listener->stream());
return false;
}
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)) {
*listener << "whose second field does not match";
PrintIfNotEmpty(second_inner_listener.str(), listener->stream());