Fix compilation error with CATCH_CONFIG_GLOBAL_NEXTAFTER

Wrong nesting of namespaces resulted in the `Catch` namespace
being ambigous between `::Catch` and `::{anon}::Catch` namespaces.
This should fix it.

Closes #1761
This commit is contained in:
Martin Hořeňovský 2019-10-05 20:58:11 +02:00
parent c38a5caa2e
commit 4bd2c3ad6a
No known key found for this signature in database
GPG Key ID: DE48307B8B0D381A
1 changed files with 48 additions and 43 deletions

View File

@ -22,16 +22,6 @@
namespace Catch {
namespace Matchers {
namespace Floating {
enum class FloatingPointKind : uint8_t {
Float,
Double
};
}
}
}
namespace {
int32_t convert(float f) {
@ -67,10 +57,16 @@ bool almostEqualUlps(FP lhs, FP rhs, uint64_t maxUlpDiff) {
auto ulpDiff = std::abs(lc - rc);
return static_cast<uint64_t>(ulpDiff) <= maxUlpDiff;
}
}
#if defined(CATCH_CONFIG_GLOBAL_NEXTAFTER)
namespace Catch {
#if defined(__clang__)
#pragma clang diagnostic push
// The long double overload is currently unused
#pragma clang diagnostic ignored "-Wunused-function"
#endif
float nextafter(float x, float y) {
return ::nextafterf(x, y);
}
@ -82,10 +78,15 @@ namespace Catch {
long double nextafter(long double x, long double y) {
return ::nextafterl(x, y);
}
} // end namespace Catch
#if defined(__clang__)
#pragma clang diagnostic pop
#endif
#endif // ^^^ CATCH_CONFIG_GLOBAL_NEXTAFTER ^^^
namespace {
template <typename FP>
FP step(FP start, FP direction, uint64_t steps) {
for (uint64_t i = 0; i < steps; ++i) {
@ -97,13 +98,17 @@ FP step(FP start, FP direction, uint64_t steps) {
}
return start;
}
} // end anonymous namespace
namespace Catch {
namespace Matchers {
namespace Floating {
enum class FloatingPointKind : uint8_t {
Float,
Double
};
WithinAbsMatcher::WithinAbsMatcher(double target, double margin)
:m_target{ target }, m_margin{ margin } {
CATCH_ENFORCE(margin >= 0, "Invalid margin: " << margin << '.'