From c064322a9d9807a74f9974cba1cf06551c5808bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Ho=C5=99e=C5=88ovsk=C3=BD?= Date: Wed, 9 Jun 2021 22:09:00 +0200 Subject: [PATCH] Devirtualize ITracker::parent --- src/catch2/internal/catch_test_case_tracker.cpp | 10 ++-------- src/catch2/internal/catch_test_case_tracker.hpp | 14 +++++++------- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/src/catch2/internal/catch_test_case_tracker.cpp b/src/catch2/internal/catch_test_case_tracker.cpp index 9354b362..b040f63a 100644 --- a/src/catch2/internal/catch_test_case_tracker.cpp +++ b/src/catch2/internal/catch_test_case_tracker.cpp @@ -84,9 +84,8 @@ namespace TestCaseTracking { TrackerBase::TrackerBase( NameAndLocation const& nameAndLocation, TrackerContext& ctx, ITracker* parent ): - ITracker(nameAndLocation), - m_ctx( ctx ), - m_parent( parent ) + ITracker(nameAndLocation, parent), + m_ctx( ctx ) {} bool TrackerBase::isComplete() const { @@ -99,11 +98,6 @@ namespace TestCaseTracking { return m_runState != NotStarted && !isComplete(); } - ITracker* TrackerBase::parent() { - assert( m_parent ); // Should always be non-null except for root - return m_parent; - } - void TrackerBase::openChild() { if( m_runState != ExecutingChildren ) { m_runState = ExecutingChildren; diff --git a/src/catch2/internal/catch_test_case_tracker.hpp b/src/catch2/internal/catch_test_case_tracker.hpp index 9e36a19d..8c2222af 100644 --- a/src/catch2/internal/catch_test_case_tracker.hpp +++ b/src/catch2/internal/catch_test_case_tracker.hpp @@ -38,11 +38,13 @@ namespace TestCaseTracking { using Children = std::vector; protected: + ITracker* m_parent = nullptr; Children m_children; public: - ITracker(NameAndLocation const& nameAndLoc) : - m_nameAndLocation(nameAndLoc) + ITracker( NameAndLocation const& nameAndLoc, ITracker* parent ): + m_nameAndLocation( nameAndLoc ), + m_parent( parent ) {} @@ -50,6 +52,9 @@ namespace TestCaseTracking { NameAndLocation const& nameAndLocation() const { return m_nameAndLocation; } + ITracker* parent() const { + return m_parent; + } virtual ~ITracker(); // = default @@ -60,8 +65,6 @@ namespace TestCaseTracking { virtual bool isOpen() const = 0; // Started but not complete virtual bool hasStarted() const = 0; - virtual ITracker* parent() = 0; - // actions virtual void close() = 0; // Successfully complete virtual void fail() = 0; @@ -125,7 +128,6 @@ namespace TestCaseTracking { }; TrackerContext& m_ctx; - ITracker* m_parent; CycleState m_runState = NotStarted; public: @@ -138,8 +140,6 @@ namespace TestCaseTracking { return m_runState != NotStarted; } - ITracker* parent() override; - void openChild() override; bool isSectionTracker() const override;