From 02d647925955836d04d90aafb5ae10a092af29bc Mon Sep 17 00:00:00 2001 From: kosak Date: Sat, 14 Feb 2015 02:22:21 +0000 Subject: [PATCH] This change adds an explicit invocation of std::move to workaround a problem in VC++'s /analyze compiler that was causing build errors in Chrome: https://code.google.com/p/googlemock/issues/detail?id=172 --- include/gmock/gmock-matchers.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/gmock/gmock-matchers.h b/include/gmock/gmock-matchers.h index ca09756f..6450f9b7 100644 --- a/include/gmock/gmock-matchers.h +++ b/include/gmock/gmock-matchers.h @@ -2263,8 +2263,15 @@ class PropertyMatcher { *listener << "whose given property is "; // Cannot pass the return value (for example, int) to MatchPrintAndExplain, // which takes a non-const reference as argument. +#if defined(_PREFAST_ ) && _MSC_VER == 1800 + // Workaround bug in VC++ 2013's /analyze parser. + // https://connect.microsoft.com/VisualStudio/feedback/details/1106363/internal-compiler-error-with-analyze-due-to-failure-to-infer-move + posix::Abort(); // To make sure it is never run. + return false; +#else RefToConstProperty result = (obj.*property_)(); return MatchPrintAndExplain(result, matcher_, listener); +#endif } bool MatchAndExplainImpl(true_type /* is_pointer */, const Class* p,