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