Compare commits

...

19 Commits

Author SHA1 Message Date
c44bdae6ac Merge branch 'develop' 2019-06-06 15:22:51 -07:00
bfddc104c6 Merge remote-tracking branch 'origin/develop' 2019-06-06 15:18:09 -07:00
f1af13409d BOOST_NO_EXCEPTIONS tests updated for [noreturn] 2019-06-06 15:09:27 -07:00
2aaa7975b6 Merge pull request #22 from Oberon00/patch-1
Guard diagnostic_information against null what()
2019-03-16 22:39:26 -07:00
90694bc3b9 Guard diagnostic_information against null what() 2019-03-11 17:56:55 +01:00
b63736ac89 Merge pull request #20 from Mike-Devel/min_cmake
[CMake] Fix PUBLIC/INTERFACE mixup
2019-03-03 09:27:13 -08:00
1a7ac9174a Merge pull request #11 from danieljames/fix-visual-c-7.1
Fully qualify error_info_base for Visual C++ 7.1
2019-03-02 22:14:27 -08:00
ef4f541a8a [CMake] Fix PUBLIC/INTERFACE left over. 2019-03-03 07:13:47 +01:00
688f6238f1 Merge pull request #17 from Mike-Devel/min_cmake
[CMake] Add minimal cmake file
2019-03-02 22:13:03 -08:00
5025e2ca18 Merge pull request #18 from apolukhin/antoshkka/exception-type-from-ptr
Extract exception type name from std::exception_ptr on libstdc++
2019-03-02 22:10:00 -08:00
457330f286 Merge pull request #19 from jlepola/throw-noexcept
Replaced throw() with BOOST_NOEXCEPT_OR_NOTHROW
2019-03-02 22:08:46 -08:00
8d19f99e43 [CMake] Fix copyright date 2019-03-02 14:24:52 +01:00
f4e1a11e6b [CMake] Treat Boost.Exception as header only 2019-03-02 14:20:29 +01:00
607268dd8e Replaced throw() with BOOST_NOEXCEPT_OR_NOTHROW
With throw(), Visual Studio 2017 emitted a warning "C26439 SPECIAL_NOEXCEPT". Reproducible at least if code analysis was set to level: "Microsoft Native Recommended Rules".

