Skip to content

Commit b75ecf1

Browse files
fowlescopybara-github
authored andcommitted
Switch rank structs to be consistent with written guidance in go/ranked-overloads
PiperOrigin-RevId: 605110251 Change-Id: I304f3863333cb9ef0b85c5bab5277e757ef9950a
1 parent 96519a4 commit b75ecf1

File tree

1 file changed

+12
-11
lines changed

1 file changed

+12
-11
lines changed

googlemock/include/gmock/gmock-matchers.h

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2920,26 +2920,27 @@ class EachMatcher {
29202920
const M inner_matcher_;
29212921
};
29222922

2923-
struct Rank1 {};
2924-
struct Rank0 : Rank1 {};
2923+
// Use go/ranked-overloads for dispatching.
2924+
struct Rank0 {};
2925+
struct Rank1 : Rank0 {};
29252926

29262927
namespace pair_getters {
29272928
using std::get;
29282929
template <typename T>
2929-
auto First(T& x, Rank1) -> decltype(get<0>(x)) { // NOLINT
2930+
auto First(T& x, Rank0) -> decltype(get<0>(x)) { // NOLINT
29302931
return get<0>(x);
29312932
}
29322933
template <typename T>
2933-
auto First(T& x, Rank0) -> decltype((x.first)) { // NOLINT
2934+
auto First(T& x, Rank1) -> decltype((x.first)) { // NOLINT
29342935
return x.first;
29352936
}
29362937

29372938
template <typename T>
2938-
auto Second(T& x, Rank1) -> decltype(get<1>(x)) { // NOLINT
2939+
auto Second(T& x, Rank0) -> decltype(get<1>(x)) { // NOLINT
29392940
return get<1>(x);
29402941
}
29412942
template <typename T>
2942-
auto Second(T& x, Rank0) -> decltype((x.second)) { // NOLINT
2943+
auto Second(T& x, Rank1) -> decltype((x.second)) { // NOLINT
29432944
return x.second;
29442945
}
29452946
} // namespace pair_getters
@@ -2965,7 +2966,7 @@ class KeyMatcherImpl : public MatcherInterface<PairType> {
29652966
MatchResultListener* listener) const override {
29662967
StringMatchResultListener inner_listener;
29672968
const bool match = inner_matcher_.MatchAndExplain(
2968-
pair_getters::First(key_value, Rank0()), &inner_listener);
2969+
pair_getters::First(key_value, Rank1()), &inner_listener);
29692970
const std::string explanation = inner_listener.str();
29702971
if (!explanation.empty()) {
29712972
*listener << "whose first field is a value " << explanation;
@@ -3087,18 +3088,18 @@ class PairMatcherImpl : public MatcherInterface<PairType> {
30873088
if (!listener->IsInterested()) {
30883089
// If the listener is not interested, we don't need to construct the
30893090
// explanation.
3090-
return first_matcher_.Matches(pair_getters::First(a_pair, Rank0())) &&
3091-
second_matcher_.Matches(pair_getters::Second(a_pair, Rank0()));
3091+
return first_matcher_.Matches(pair_getters::First(a_pair, Rank1())) &&
3092+
second_matcher_.Matches(pair_getters::Second(a_pair, Rank1()));
30923093
}
30933094
StringMatchResultListener first_inner_listener;
3094-
if (!first_matcher_.MatchAndExplain(pair_getters::First(a_pair, Rank0()),
3095+
if (!first_matcher_.MatchAndExplain(pair_getters::First(a_pair, Rank1()),
30953096
&first_inner_listener)) {
30963097
*listener << "whose first field does not match";
30973098
PrintIfNotEmpty(first_inner_listener.str(), listener->stream());
30983099
return false;
30993100
}
31003101
StringMatchResultListener second_inner_listener;
3101-
if (!second_matcher_.MatchAndExplain(pair_getters::Second(a_pair, Rank0()),
3102+
if (!second_matcher_.MatchAndExplain(pair_getters::Second(a_pair, Rank1()),
31023103
&second_inner_listener)) {
31033104
*listener << "whose second field does not match";
31043105
PrintIfNotEmpty(second_inner_listener.str(), listener->stream());

0 commit comments

Comments
 (0)