diff --git a/include/gmock/gmock-matchers.h b/include/gmock/gmock-matchers.h index 6450f9b7..822337b1 100644 --- a/include/gmock/gmock-matchers.h +++ b/include/gmock/gmock-matchers.h @@ -979,7 +979,11 @@ class IsNullMatcher { template bool MatchAndExplain(const Pointer& p, MatchResultListener* /* listener */) const { +#if GTEST_LANG_CXX11 + return p == nullptr; +#else // GTEST_LANG_CXX11 return GetRawPointer(p) == NULL; +#endif // GTEST_LANG_CXX11 } void DescribeTo(::std::ostream* os) const { *os << "is NULL"; } @@ -995,7 +999,11 @@ class NotNullMatcher { template bool MatchAndExplain(const Pointer& p, MatchResultListener* /* listener */) const { +#if GTEST_LANG_CXX11 + return p != nullptr; +#else // GTEST_LANG_CXX11 return GetRawPointer(p) != NULL; +#endif // GTEST_LANG_CXX11 } void DescribeTo(::std::ostream* os) const { *os << "isn't NULL"; } diff --git a/scripts/gmock_doctor.py b/scripts/gmock_doctor.py index e6e6a521..c6a8a900 100755 --- a/scripts/gmock_doctor.py +++ b/scripts/gmock_doctor.py @@ -362,7 +362,7 @@ def _MockObjectPointerDiagnoser(msg): r'which is of non-class type \'(.*::)*(?P.+)\*\'') clang_regex = (_CLANG_FILE_LINE_RE + r'error: member reference type ' r'\'(?P.*?) *\' is a pointer; ' - r'maybe you meant to use \'->\'\?') + r'(did you mean|maybe you meant) to use \'->\'\?') diagnosis = """ The first argument to ON_CALL() and EXPECT_CALL() must be a mock *object*, not a *pointer* to it. Please write '*(%(mock_object)s)' instead of diff --git a/test/gmock-matchers_test.cc b/test/gmock-matchers_test.cc index be2e9009..494c85f4 100644 --- a/test/gmock-matchers_test.cc +++ b/test/gmock-matchers_test.cc @@ -1025,6 +1025,15 @@ TEST(IsNullTest, ReferenceToConstLinkedPtr) { EXPECT_FALSE(m.Matches(non_null_p)); } +#if GTEST_LANG_CXX11 +TEST(IsNullTest, StdFunction) { + const Matcher> m = IsNull(); + + EXPECT_TRUE(m.Matches(std::function())); + EXPECT_FALSE(m.Matches([]{})); +} +#endif // GTEST_LANG_CXX11 + TEST(IsNullTest, ReferenceToConstScopedPtr) { const Matcher&> m = IsNull(); const scoped_ptr null_p; @@ -1073,6 +1082,15 @@ TEST(NotNullTest, ReferenceToConstLinkedPtr) { EXPECT_TRUE(m.Matches(non_null_p)); } +#if GTEST_LANG_CXX11 +TEST(NotNullTest, StdFunction) { + const Matcher> m = NotNull(); + + EXPECT_TRUE(m.Matches([]{})); + EXPECT_FALSE(m.Matches(std::function())); +} +#endif // GTEST_LANG_CXX11 + TEST(NotNullTest, ReferenceToConstScopedPtr) { const Matcher&> m = NotNull(); const scoped_ptr null_p;