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