diff options
Diffstat (limited to 'r21/sources/cxx-stl/llvm-libc++abi/test/catch_ptr_02.pass.cpp')
-rw-r--r-- | r21/sources/cxx-stl/llvm-libc++abi/test/catch_ptr_02.pass.cpp | 213 |
1 files changed, 0 insertions, 213 deletions
diff --git a/r21/sources/cxx-stl/llvm-libc++abi/test/catch_ptr_02.pass.cpp b/r21/sources/cxx-stl/llvm-libc++abi/test/catch_ptr_02.pass.cpp deleted file mode 100644 index 9c24e11df..000000000 --- a/r21/sources/cxx-stl/llvm-libc++abi/test/catch_ptr_02.pass.cpp +++ /dev/null @@ -1,213 +0,0 @@ -//===------------------------- catch_ptr_02.cpp ---------------------------===// -// -// 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 -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: libcxxabi-no-exceptions - -#include <cassert> - -// Clang emits warnings about exceptions of type 'Child' being caught by -// an earlier handler of type 'Base'. Congrats clang, you've just -// diagnosed the behavior under test. -#if defined(__clang__) -#pragma clang diagnostic ignored "-Wexceptions" -#endif - -#if __cplusplus < 201103L -#define DISABLE_NULLPTR_TESTS -#endif - -struct A {}; -A a; -const A ca = A(); - -void test1 () -{ - try - { - throw &a; - assert(false); - } - catch ( const A* ) - { - } - catch ( A *) - { - assert (false); - } -} - -void test2 () -{ - try - { - throw &a; - assert(false); - } - catch ( A* ) - { - } - catch ( const A *) - { - assert (false); - } -} - -void test3 () -{ - try - { - throw &ca; - assert(false); - } - catch ( const A* ) - { - } - catch ( A *) - { - assert (false); - } -} - -void test4 () -{ - try - { - throw &ca; - assert(false); - } - catch ( A *) - { - assert (false); - } - catch ( const A* ) - { - } -} - -struct base1 {int x;}; -struct base2 {int x;}; -struct derived : base1, base2 {}; - -void test5 () -{ - try - { - throw (derived*)0; - assert(false); - } - catch (base2 *p) { - assert (p == 0); - } - catch (...) - { - assert (false); - } -} - -void test6 () -{ -#if !defined(DISABLE_NULLPTR_TESTS) - try - { - throw nullptr; - assert(false); - } - catch (base2 *p) { - assert (p == nullptr); - } - catch (...) - { - assert (false); - } -#endif -} - -void test7 () -{ - try - { - throw (derived*)12; - assert(false); - } - catch (base2 *p) { - assert ((unsigned long)p == 12+sizeof(base1)); - } - catch (...) - { - assert (false); - } -} - - -struct vBase {}; -struct vDerived : virtual public vBase {}; - -void test8 () -{ - vDerived derived; - try - { - throw &derived; - assert(false); - } - catch (vBase *p) { - assert(p != 0); - } - catch (...) - { - assert (false); - } -} - -void test9 () -{ -#if !defined(DISABLE_NULLPTR_TESTS) - try - { - throw nullptr; - assert(false); - } - catch (vBase *p) { - assert(p == 0); - } - catch (...) - { - assert (false); - } -#endif -} - -void test10 () -{ - try - { - throw (vDerived*)0; - assert(false); - } - catch (vBase *p) { - assert(p == 0); - } - catch (...) - { - assert (false); - } -} - -int main() -{ - test1(); - test2(); - test3(); - test4(); - test5(); - test6(); - test7(); - test8(); - test9(); - test10(); -} |