14b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant//===---------------------- catch_function_02.cpp -------------------------===// 24b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant// 34b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant// The LLVM Compiler Infrastructure 44b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant// 54b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 64b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 74b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant// 84b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant//===----------------------------------------------------------------------===// 94b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant 104b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant// Can you have a catch clause of array type that catches anything? 114174e8b402ba05e3b3e003b1066f1eae6fbeb24bAsiri Rathnayake// UNSUPPORTED: libcxxabi-no-exceptions 124b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant 134b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant#include <cassert> 144b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant 154b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnantvoid f() {} 164b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant 174b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnantint main() 184b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant{ 194b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant typedef void Function(); 204b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant try 214b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant { 224b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant throw f; // converts to void (*)() 234b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant assert(false); 244b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant } 254b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant catch (Function b) // equivalent to void (*)() 264b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant { 274b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant } 284b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant catch (...) 294b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant { 304b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant assert(false); 314b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant } 324b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant} 33