diff options
Diffstat (limited to 'libcxx/test/libcxx-03/depr/exception.unexpected/set_unexpected.pass.cpp')
| -rw-r--r-- | libcxx/test/libcxx-03/depr/exception.unexpected/set_unexpected.pass.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/libcxx/test/libcxx-03/depr/exception.unexpected/set_unexpected.pass.cpp b/libcxx/test/libcxx-03/depr/exception.unexpected/set_unexpected.pass.cpp new file mode 100644 index 000000000000..f428790f6cc9 --- /dev/null +++ b/libcxx/test/libcxx-03/depr/exception.unexpected/set_unexpected.pass.cpp @@ -0,0 +1,40 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// test set_unexpected + +// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS + +#include <exception> +#include <cassert> +#include <cstdlib> + +#include "test_macros.h" + +void f1() {} +void f2() {} + +void f3() +{ + std::exit(0); +} + +int main(int, char**) +{ + std::unexpected_handler old = std::set_unexpected(f1); + // verify there is a previous unexpected handler + assert(old); + // verify f1 was replace with f2 + assert(std::set_unexpected(f2) == f1); + // verify calling original unexpected handler calls terminate + std::set_terminate(f3); + (*old)(); + assert(0); + + return 0; +} |
