2011-02-26 22:09:03 +00:00
|
|
|
// RUN: %clang_cc1 %s -fsyntax-only -verify -Wmissing-noreturn -fobjc-exceptions
|
2009-10-14 18:03:49 +00:00
|
|
|
|
|
|
|
int test1() {
|
|
|
|
id a;
|
|
|
|
@throw a;
|
|
|
|
}
|
2009-11-04 15:04:32 +00:00
|
|
|
|
|
|
|
// PR5286
|
|
|
|
void test2(int a) {
|
|
|
|
while (1) {
|
|
|
|
if (a)
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// PR5286
|
|
|
|
void test3(int a) { // expected-warning {{function could be attribute 'noreturn'}}
|
|
|
|
while (1) {
|
|
|
|
if (a)
|
|
|
|
@throw (id)0;
|
|
|
|
}
|
|
|
|
}
|
2010-07-13 17:21:42 +00:00
|
|
|
|
|
|
|
// <rdar://problem/4289832> - This code always returns, we should not
|
|
|
|
// issue a noreturn warning.
|
|
|
|
@class NSException;
|
|
|
|
@class NSString;
|
|
|
|
NSString *rdar_4289832() { // no-warning
|
|
|
|
@try
|
|
|
|
{
|
|
|
|
return @"a";
|
|
|
|
}
|
|
|
|
@catch(NSException *exception)
|
|
|
|
{
|
|
|
|
return @"b";
|
|
|
|
}
|
|
|
|
@finally
|
|
|
|
{
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|