blob: ef4b94348d0d21f86d8abaaf06fa304a665e39a1 [file] [log] [blame]
Fariborz Jahanianb384d322007-10-04 20:19:06 +00001// RUN: clang -fsyntax-only -verify %s
2
Fariborz Jahanian397fcc12007-09-19 19:14:32 +00003void * proc();
4
Chris Lattner6b884502008-03-10 06:06:04 +00005@interface NSConstantString
6@end
7
Fariborz Jahanian397fcc12007-09-19 19:14:32 +00008@interface Frob
9@end
10
11@interface Frob1
12@end
13
14void * foo()
15{
Chris Lattnercb53b362007-12-27 19:57:00 +000016 @try {
17 return proc();
18 }
19 @catch (Frob* ex) {
20 @throw;
21 }
22 @catch (Frob1* ex) {
23 @throw proc();
24 }
25 @finally {
26 @try {
27 return proc();
28 }
29 @catch (Frob* ex) {
30 @throw 1,2;
31 }
32 @catch(...) {
33 @throw (4,3,proc());
34 }
35 }
Fariborz Jahanian397fcc12007-09-19 19:14:32 +000036
Chris Lattnercb53b362007-12-27 19:57:00 +000037 @try { // expected-error {{@try statment without a @catch and @finally clause}}
38 return proc();
39 }
40}
41
42
43void bar()
44{
45 @try {}// expected-error {{@try statment without a @catch and @finally clause}}
Chris Lattner6b884502008-03-10 06:06:04 +000046 @"s"; // expected-warning {{result unused}}
Chris Lattnercb53b362007-12-27 19:57:00 +000047}
48
49void baz()
50{
51 @try {}// expected-error {{@try statment without a @catch and @finally clause}}
Chris Lattner6b884502008-03-10 06:06:04 +000052 @try {}
Chris Lattnercb53b362007-12-27 19:57:00 +000053 @finally {}
Fariborz Jahanian397fcc12007-09-19 19:14:32 +000054}
55
Steve Naroff64515f32008-02-05 21:27:35 +000056void noTwoTokenLookAheadRequiresABitOfFancyFootworkInTheParser() {
57 @try {
58 // Do something
59 } @catch (...) {}
60 @try {
61 // Do something
62 } @catch (...) {}
63 return 0;
64}
65