1// RUN: %clang_cc1 -fsyntax-only -verify -Wmissing-noreturn -fobjc-exceptions -Wno-objc-root-class %s 2 3int test1() { 4 id a; 5 @throw a; 6} 7 8// PR5286 9void test2(int a) { 10 while (1) { 11 if (a) 12 return; 13 } 14} 15 16// PR5286 17void test3(int a) { // expected-warning {{function 'test3' could be declared with attribute 'noreturn'}} 18 while (1) { 19 if (a) 20 @throw (id)0; 21 } 22} 23 24// <rdar://problem/4289832> - This code always returns, we should not 25// issue a noreturn warning. 26@class NSException; 27@class NSString; 28NSString *rdar_4289832() { // no-warning 29 @try 30 { 31 return @"a"; 32 } 33 @catch(NSException *exception) 34 { 35 return @"b"; 36 } 37 @finally 38 { 39 } 40} 41 42void exit(int) __attribute__((noreturn)); 43@interface rdar10098695 44@end 45 46@implementation rdar10098695 47- (void)method { // expected-warning{{method 'method' could be declared with attribute 'noreturn'}} 48 exit(1); 49} 50@end 51