OSDN Git Service

2011-01-08 Dominique d'Humieres <dominiq@lps.ens.fr>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / objc.dg / exceptions-4.m
1 /* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010.  */
2 /* { dg-options "-fobjc-exceptions" } */
3 /* { dg-do compile } */
4
5 /* Test warnings when parsing syntax errors in @catch().  */
6
7 #include <objc/objc.h>
8
9 @interface MyObject
10 {
11   Class isa;
12 }
13 @end
14
15 @implementation MyObject
16 @end
17
18 @interface MyObject2
19 {
20   Class isa;
21 }
22 @end
23
24 @implementation MyObject2
25 @end
26
27 @protocol MyProtocol;
28
29 int test (id object)
30 {
31   int dummy = 0;
32
33   @try { @throw object; }
34   @catch
35     { /* { dg-error "expected ... before ... token" } */
36       dummy++;
37     }
38   @catch ()  /* { dg-error "expected declaration specifiers or ..... before ..." } */
39     {
40       dummy++;
41     }
42   @catch (i) /* { dg-error "unknown type name .i." } */
43     {
44       dummy++;
45     }
46   @catch (id <MyProtocol x) /* { dg-error "expected ... before .x." } */
47     {                       /* { dg-error "@catch parameter can not be protocol-qualified" "" { target *-*-* } 46 } */
48       dummy++;
49     }
50   @catch MyObject *x       /* { dg-error "expected ... before .MyObject." } */
51     {
52       dummy++;
53     }
54   @catch MyObject2 *x)      /* { dg-error "expected ... before .MyObject2." } */
55    {
56      dummy++;
57    }
58
59   @try { @throw object; }
60   @catch (MyObject *x)
61   @catch (MyObject2 *y)    /* { dg-error "expected ... before .catch." } */
62
63   return dummy;
64 }