https://docs.microsoft.com/en-us/visualstudio/code-quality/c26439?view=vs-2017
2019-01-28 09:48:53 +02:00
386f5507cb extract exception type name from std::exception_ptr on libstdc++ 2019-01-15 23:55:37 +03:00
e3590d89af [CMake] Add minimal cmake file
Generate cmake target that builds the library and which can
be used by other libraries to express their dependency on
this library and retrieve any configuration information
such as the include directory, binary to link to,
transitive dependencies, necessary compiler options or the
required c++ standards level.
2019-01-04 19:06:57 +01:00
de6cef966b Fix unit tests that did not return report_errors() 2018-09-17 07:32:49 -04:00
2a2557b903 Fully qualify error_info_base for Visual C++ 7.1
Test are failing on Visual C++ 7.1, I think because it's not importing
error_info_base into the class' namespace, so hopefully this will fix it. I
don't have access to the compiler, so I'm not sure.
2018-04-07 15:01:58 +01:00
50899b8f1b added bug_11874_test.cpp 2017-07-05 16:27:16 -07:00
19 changed files with 77 additions and 38 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/.vscode/ipch/*

30
CMakeLists.txt Normal file
View File

@ -0,0 +1,30 @@
# Copyright 2019 Mike Dev
# Distributed under the Boost Software License, Version 1.0.
# See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt
#
# NOTE: CMake support for Boost.Exception is currently experimental at best
# and the interface is likely to change in the future
cmake_minimum_required( VERSION 3.5 )
project( BoostException LANGUAGES CXX )
# We treat Boost.Exception as header only for now.
# See https://github.com/boostorg/exception/pull/17
# for more information.
add_library( boost_exception INTERFACE )
add_library( Boost::exception ALIAS boost_exception )
target_include_directories( boost_exception INTERFACE include )
target_link_libraries( boost_exception
INTERFACE
Boost::assert
Boost::config
Boost::core
Boost::smart_ptr
Boost::throw_exception
Boost::tuple
Boost::type_traits
)

View File

@ -35,14 +35,14 @@ error: //Base for all exception objects we throw.
public:
char const *
what() const throw()
what() const BOOST_NOEXCEPT_OR_NOTHROW
{
return "example_io error";
}
protected:
~error() throw()
~error() BOOST_NOEXCEPT_OR_NOTHROW
{
}
};

View File

@ -35,7 +35,7 @@ boost
virtual error_info_base * clone() const = 0;
virtual
~error_info_base() throw()
~error_info_base() BOOST_NOEXCEPT_OR_NOTHROW
{
}
};
@ -46,7 +46,7 @@ boost
error_info:
public exception_detail::error_info_base
{
error_info_base *
exception_detail::error_info_base *
clone() const
{
return new error_info<Tag,T>(*this);
@ -73,7 +73,7 @@ boost
}
#endif
#endif
~error_info() throw()
~error_info() BOOST_NOEXCEPT_OR_NOTHROW
{
}
value_type const &

View File

@ -105,7 +105,7 @@ boost
boost::exception,
std::bad_alloc
{
~bad_alloc_() throw() { }
~bad_alloc_() BOOST_NOEXCEPT_OR_NOTHROW { }
};
struct
@ -113,7 +113,7 @@ boost
boost::exception,
std::bad_exception
{
~bad_exception_() throw() { }
~bad_exception_() BOOST_NOEXCEPT_OR_NOTHROW { }
};
template <class Exception>
@ -174,7 +174,7 @@ boost
add_original_type(e);
}
~unknown_exception() throw()
~unknown_exception() BOOST_NOEXCEPT_OR_NOTHROW
{
}
@ -220,7 +220,7 @@ boost
add_original_type(e1);
}
~current_exception_std_exception_wrapper() throw()
~current_exception_std_exception_wrapper() BOOST_NOEXCEPT_OR_NOTHROW
{
}

View File

@ -45,6 +45,10 @@ boost
std::exception const * se=current_exception_cast<std::exception const>();
if( be || se )
return exception_detail::diagnostic_information_impl(be,se,true,verbose);
#if defined(__GLIBCXX__) && __cplusplus >= 201103L && !defined(BOOST_NO_RTTI)
else if (auto* p=std::current_exception().__cxa_exception_type())
return "Dynamic exception type: "+boost::core::demangle(p->name());
#endif
else
return "No diagnostic information available.";
}
@ -157,7 +161,7 @@ boost
core::demangle((be?(BOOST_EXCEPTION_DYNAMIC_TYPEID(*be)):(BOOST_EXCEPTION_DYNAMIC_TYPEID(*se))).type_->name()) << '\n';
#endif
if( with_what && se && verbose )
tmp << "std::exception::what: " << wh << '\n';
tmp << "std::exception::what: " << (wh ? wh : "(null)") << '\n';
if( be )
if( char const * s=exception_detail::get_diagnostic_information(*be,tmp.str().c_str()) )
if( *s )
@ -175,7 +179,7 @@ boost
inline
char const *
diagnostic_information_what( exception const & e, bool verbose=true ) throw()
diagnostic_information_what( exception const & e, bool verbose=true ) BOOST_NOEXCEPT_OR_NOTHROW
{
char const * w=0;
#ifndef BOOST_NO_EXCEPTIONS

View File

@ -62,7 +62,7 @@ boost
{
}
~error_info_container_impl() throw()
~error_info_container_impl() BOOST_NOEXCEPT_OR_NOTHROW
{
}

View File

@ -230,7 +230,7 @@ namespace
{
}
~cloned_exception() throw()
~cloned_exception() BOOST_NOEXCEPT_OR_NOTHROW
{
}

View File

@ -5,19 +5,16 @@
#define BOOST_NO_EXCEPTIONS
#include <boost/throw_exception.hpp>
#include <boost/detail/lightweight_test.hpp>
class my_exception: public std::exception { };
bool called=false;
namespace
boost
{
void
throw_exception( std::exception const & )
{
called=true;
exit(0);
}
}
@ -25,6 +22,5 @@ int
main()
{
boost::throw_exception(my_exception());
BOOST_TEST(called);
return boost::report_errors();
return 1;
}

View File

@ -6,19 +6,16 @@
#define BOOST_NO_EXCEPTIONS
#define BOOST_EXCEPTION_DISABLE
#include <boost/throw_exception.hpp>
#include <boost/detail/lightweight_test.hpp>
class my_exception: public std::exception { };
bool called=false;
namespace
boost
{
void
throw_exception( std::exception const & )
{
called=true;
exit(0);
}
}
@ -26,6 +23,5 @@ int
main()
{
boost::throw_exception(my_exception());
BOOST_TEST(called);
return boost::report_errors();
return 1;
}

View File

@ -71,3 +71,5 @@ compile errinfo_file_name_hpp_test.cpp ;
compile errinfo_file_open_mode_hpp_test.cpp ;
compile errinfo_nested_exception_hpp_test.cpp ;
compile errinfo_type_info_name_hpp_test.cpp ;
compile bug_11874_test.cpp ;

10
test/bug_11874_test.cpp Normal file
View File

@ -0,0 +1,10 @@
//Copyright (c) 2006-2017 Emil Dotchevski and Reverge Studios, Inc.
//Distributed under the Boost Software License, Version 1.0. (See accompanying
//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#include <boost/thread.hpp>
int main()
{
}

View File

@ -73,7 +73,7 @@ derives_std_boost_exception:
{
}
char const * what() const throw()
char const * what() const BOOST_NOEXCEPT_OR_NOTHROW
{
return wh_;
}

View File

@ -29,7 +29,7 @@ err:
}
virtual
~err() throw()
~err() BOOST_NOEXCEPT_OR_NOTHROW
{
--exc_count;
}

View File

@ -28,7 +28,7 @@ error1:
boost::exception
{
char const *
what() const throw()
what() const BOOST_NOEXCEPT_OR_NOTHROW
{
return "error1";
}
@ -45,7 +45,7 @@ error3:
std::exception
{
char const *
what() const throw()
what() const BOOST_NOEXCEPT_OR_NOTHROW
{
return "error3";
}
@ -57,7 +57,7 @@ error4:
boost::exception
{
char const *
what() const throw()
what() const BOOST_NOEXCEPT_OR_NOTHROW
{
return diagnostic_information_what(*this);
}

View File

@ -87,7 +87,7 @@ exc:
}
virtual
~exc() throw()
~exc() BOOST_NOEXCEPT_OR_NOTHROW
{
--exc_count;
}

View File

@ -20,7 +20,7 @@ boost
}
derives_boost_exception::
~derives_boost_exception() throw()
~derives_boost_exception() BOOST_NOEXCEPT_OR_NOTHROW
{
}
@ -32,7 +32,7 @@ boost
}
derives_boost_exception_virtually::
~derives_boost_exception_virtually() throw()
~derives_boost_exception_virtually() BOOST_NOEXCEPT_OR_NOTHROW
{
}
@ -44,7 +44,7 @@ boost
}
derives_std_exception::
~derives_std_exception() throw()
~derives_std_exception() BOOST_NOEXCEPT_OR_NOTHROW
{
}

View File

@ -21,7 +21,7 @@ boost
public std::exception
{
explicit derives_boost_exception( int x );
virtual ~derives_boost_exception() throw();
virtual ~derives_boost_exception() BOOST_NOEXCEPT_OR_NOTHROW;
int x_;
};
@ -31,7 +31,7 @@ boost
public std::exception
{
explicit derives_boost_exception_virtually( int x );
virtual ~derives_boost_exception_virtually() throw();
virtual ~derives_boost_exception_virtually() BOOST_NOEXCEPT_OR_NOTHROW;
int x_;
};
@ -40,7 +40,7 @@ boost
public std::exception
{
explicit derives_std_exception( int x );
virtual ~derives_std_exception() throw();
virtual ~derives_std_exception() BOOST_NOEXCEPT_OR_NOTHROW;
int x_;
};

View File

@ -17,7 +17,7 @@ my_exception:
std::exception
{
char const *
what() const throw()
what() const BOOST_NOEXCEPT_OR_NOTHROW
{
return "my_exception";
}