Skip to content

Commit

Permalink
v2.11.1
Browse files Browse the repository at this point in the history
  • Loading branch information
horenmar committed Dec 28, 2019
1 parent 55794e9 commit d10b9bd
Show file tree
Hide file tree
Showing 6 changed files with 99 additions and 69 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Expand Up @@ -14,7 +14,7 @@ if (CMAKE_BINARY_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
endif() endif()




project(Catch2 LANGUAGES CXX VERSION 2.11.0) project(Catch2 LANGUAGES CXX VERSION 2.11.1)


# Provide path for scripts # Provide path for scripts
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/CMake") list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/CMake")
Expand Down
4 changes: 2 additions & 2 deletions README.md
Expand Up @@ -5,11 +5,11 @@
[![Build Status](https://travis-ci.org/catchorg/Catch2.svg?branch=master)](https://travis-ci.org/catchorg/Catch2) [![Build Status](https://travis-ci.org/catchorg/Catch2.svg?branch=master)](https://travis-ci.org/catchorg/Catch2)
[![Build status](https://ci.appveyor.com/api/projects/status/github/catchorg/Catch2?svg=true)](https://ci.appveyor.com/project/catchorg/catch2) [![Build status](https://ci.appveyor.com/api/projects/status/github/catchorg/Catch2?svg=true)](https://ci.appveyor.com/project/catchorg/catch2)
[![codecov](https://codecov.io/gh/catchorg/Catch2/branch/master/graph/badge.svg)](https://codecov.io/gh/catchorg/Catch2) [![codecov](https://codecov.io/gh/catchorg/Catch2/branch/master/graph/badge.svg)](https://codecov.io/gh/catchorg/Catch2)
[![Try online](https://img.shields.io/badge/try-online-blue.svg)](https://wandbox.org/permlink/HU1MkiBgFetFQJU4) [![Try online](https://img.shields.io/badge/try-online-blue.svg)](https://wandbox.org/permlink/Fj98nizVNqgaWH3i)
[![Join the chat in Discord: https://discord.gg/4CWS9zD](https://img.shields.io/badge/Discord-Chat!-brightgreen.svg)](https://discord.gg/4CWS9zD) [![Join the chat in Discord: https://discord.gg/4CWS9zD](https://img.shields.io/badge/Discord-Chat!-brightgreen.svg)](https://discord.gg/4CWS9zD)




<a href="https://github.com/catchorg/Catch2/releases/download/v2.11.0/catch.hpp">The latest version of the single header can be downloaded directly using this link</a> <a href="https://github.com/catchorg/Catch2/releases/download/v2.11.1/catch.hpp">The latest version of the single header can be downloaded directly using this link</a>


## Catch2 is released! ## Catch2 is released!


Expand Down
12 changes: 12 additions & 0 deletions docs/release-notes.md
Expand Up @@ -31,6 +31,18 @@
[Older versions](#older-versions)<br> [Older versions](#older-versions)<br>
[Even Older versions](#even-older-versions)<br> [Even Older versions](#even-older-versions)<br>


## 2.11.1

### Improvements
* Breaking into debugger is supported on iOS (#1817)
* `google-build-using-namespace` clang-tidy warning is suppressed (#1799)

### Fixes
* Clang on Windows is no longer assumed to implement MSVC's traditional preprocessor (#1806)
* `ObjectStorage` now behaves properly in `const` contexts (#1820)
* `GENERATE_COPY(a, b)` now compiles properly (#1809, #1815)
* Some more cleanups in the benchmarking support



## 2.11.0 ## 2.11.0


Expand Down
2 changes: 1 addition & 1 deletion include/catch.hpp
Expand Up @@ -11,7 +11,7 @@


#define CATCH_VERSION_MAJOR 2 #define CATCH_VERSION_MAJOR 2
#define CATCH_VERSION_MINOR 11 #define CATCH_VERSION_MINOR 11
#define CATCH_VERSION_PATCH 0 #define CATCH_VERSION_PATCH 1


#ifdef __clang__ #ifdef __clang__
# pragma clang system_header # pragma clang system_header
Expand Down
2 changes: 1 addition & 1 deletion include/internal/catch_version.cpp
Expand Up @@ -37,7 +37,7 @@ namespace Catch {
} }


Version const& libraryVersion() { Version const& libraryVersion() {
static Version version( 2, 11, 0, "", 0 ); static Version version( 2, 11, 1, "", 0 );
return version; return version;
} }


Expand Down
146 changes: 82 additions & 64 deletions single_include/catch2/catch.hpp
@@ -1,6 +1,6 @@
/* /*
* Catch v2.11.0 * Catch v2.11.1
* Generated: 2019-11-15 15:01:56.628356 * Generated: 2019-12-28 21:22:11.930976
* ---------------------------------------------------------- * ----------------------------------------------------------
* This file has been merged from multiple headers. Please don't edit it directly * This file has been merged from multiple headers. Please don't edit it directly
* Copyright (c) 2019 Two Blue Cubes Ltd. All rights reserved. * Copyright (c) 2019 Two Blue Cubes Ltd. All rights reserved.
Expand All @@ -15,7 +15,7 @@


#define CATCH_VERSION_MAJOR 2 #define CATCH_VERSION_MAJOR 2
#define CATCH_VERSION_MINOR 11 #define CATCH_VERSION_MINOR 11
#define CATCH_VERSION_PATCH 0 #define CATCH_VERSION_PATCH 1


#ifdef __clang__ #ifdef __clang__
# pragma clang system_header # pragma clang system_header
Expand Down Expand Up @@ -241,9 +241,12 @@ namespace Catch {
// MSVC traditional preprocessor needs some workaround for __VA_ARGS__ // MSVC traditional preprocessor needs some workaround for __VA_ARGS__
// _MSVC_TRADITIONAL == 0 means new conformant preprocessor // _MSVC_TRADITIONAL == 0 means new conformant preprocessor
// _MSVC_TRADITIONAL == 1 means old traditional non-conformant preprocessor // _MSVC_TRADITIONAL == 1 means old traditional non-conformant preprocessor
# if !defined(_MSVC_TRADITIONAL) || (defined(_MSVC_TRADITIONAL) && _MSVC_TRADITIONAL) # if !defined(__clang__) // Handle Clang masquerading for msvc
# define CATCH_INTERNAL_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR # if !defined(_MSVC_TRADITIONAL) || (defined(_MSVC_TRADITIONAL) && _MSVC_TRADITIONAL)
# endif # define CATCH_INTERNAL_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR
# endif // MSVC_TRADITIONAL
# endif // __clang__

#endif // _MSC_VER #endif // _MSC_VER


#if defined(_REENTRANT) || defined(_MSC_VER) #if defined(_REENTRANT) || defined(_MSC_VER)
Expand Down Expand Up @@ -3907,7 +3910,6 @@ namespace Generators {
class SingleValueGenerator final : public IGenerator<T> { class SingleValueGenerator final : public IGenerator<T> {
T m_value; T m_value;
public: public:
SingleValueGenerator(T const& value) : m_value( value ) {}
SingleValueGenerator(T&& value) : m_value(std::move(value)) {} SingleValueGenerator(T&& value) : m_value(std::move(value)) {}


T const& get() const override { T const& get() const override {
Expand Down Expand Up @@ -3970,21 +3972,21 @@ namespace Generators {
m_generators.emplace_back(std::move(generator)); m_generators.emplace_back(std::move(generator));
} }
void populate(T&& val) { void populate(T&& val) {
m_generators.emplace_back(value(std::move(val))); m_generators.emplace_back(value(std::forward<T>(val)));
} }
template<typename U> template<typename U>
void populate(U&& val) { void populate(U&& val) {
populate(T(std::move(val))); populate(T(std::forward<U>(val)));
} }
template<typename U, typename... Gs> template<typename U, typename... Gs>
void populate(U&& valueOrGenerator, Gs... moreGenerators) { void populate(U&& valueOrGenerator, Gs &&... moreGenerators) {
populate(std::forward<U>(valueOrGenerator)); populate(std::forward<U>(valueOrGenerator));
populate(std::forward<Gs>(moreGenerators)...); populate(std::forward<Gs>(moreGenerators)...);
} }


public: public:
template <typename... Gs> template <typename... Gs>
Generators(Gs... moreGenerators) { Generators(Gs &&... moreGenerators) {
m_generators.reserve(sizeof...(Gs)); m_generators.reserve(sizeof...(Gs));
populate(std::forward<Gs>(moreGenerators)...); populate(std::forward<Gs>(moreGenerators)...);
} }
Expand Down Expand Up @@ -4015,19 +4017,19 @@ namespace Generators {
struct as {}; struct as {};


template<typename T, typename... Gs> template<typename T, typename... Gs>
auto makeGenerators( GeneratorWrapper<T>&& generator, Gs... moreGenerators ) -> Generators<T> { auto makeGenerators( GeneratorWrapper<T>&& generator, Gs &&... moreGenerators ) -> Generators<T> {
return Generators<T>(std::move(generator), std::forward<Gs>(moreGenerators)...); return Generators<T>(std::move(generator), std::forward<Gs>(moreGenerators)...);
} }
template<typename T> template<typename T>
auto makeGenerators( GeneratorWrapper<T>&& generator ) -> Generators<T> { auto makeGenerators( GeneratorWrapper<T>&& generator ) -> Generators<T> {
return Generators<T>(std::move(generator)); return Generators<T>(std::move(generator));
} }
template<typename T, typename... Gs> template<typename T, typename... Gs>
auto makeGenerators( T&& val, Gs... moreGenerators ) -> Generators<T> { auto makeGenerators( T&& val, Gs &&... moreGenerators ) -> Generators<T> {
return makeGenerators( value( std::forward<T>( val ) ), std::forward<Gs>( moreGenerators )... ); return makeGenerators( value( std::forward<T>( val ) ), std::forward<Gs>( moreGenerators )... );
} }
template<typename T, typename U, typename... Gs> template<typename T, typename U, typename... Gs>
auto makeGenerators( as<T>, U&& val, Gs... moreGenerators ) -> Generators<T> { auto makeGenerators( as<T>, U&& val, Gs &&... moreGenerators ) -> Generators<T> {
return makeGenerators( value( T( std::forward<U>( val ) ) ), std::forward<Gs>( moreGenerators )... ); return makeGenerators( value( T( std::forward<U>( val ) ) ), std::forward<Gs>( moreGenerators )... );
} }


Expand All @@ -4053,11 +4055,11 @@ namespace Generators {
} // namespace Catch } // namespace Catch


#define GENERATE( ... ) \ #define GENERATE( ... ) \
Catch::Generators::generate( CATCH_INTERNAL_LINEINFO, [ ]{ using namespace Catch::Generators; return makeGenerators( __VA_ARGS__ ); } ) Catch::Generators::generate( CATCH_INTERNAL_LINEINFO, [ ]{ using namespace Catch::Generators; return makeGenerators( __VA_ARGS__ ); } ) //NOLINT(google-build-using-namespace)
#define GENERATE_COPY( ... ) \ #define GENERATE_COPY( ... ) \
Catch::Generators::generate( CATCH_INTERNAL_LINEINFO, [=]{ using namespace Catch::Generators; return makeGenerators( __VA_ARGS__ ); } ) Catch::Generators::generate( CATCH_INTERNAL_LINEINFO, [=]{ using namespace Catch::Generators; return makeGenerators( __VA_ARGS__ ); } ) //NOLINT(google-build-using-namespace)
#define GENERATE_REF( ... ) \ #define GENERATE_REF( ... ) \
Catch::Generators::generate( CATCH_INTERNAL_LINEINFO, [&]{ using namespace Catch::Generators; return makeGenerators( __VA_ARGS__ ); } ) Catch::Generators::generate( CATCH_INTERNAL_LINEINFO, [&]{ using namespace Catch::Generators; return makeGenerators( __VA_ARGS__ ); } ) //NOLINT(google-build-using-namespace)


// end catch_generators.hpp // end catch_generators.hpp
// start catch_generators_generic.hpp // start catch_generators_generic.hpp
Expand Down Expand Up @@ -7320,60 +7322,65 @@ namespace Catch {
#include <type_traits> #include <type_traits>


namespace Catch { namespace Catch {
namespace Detail { namespace Benchmark {
template <typename T, bool Destruct> namespace Detail {
struct ObjectStorage template <typename T, bool Destruct>
{ struct ObjectStorage
using TStorage = typename std::aligned_storage<sizeof(T), std::alignment_of<T>::value>::type; {
using TStorage = typename std::aligned_storage<sizeof(T), std::alignment_of<T>::value>::type;


ObjectStorage() : data() {} ObjectStorage() : data() {}


ObjectStorage(const ObjectStorage& other) ObjectStorage(const ObjectStorage& other)
{ {
new(&data) T(other.stored_object()); new(&data) T(other.stored_object());
} }


ObjectStorage(ObjectStorage&& other) ObjectStorage(ObjectStorage&& other)
{ {
new(&data) T(std::move(other.stored_object())); new(&data) T(std::move(other.stored_object()));
} }


~ObjectStorage() { destruct_on_exit<T>(); } ~ObjectStorage() { destruct_on_exit<T>(); }


template <typename... Args> template <typename... Args>
void construct(Args&&... args) void construct(Args&&... args)
{ {
new (&data) T(std::forward<Args>(args)...); new (&data) T(std::forward<Args>(args)...);
} }


template <bool AllowManualDestruction = !Destruct> template <bool AllowManualDestruction = !Destruct>
typename std::enable_if<AllowManualDestruction>::type destruct() typename std::enable_if<AllowManualDestruction>::type destruct()
{ {
stored_object().~T(); stored_object().~T();
} }


private: private:
// If this is a constructor benchmark, destruct the underlying object // If this is a constructor benchmark, destruct the underlying object
template <typename U> template <typename U>
void destruct_on_exit(typename std::enable_if<Destruct, U>::type* = 0) { destruct<true>(); } void destruct_on_exit(typename std::enable_if<Destruct, U>::type* = 0) { destruct<true>(); }
// Otherwise, don't // Otherwise, don't
template <typename U> template <typename U>
void destruct_on_exit(typename std::enable_if<!Destruct, U>::type* = 0) { } void destruct_on_exit(typename std::enable_if<!Destruct, U>::type* = 0) { }


T& stored_object() T& stored_object() {
{ return *static_cast<T*>(static_cast<void*>(&data));
return *static_cast<T*>(static_cast<void*>(&data)); }
}


TStorage data; T const& stored_object() const {
}; return *static_cast<T*>(static_cast<void*>(&data));
} }


template <typename T> TStorage data;
using storage_for = Detail::ObjectStorage<T, true>; };
}


template <typename T> template <typename T>
using destructable_object = Detail::ObjectStorage<T, false>; using storage_for = Detail::ObjectStorage<T, true>;

template <typename T>
using destructable_object = Detail::ObjectStorage<T, false>;
}
} }


// end catch_constructor.hpp // end catch_constructor.hpp
Expand Down Expand Up @@ -7854,6 +7861,17 @@ namespace Catch {


#define CATCH_TRAP() __asm__("int $3\n" : : ) /* NOLINT */ #define CATCH_TRAP() __asm__("int $3\n" : : ) /* NOLINT */


#elif defined(CATCH_PLATFORM_IPHONE)

// use inline assembler
#if defined(__i386__) || defined(__x86_64__)
#define CATCH_TRAP() __asm__("int $3")
#elif defined(__aarch64__)
#define CATCH_TRAP() __asm__(".inst 0xd4200000")
#elif defined(__arm__)
#define CATCH_TRAP() __asm__(".inst 0xe7f001f0")
#endif

#elif defined(CATCH_PLATFORM_LINUX) #elif defined(CATCH_PLATFORM_LINUX)
// If we can use inline assembler, do it because this allows us to break // If we can use inline assembler, do it because this allows us to break
// directly at the location of the failing check instead of breaking inside // directly at the location of the failing check instead of breaking inside
Expand Down Expand Up @@ -10094,7 +10112,7 @@ namespace {


bool useColourOnPlatform() { bool useColourOnPlatform() {
return return
#ifdef CATCH_PLATFORM_MAC #if defined(CATCH_PLATFORM_MAC) || defined(CATCH_PLATFORM_IPHONE)
!isDebuggerActive() && !isDebuggerActive() &&
#endif #endif
#if !(defined(__DJGPP__) && defined(__STRICT_ANSI__)) #if !(defined(__DJGPP__) && defined(__STRICT_ANSI__))
Expand Down Expand Up @@ -10271,7 +10289,7 @@ namespace Catch {
// end catch_debug_console.cpp // end catch_debug_console.cpp
// start catch_debugger.cpp // start catch_debugger.cpp


#ifdef CATCH_PLATFORM_MAC #if defined(CATCH_PLATFORM_MAC) || defined(CATCH_PLATFORM_IPHONE)


# include <assert.h> # include <assert.h>
# include <stdbool.h> # include <stdbool.h>
Expand Down Expand Up @@ -15050,7 +15068,7 @@ namespace Catch {
} }


Version const& libraryVersion() { Version const& libraryVersion() {
static Version version( 2, 11, 0, "", 0 ); static Version version( 2, 11, 1, "", 0 );
return version; return version;
} }


Expand Down

0 comments on commit d10b9bd

Please sign in to comment.