mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-30 19:57:10 +01:00 
			
		
		
		
	Conditionally removes usage of deprecated features
-add macros to test for C++ version and features to catch_compiler_capabilities.hpp - replaces dynamic exception specifications (deprecated) with noexcept in C++ Version >= 11 - defines defaulted copy constructor/move constructors/assignment in C++ Version >= 11 since their implicit generation is deprecated under some circumstances. - fixes #259
This commit is contained in:
		| @@ -41,6 +41,12 @@ namespace Catch { | ||||
|         AssertionResult(); | ||||
|         AssertionResult( AssertionInfo const& info, AssertionResultData const& data ); | ||||
|         ~AssertionResult(); | ||||
| #  ifdef CATCH_CPP11_OR_GREATER | ||||
|          AssertionResult( AssertionResult const& )              = default; | ||||
|          AssertionResult( AssertionResult && )                  = default; | ||||
|          AssertionResult& operator = ( AssertionResult const& ) = default; | ||||
|          AssertionResult& operator = ( AssertionResult && )     = default; | ||||
| #  endif | ||||
|  | ||||
|         bool isOk() const; | ||||
|         bool succeeded() const; | ||||
|   | ||||
| @@ -113,6 +113,11 @@ namespace Catch { | ||||
|         :   file( other.file ), | ||||
|             line( other.line ) | ||||
|         {} | ||||
| #  ifdef CATCH_CPP11_OR_GREATER | ||||
|         SourceLineInfo( SourceLineInfo && )                  = default; | ||||
|         SourceLineInfo& operator = ( SourceLineInfo const& ) = default; | ||||
|         SourceLineInfo& operator = ( SourceLineInfo && )     = default; | ||||
| #  endif | ||||
|         bool empty() const { | ||||
|             return file.empty(); | ||||
|         } | ||||
|   | ||||
| @@ -81,5 +81,27 @@ | ||||
|  | ||||
| #endif | ||||
|  | ||||
| //////////////////////////////////////////////////////////////////////////////// | ||||
| // C++ language feature support | ||||
|  | ||||
| // detect language version: | ||||
| #if (__cplusplus == 201103L) | ||||
| #  define CATCH_CPP11 | ||||
| #  define CATCH_CPP11_OR_GREATER | ||||
| #elif (__cplusplus >= 201103L) | ||||
| #  define CATCH_CPP11_OR_GREATER | ||||
| #endif | ||||
|  | ||||
| // noexcept support: | ||||
| #ifdef CATCH_CPP11_OR_GREATER | ||||
| #  if (__has_feature(cxx_noexcept)) | ||||
| #    define CATCH_NOEXCEPT noexcept | ||||
| #    define CATCH_NOEXCEPT_IS(x) noexcept(x) | ||||
| #  endif | ||||
| #else | ||||
| #  define CATCH_NOEXCEPT throw() | ||||
| #  define CATCH_NOEXCEPT_IS(x) | ||||
| #endif | ||||
|  | ||||
| #endif // TWOBLUECUBES_CATCH_COMPILER_CAPABILITIES_HPP_INCLUDED | ||||
|  | ||||
|   | ||||
| @@ -14,14 +14,21 @@ | ||||
|  | ||||
| namespace Catch { | ||||
|  | ||||
| // Wraps the LHS of an expression and captures the operator and RHS (if any) - wrapping them all | ||||
| // in an ExpressionResultBuilder object | ||||
| // Wraps the LHS of an expression and captures the operator and RHS (if any) - | ||||
| // wrapping them all in an ExpressionResultBuilder object | ||||
| template<typename T> | ||||
| class ExpressionLhs { | ||||
|     void operator = ( ExpressionLhs const& ); | ||||
|     ExpressionLhs& operator = ( ExpressionLhs const& ); | ||||
| #  ifdef CATCH_CPP11_OR_GREATER | ||||
|     ExpressionLhs& operator = ( ExpressionLhs && ) = delete; | ||||
| #  endif | ||||
|  | ||||
| public: | ||||
|     ExpressionLhs( T lhs ) : m_lhs( lhs ) {} | ||||
| #  ifdef CATCH_CPP11_OR_GREATER | ||||
|     ExpressionLhs( ExpressionLhs const& ) = default; | ||||
|     ExpressionLhs( ExpressionLhs && )     = default; | ||||
| #  endif | ||||
|  | ||||
|     template<typename RhsT> | ||||
|     ExpressionResultBuilder& operator == ( RhsT const& rhs ) { | ||||
|   | ||||
| @@ -39,7 +39,7 @@ | ||||
| namespace Catch { | ||||
|     NonCopyable::~NonCopyable() {} | ||||
|     IShared::~IShared() {} | ||||
|     StreamBufBase::~StreamBufBase() throw() {} | ||||
|     StreamBufBase::~StreamBufBase() CATCH_NOEXCEPT {} | ||||
|     IContext::~IContext() {} | ||||
|     IResultCapture::~IResultCapture() {} | ||||
|     ITestCase::~ITestCase() {} | ||||
|   | ||||
| @@ -114,6 +114,13 @@ namespace Catch | ||||
|         } | ||||
|         virtual ~AssertionStats(); | ||||
|  | ||||
| #  ifdef CATCH_CPP11_OR_GREATER | ||||
|         AssertionStats( AssertionStats const& )              = default; | ||||
|         AssertionStats( AssertionStats && )                  = default; | ||||
|         AssertionStats& operator = ( AssertionStats const& ) = default; | ||||
|         AssertionStats& operator = ( AssertionStats && )     = default; | ||||
| #  endif | ||||
|  | ||||
|         AssertionResult assertionResult; | ||||
|         std::vector<MessageInfo> infoMessages; | ||||
|         Totals totals; | ||||
| @@ -130,6 +137,12 @@ namespace Catch | ||||
|             missingAssertions( _missingAssertions ) | ||||
|         {} | ||||
|         virtual ~SectionStats(); | ||||
| #  ifdef CATCH_CPP11_OR_GREATER | ||||
|         SectionStats( SectionStats const& )              = default; | ||||
|         SectionStats( SectionStats && )                  = default; | ||||
|         SectionStats& operator = ( SectionStats const& ) = default; | ||||
|         SectionStats& operator = ( SectionStats && )     = default; | ||||
| #  endif | ||||
|  | ||||
|         SectionInfo sectionInfo; | ||||
|         Counts assertions; | ||||
| @@ -151,6 +164,13 @@ namespace Catch | ||||
|         {} | ||||
|         virtual ~TestCaseStats(); | ||||
|  | ||||
| #  ifdef CATCH_CPP11_OR_GREATER | ||||
|         TestCaseStats( TestCaseStats const& )              = default; | ||||
|         TestCaseStats( TestCaseStats && )                  = default; | ||||
|         TestCaseStats& operator = ( TestCaseStats const& ) = default; | ||||
|         TestCaseStats& operator = ( TestCaseStats && )     = default; | ||||
| #  endif | ||||
|  | ||||
|         TestCaseInfo testInfo; | ||||
|         Totals totals; | ||||
|         std::string stdOut; | ||||
| @@ -172,6 +192,13 @@ namespace Catch | ||||
|         {} | ||||
|         virtual ~TestGroupStats(); | ||||
|  | ||||
| #  ifdef CATCH_CPP11_OR_GREATER | ||||
|         TestGroupStats( TestGroupStats const& )              = default; | ||||
|         TestGroupStats( TestGroupStats && )                  = default; | ||||
|         TestGroupStats& operator = ( TestGroupStats const& ) = default; | ||||
|         TestGroupStats& operator = ( TestGroupStats && )     = default; | ||||
| #  endif | ||||
|  | ||||
|         GroupInfo groupInfo; | ||||
|         Totals totals; | ||||
|         bool aborting; | ||||
| @@ -185,12 +212,20 @@ namespace Catch | ||||
|             totals( _totals ), | ||||
|             aborting( _aborting ) | ||||
|         {} | ||||
|         virtual ~TestRunStats(); | ||||
|  | ||||
| #  ifndef CATCH_CPP11_OR_GREATER | ||||
|         TestRunStats( TestRunStats const& _other ) | ||||
|         :   runInfo( _other.runInfo ), | ||||
|             totals( _other.totals ), | ||||
|             aborting( _other.aborting ) | ||||
|         {} | ||||
|         virtual ~TestRunStats(); | ||||
| #  else | ||||
|         TestRunStats( TestRunStats const& )              = default; | ||||
|         TestRunStats( TestRunStats && )                  = default; | ||||
|         TestRunStats& operator = ( TestRunStats const& ) = default; | ||||
|         TestRunStats& operator = ( TestRunStats && )     = default; | ||||
| #  endif | ||||
|  | ||||
|         TestRunInfo runInfo; | ||||
|         Totals totals; | ||||
|   | ||||
| @@ -18,9 +18,9 @@ namespace Catch { | ||||
|     public: | ||||
|         NotImplementedException( SourceLineInfo const& lineInfo ); | ||||
|  | ||||
|         virtual ~NotImplementedException() throw() {} | ||||
|         virtual ~NotImplementedException() CATCH_NOEXCEPT {} | ||||
|  | ||||
|         virtual const char* what() const throw(); | ||||
|         virtual const char* what() const CATCH_NOEXCEPT; | ||||
|  | ||||
|     private: | ||||
|         std::string m_what; | ||||
|   | ||||
| @@ -21,7 +21,7 @@ namespace Catch { | ||||
|         m_what = oss.str(); | ||||
|     } | ||||
|  | ||||
|     const char* NotImplementedException::what() const throw() { | ||||
|     const char* NotImplementedException::what() const CATCH_NOEXCEPT { | ||||
|         return m_what.c_str(); | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -33,6 +33,13 @@ namespace Catch { | ||||
|                 getCurrentContext().getResultCapture().sectionEnded( m_info, m_assertions, m_timer.getElapsedSeconds() ); | ||||
|         } | ||||
|  | ||||
| #  ifdef CATCH_CPP11_OR_GREATER | ||||
|         Section( Section const& )              = default; | ||||
|         Section( Section && )                  = default; | ||||
|         Section& operator = ( Section const& ) = default; | ||||
|         Section& operator = ( Section && )     = default; | ||||
| #  endif | ||||
|  | ||||
|         // This indicates whether the section should be executed or not | ||||
|         operator bool() { | ||||
|             return m_sectionIncluded; | ||||
|   | ||||
| @@ -27,7 +27,7 @@ namespace Catch { | ||||
|             setp( data, data + sizeof(data) ); | ||||
|         } | ||||
|  | ||||
|         ~StreamBufImpl() throw() { | ||||
|         ~StreamBufImpl() CATCH_NOEXCEPT { | ||||
|             sync(); | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -14,7 +14,7 @@ namespace Catch { | ||||
|  | ||||
|     class StreamBufBase : public std::streambuf { | ||||
|     public: | ||||
|         virtual ~StreamBufBase() throw(); | ||||
|         virtual ~StreamBufBase() CATCH_NOEXCEPT; | ||||
|     }; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -66,11 +66,18 @@ namespace Catch { | ||||
|                 endElement(); | ||||
|         } | ||||
|  | ||||
| #  ifndef CATCH_CPP11_OR_GREATER | ||||
|         XmlWriter& operator = ( XmlWriter const& other ) { | ||||
|             XmlWriter temp( other ); | ||||
|             swap( temp ); | ||||
|             return *this; | ||||
|         } | ||||
| #  else | ||||
|         XmlWriter( XmlWriter const& )              = default; | ||||
|         XmlWriter( XmlWriter && )                  = default; | ||||
|         XmlWriter& operator = ( XmlWriter const& ) = default; | ||||
|         XmlWriter& operator = ( XmlWriter && )     = default; | ||||
| #  endif | ||||
|  | ||||
|         void swap( XmlWriter& other ) { | ||||
|             std::swap( m_tagIsOpen, other.m_tagIsOpen ); | ||||
|   | ||||
| @@ -52,6 +52,10 @@ namespace Clara { | ||||
|         template<typename ConfigT> | ||||
|         struct IArgFunction { | ||||
|             virtual ~IArgFunction() {} | ||||
| #  ifdef CATCH_CPP11_OR_GREATER | ||||
|             IArgFunction()                      = default; | ||||
|             IArgFunction( IArgFunction const& ) = default; | ||||
| #  endif | ||||
|             virtual void set( ConfigT& config, std::string const& value ) const = 0; | ||||
|             virtual void setFlag( ConfigT& config ) const = 0; | ||||
|             virtual bool takesArg() const = 0; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 gnzlbg
					gnzlbg