Skip to content

Commit

Permalink
Compatility fixes for GCC5 (#2448)
Browse files Browse the repository at this point in the history
* GCC5 compat: work around inherited constructor issues

Don't use inherited constructors, forward manually instead. This
basically reverts 61f8031.

I believe that GCC5 does not implement P0136, a C++17 change that made
inherited constructors actually usable and was backported as a DR all
the way to C++11.

* GCC5 compat: bypass std::pair construction issue

Co-authored-by: Martin Hořeňovský <martin.horenovsky@gmail.com>
  • Loading branch information
Morwenn and horenmar committed Jun 7, 2022
1 parent d0177ee commit a0ece7b
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 4 deletions.
2 changes: 1 addition & 1 deletion src/catch2/internal/catch_reporter_spec_parser.cpp
Expand Up @@ -126,7 +126,7 @@ namespace Catch {
return {};
}

auto ret = kvPairs.emplace( kv.key, kv.value );
auto ret = kvPairs.emplace( std::string(kv.key), std::string(kv.value) );
if ( !ret.second ) {
// Duplicated key. We might want to handle this differently,
// e.g. by overwriting the existing value?
Expand Down
8 changes: 7 additions & 1 deletion src/catch2/reporters/catch_reporter_automake.hpp
Expand Up @@ -8,15 +8,21 @@
#ifndef CATCH_REPORTER_AUTOMAKE_HPP_INCLUDED
#define CATCH_REPORTER_AUTOMAKE_HPP_INCLUDED

#include <catch2/interfaces/catch_interfaces_reporter.hpp>
#include <catch2/reporters/catch_reporter_streaming_base.hpp>
#include <catch2/internal/catch_move_and_forward.hpp>

#include <string>

namespace Catch {

class AutomakeReporter final : public StreamingReporterBase {
public:
using StreamingReporterBase::StreamingReporterBase;
// GCC5 compat: we cannot use inherited constructor, because it
// doesn't implement backport of P0136
AutomakeReporter(ReporterConfig&& _config):
StreamingReporterBase(CATCH_MOVE(_config))
{}
~AutomakeReporter() override;

static std::string getDescription() {
Expand Down
8 changes: 7 additions & 1 deletion src/catch2/reporters/catch_reporter_cumulative_base.hpp
Expand Up @@ -8,7 +8,9 @@
#ifndef CATCH_REPORTER_CUMULATIVE_BASE_HPP_INCLUDED
#define CATCH_REPORTER_CUMULATIVE_BASE_HPP_INCLUDED

#include <catch2/interfaces/catch_interfaces_reporter.hpp>
#include <catch2/reporters/catch_reporter_common_base.hpp>
#include <catch2/internal/catch_move_and_forward.hpp>
#include <catch2/internal/catch_unique_ptr.hpp>
#include <catch2/internal/catch_optional.hpp>

Expand Down Expand Up @@ -88,7 +90,11 @@ namespace Catch {
using TestCaseNode = Node<TestCaseStats, SectionNode>;
using TestRunNode = Node<TestRunStats, TestCaseNode>;

using ReporterBase::ReporterBase;
// GCC5 compat: we cannot use inherited constructor, because it
// doesn't implement backport of P0136
CumulativeReporterBase(ReporterConfig&& _config):
ReporterBase(CATCH_MOVE(_config))
{}
~CumulativeReporterBase() override;

void benchmarkPreparing( StringRef ) override {}
Expand Down
8 changes: 7 additions & 1 deletion src/catch2/reporters/catch_reporter_streaming_base.hpp
Expand Up @@ -8,15 +8,21 @@
#ifndef CATCH_REPORTER_STREAMING_BASE_HPP_INCLUDED
#define CATCH_REPORTER_STREAMING_BASE_HPP_INCLUDED

#include <catch2/interfaces/catch_interfaces_reporter.hpp>
#include <catch2/reporters/catch_reporter_common_base.hpp>
#include <catch2/internal/catch_move_and_forward.hpp>

#include <vector>

namespace Catch {

class StreamingReporterBase : public ReporterBase {
public:
using ReporterBase::ReporterBase;
// GCC5 compat: we cannot use inherited constructor, because it
// doesn't implement backport of P0136
StreamingReporterBase(ReporterConfig&& _config):
ReporterBase(CATCH_MOVE(_config))
{}
~StreamingReporterBase() override;

void benchmarkPreparing( StringRef ) override {}
Expand Down

0 comments on commit a0ece7b

Please sign in to comment.