OSDN Git Service

fix PR23716
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / obj-c++.dg / try-catch-1.mm
1 /* Test if the compiler accepts @throw / @try..@catch..@finally syntax.  */
2 /* Developed by Ziemowit Laski <zlaski@apple.com>.  */
3
4 /* { dg-options "-fobjc-exceptions" } */
5 /* { dg-do compile } */
6
7 #include "../objc-obj-c++-shared/Object1.h"
8 #include <stdio.h>
9 #include <setjmp.h>
10
11 @interface Frob: Object
12 @end
13
14 @implementation Frob: Object
15 @end
16
17 static int exc_control = 0;
18
19 int proc() {
20   if(exc_control) {
21     printf ("Throwing (%d)... ", exc_control);
22     @throw [Frob new];
23   }
24   return 1;
25 }
26
27 int foo()
28 {
29   @try {
30     return proc();
31   }
32   @catch (Frob* ex) {
33     if(exc_control > 1) {
34       printf("Rethrowing (%d)... ", exc_control);
35       @throw;
36     }
37     return 0;
38   }
39   @finally {
40     printf("In @finally block (%d)... ", exc_control);
41   }
42 }