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? 114b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant 124b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant#include <cassert> 134b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant 144b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnantvoid f() {} 154b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant 164b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnantint main() 174b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant{ 184b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant typedef void Function(); 194b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant try 204b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant { 214b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant throw f; // converts to void (*)() 224b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant assert(false); 234b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant } 244b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant catch (Function b) // equivalent to void (*)() 254b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant { 264b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant } 274b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant catch (...) 284b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant { 294b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant assert(false); 304b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant } 314b3cb1cb82c0479bc9c675b79a2250ea4c85aae8Howard Hinnant} 32