Index: testing/gmock/include/gmock/gmock-generated-matchers.h.pump |
diff --git a/testing/gmock/include/gmock/gmock-generated-matchers.h.pump b/testing/gmock/include/gmock/gmock-generated-matchers.h.pump |
index fb2bc3589ac8b6b9c998947725780cd835500ed4..07a51a36666fbacd0ea167d4142fd06fc2d87979 100644 |
--- a/testing/gmock/include/gmock/gmock-generated-matchers.h.pump |
+++ b/testing/gmock/include/gmock/gmock-generated-matchers.h.pump |
@@ -118,15 +118,28 @@ class ArgsMatcherImpl : public MatcherInterface<ArgsTuple> { |
virtual bool MatchAndExplain(ArgsTuple args, |
MatchResultListener* listener) const { |
- return inner_matcher_.MatchAndExplain(GetSelectedArgs(args), listener); |
+ const SelectedArgs& selected_args = GetSelectedArgs(args); |
+ if (!listener->IsInterested()) |
+ return inner_matcher_.Matches(selected_args); |
+ |
+ PrintIndices(listener->stream()); |
+ *listener << "are " << PrintToString(selected_args); |
+ |
+ StringMatchResultListener inner_listener; |
+ const bool match = inner_matcher_.MatchAndExplain(selected_args, |
+ &inner_listener); |
+ PrintIfNotEmpty(inner_listener.str(), listener->stream()); |
+ return match; |
} |
virtual void DescribeTo(::std::ostream* os) const { |
+ *os << "are a tuple "; |
PrintIndices(os); |
inner_matcher_.DescribeTo(os); |
} |
virtual void DescribeNegationTo(::std::ostream* os) const { |
+ *os << "are a tuple "; |
PrintIndices(os); |
inner_matcher_.DescribeNegationTo(os); |
} |
@@ -138,7 +151,7 @@ class ArgsMatcherImpl : public MatcherInterface<ArgsTuple> { |
// Prints the indices of the selected fields. |
static void PrintIndices(::std::ostream* os) { |
- *os << "are a tuple whose fields ("; |
+ *os << "whose fields ("; |
const int indices[$n] = { $ks }; |
for (int i = 0; i < $n; i++) { |
if (indices[i] < 0) |