diff options
| author | Martin Hořeňovský | 2026-04-06 22:51:55 +0200 |
|---|---|---|
| committer | Martin Hořeňovský | 2026-04-07 09:32:07 +0200 |
| commit | e83218c2dfdf80fd53526fe389c0a3271696a106 (patch) | |
| tree | 615e00e7369bfec07c29f0ffae4b56df314dd3e4 /src/catch2 | |
| parent | 548e14a8c8147c5d20898d9d97809887ab89ad60 (diff) | |
| download | catch3-e83218c2dfdf80fd53526fe389c0a3271696a106.tar.gz | |
Move all use of IResultCapture in AssertionHandler into the cpp file
This has two advantages
1) Removing the include of `catch_interfaces_capture.hpp` from the
header and potentially allowing further pruning later.
2) Providing small-but-measurable 1-2% speedup for assertions.
Diffstat (limited to 'src/catch2')
| -rw-r--r-- | src/catch2/internal/catch_assertion_handler.cpp | 5 | ||||
| -rw-r--r-- | src/catch2/internal/catch_assertion_handler.hpp | 11 |
2 files changed, 12 insertions, 4 deletions
diff --git a/src/catch2/internal/catch_assertion_handler.cpp b/src/catch2/internal/catch_assertion_handler.cpp index 9a28e79c..a0fcfcb4 100644 --- a/src/catch2/internal/catch_assertion_handler.cpp +++ b/src/catch2/internal/catch_assertion_handler.cpp @@ -6,6 +6,7 @@ // SPDX-License-Identifier: BSL-1.0 #include <catch2/internal/catch_assertion_handler.hpp> +#include <catch2/interfaces/catch_interfaces_capture.hpp> #include <catch2/interfaces/catch_interfaces_config.hpp> #include <catch2/internal/catch_context.hpp> #include <catch2/internal/catch_debugger.hpp> @@ -14,6 +15,10 @@ namespace Catch { + void AssertionHandler::finishIncomplete() { + m_resultCapture.handleIncomplete( m_assertionInfo ); + } + AssertionHandler::AssertionHandler ( StringRef macroName, SourceLineInfo const& lineInfo, diff --git a/src/catch2/internal/catch_assertion_handler.hpp b/src/catch2/internal/catch_assertion_handler.hpp index c71c6898..bc37469d 100644 --- a/src/catch2/internal/catch_assertion_handler.hpp +++ b/src/catch2/internal/catch_assertion_handler.hpp @@ -10,12 +10,13 @@ #include <catch2/catch_assertion_info.hpp> #include <catch2/internal/catch_decomposer.hpp> -#include <catch2/interfaces/catch_interfaces_capture.hpp> #include <string> namespace Catch { + class IResultCapture; + struct AssertionReaction { bool shouldDebugBreak = false; bool shouldThrow = false; @@ -28,6 +29,8 @@ namespace Catch { bool m_completed = false; IResultCapture& m_resultCapture; + void finishIncomplete(); + public: AssertionHandler ( StringRef macroName, @@ -35,9 +38,9 @@ namespace Catch { StringRef capturedExpression, ResultDisposition::Flags resultDisposition ); ~AssertionHandler() { - if ( !m_completed ) { - m_resultCapture.handleIncomplete( m_assertionInfo ); - } + // We want the common fast path inlinable, and the virtual + // dispatch in a function in single TU. + if ( !m_completed ) { finishIncomplete(); } } |