Remove "second argument" from result builder and assertion result

This is not quite complete removal (it doesn't pass approval tests),
but it should be representative of full perf improvements from doing so
This commit is contained in:
Martin Hořeňovský 2017-06-22 18:13:05 +02:00
parent dcab8a5971
commit 0eb101e165
5 changed files with 15 additions and 20 deletions

View File

@ -43,14 +43,12 @@ namespace Catch {
AssertionInfo( char const * _macroName,
SourceLineInfo const& _lineInfo,
char const * _capturedExpression,
ResultDisposition::Flags _resultDisposition,
char const * _secondArg = "");
ResultDisposition::Flags _resultDisposition);
char const * macroName;
SourceLineInfo lineInfo;
char const * capturedExpression;
ResultDisposition::Flags resultDisposition;
char const * secondArg;
};
struct AssertionResultData

View File

@ -16,13 +16,11 @@ namespace Catch {
AssertionInfo::AssertionInfo( char const * _macroName,
SourceLineInfo const& _lineInfo,
char const * _capturedExpression,
ResultDisposition::Flags _resultDisposition,
char const * _secondArg)
ResultDisposition::Flags _resultDisposition)
: macroName( _macroName ),
lineInfo( _lineInfo ),
capturedExpression( _capturedExpression ),
resultDisposition( _resultDisposition ),
secondArg( _secondArg )
resultDisposition( _resultDisposition )
{}
AssertionResult::AssertionResult() {}
@ -64,15 +62,16 @@ namespace Catch {
std::string AssertionResult::getExpression() const {
if (isFalseTest(m_info.resultDisposition))
return '!' + capturedExpressionWithSecondArgument(m_info.capturedExpression, m_info.secondArg);
return '!' + std::string(m_info.capturedExpression);
else
return capturedExpressionWithSecondArgument(m_info.capturedExpression, m_info.secondArg);
return std::string(m_info.capturedExpression);
}
std::string AssertionResult::getExpressionInMacro() const {
if( m_info.macroName[0] == 0 )
return capturedExpressionWithSecondArgument(m_info.capturedExpression, m_info.secondArg);
return std::string(m_info.capturedExpression);
else
return std::string(m_info.macroName) + "( " + capturedExpressionWithSecondArgument(m_info.capturedExpression, m_info.secondArg) + " )";
return std::string(m_info.macroName) + "( " + m_info.capturedExpression + " )";
}
bool AssertionResult::hasExpandedExpression() const {

View File

@ -107,7 +107,7 @@
///////////////////////////////////////////////////////////////////////////////
#define INTERNAL_CATCH_THROWS( macroName, resultDisposition, matcher, expr ) \
do { \
Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition, #matcher ); \
Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr ", " #matcher, resultDisposition); \
if( __catchResult.allowThrows() ) \
try { \
static_cast<void>(expr); \

View File

@ -37,8 +37,7 @@ namespace Catch {
ResultBuilder( char const* macroName,
SourceLineInfo const& lineInfo,
char const* capturedExpression,
ResultDisposition::Flags resultDisposition,
char const* secondArg = "" );
ResultDisposition::Flags resultDisposition);
~ResultBuilder();
template<typename T>

View File

@ -21,9 +21,8 @@ namespace Catch {
ResultBuilder::ResultBuilder( char const* macroName,
SourceLineInfo const& lineInfo,
char const* capturedExpression,
ResultDisposition::Flags resultDisposition,
char const* secondArg )
: m_assertionInfo( macroName, lineInfo, capturedExpression, resultDisposition, secondArg ),
ResultDisposition::Flags resultDisposition)
: m_assertionInfo( macroName, lineInfo, capturedExpression, resultDisposition),
m_shouldDebugBreak( false ),
m_shouldThrow( false ),
m_guardException( false )
@ -77,7 +76,7 @@ namespace Catch {
assert( !isFalseTest( m_assertionInfo.resultDisposition ) );
AssertionResultData data = m_data;
data.resultType = ResultWas::Ok;
data.reconstructedExpression = capturedExpressionWithSecondArgument(m_assertionInfo.capturedExpression, m_assertionInfo.secondArg);
data.reconstructedExpression = m_assertionInfo.capturedExpression;
std::string actualMessage = Catch::translateActiveException();
if( !matcher.match( actualMessage ) ) {
@ -149,7 +148,7 @@ namespace Catch {
}
void ResultBuilder::reconstructExpression( std::string& dest ) const {
dest = capturedExpressionWithSecondArgument(m_assertionInfo.capturedExpression, m_assertionInfo.secondArg);
dest = m_assertionInfo.capturedExpression;
}
void ResultBuilder::setExceptionGuard() {