1//===----------------- catch_member_pointer_nullptr.cpp -------------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is dual licensed under the MIT and the University of Illinois Open
6// Source Licenses. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// UNSUPPORTED: libcxxabi-no-exceptions
11
12#include <cassert>
13
14#if __has_feature(cxx_nullptr)
15
16struct A
17{
18    const int i;
19    int j;
20};
21
22typedef const int A::*md1;
23typedef       int A::*md2;
24
25void test1()
26{
27    try
28    {
29        throw nullptr;
30        assert(false);
31    }
32    catch (md2 p)
33    {
34        assert(!p);
35    }
36    catch (md1)
37    {
38        assert(false);
39    }
40}
41
42void test2()
43{
44    try
45    {
46        throw nullptr;
47        assert(false);
48    }
49    catch (md1 p)
50    {
51        assert(!p);
52    }
53    catch (md2)
54    {
55        assert(false);
56    }
57}
58
59#else
60
61void test1()
62{
63}
64
65void test2()
66{
67}
68
69#endif
70
71int main()
72{
73    test1();
74    test2();
75}
76