From 4394d3ae65e076c749dc95a27f3178b94ba09e94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Ho=C5=99e=C5=88ovsk=C3=BD?= Date: Tue, 19 May 2020 21:23:35 +0200 Subject: [PATCH] Translate exceptions by const reference instead of plain ref --- docs/tostring.md | 2 +- src/catch2/catch_translate_exception.hpp | 8 ++++---- tests/SelfTest/UsageTests/Exception.tests.cpp | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/tostring.md b/docs/tostring.md index 156c895a..87a0caf0 100644 --- a/docs/tostring.md +++ b/docs/tostring.md @@ -64,7 +64,7 @@ namespace Catch { By default all exceptions deriving from `std::exception` will be translated to strings by calling the `what()` method. For exception types that do not derive from `std::exception` - or if `what()` does not return a suitable string - use `CATCH_TRANSLATE_EXCEPTION`. This defines a function that takes your exception type, by reference, and returns a string. It can appear anywhere in the code - it doesn't have to be in the same translation unit. For example: ```cpp -CATCH_TRANSLATE_EXCEPTION( MyType& ex ) { +CATCH_TRANSLATE_EXCEPTION( MyType const& ex ) { return ex.message(); } ``` diff --git a/src/catch2/catch_translate_exception.hpp b/src/catch2/catch_translate_exception.hpp index 0b5a3747..81021faa 100644 --- a/src/catch2/catch_translate_exception.hpp +++ b/src/catch2/catch_translate_exception.hpp @@ -12,7 +12,7 @@ namespace Catch { class ExceptionTranslator : public IExceptionTranslator { public: - ExceptionTranslator( std::string(*translateFunction)( T& ) ) + ExceptionTranslator( std::string(*translateFunction)( T const& ) ) : m_translateFunction( translateFunction ) {} @@ -24,7 +24,7 @@ namespace Catch { else return (*it)->translate( it+1, itEnd ); } - catch( T& ex ) { + catch( T const& ex ) { return m_translateFunction( ex ); } #else @@ -33,12 +33,12 @@ namespace Catch { } protected: - std::string(*m_translateFunction)( T& ); + std::string(*m_translateFunction)( T const& ); }; public: template - ExceptionTranslatorRegistrar( std::string(*translateFunction)( T& ) ) { + ExceptionTranslatorRegistrar( std::string(*translateFunction)( T const& ) ) { getMutableRegistryHub().registerTranslator ( new ExceptionTranslator( translateFunction ) ); } diff --git a/tests/SelfTest/UsageTests/Exception.tests.cpp b/tests/SelfTest/UsageTests/Exception.tests.cpp index f8c628b9..1f6b4fa2 100644 --- a/tests/SelfTest/UsageTests/Exception.tests.cpp +++ b/tests/SelfTest/UsageTests/Exception.tests.cpp @@ -122,15 +122,15 @@ TEST_CASE( "When unchecked exceptions are thrown, but caught, they do not affect } -CATCH_TRANSLATE_EXCEPTION( CustomException& ex ) { +CATCH_TRANSLATE_EXCEPTION( CustomException const& ex ) { return ex.getMessage(); } -CATCH_TRANSLATE_EXCEPTION( CustomStdException& ex ) { +CATCH_TRANSLATE_EXCEPTION( CustomStdException const& ex ) { return ex.getMessage(); } -CATCH_TRANSLATE_EXCEPTION( double& ex ) { +CATCH_TRANSLATE_EXCEPTION( double const& ex ) { return Catch::Detail::stringify( ex ); }