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