]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/testsuite/objc.dg/exceptions-5.m
gcc/ada/ChangeLog:
[thirdparty/gcc.git] / gcc / testsuite / objc.dg / exceptions-5.m
CommitLineData
b3d2d312 1/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */
2/* { dg-options "-fobjc-exceptions" } */
3/* { dg-do compile } */
4
5/* Test that you can use an unnamed argument with @catch. This test is the same
6 as exceptions-3.m, but with no name for @catch arguments. */
7
8#include <objc/objc.h>
9
10@interface MyObject
11{
12 Class isa;
13}
14@end
15
16@implementation MyObject
17@end
18
19@protocol MyProtocol;
20
21typedef MyObject MyObjectTypedef;
22typedef MyObject *MyObjectPtrTypedef;
23typedef int intTypedef;
24
25int test (id object)
26{
27 int dummy = 0;
28
29 @try { @throw object; }
85b9be9b 30 @catch (int) /* { dg-error "'@catch' parameter is not a known Objective-C class type" } */
b3d2d312 31 {
32 dummy++;
33 }
34
35 @try { @throw object; }
85b9be9b 36 @catch (intTypedef) /* { dg-error "'@catch' parameter is not a known Objective-C class type" } */
b3d2d312 37 {
38 dummy++;
39 }
40
41 @try { @throw object; }
85b9be9b 42 @catch (int *) /* { dg-error "'@catch' parameter is not a known Objective-C class type" } */
b3d2d312 43 {
44 dummy++;
45 }
46
47 @try { @throw object; }
48 @catch (id) /* Ok */
49 {
50 dummy++;
51 }
52
53 @try { @throw object; }
85b9be9b 54 @catch (id <MyProtocol>) /* { dg-error "'@catch' parameter cannot be protocol-qualified" } */
b3d2d312 55 {
56 dummy++;
57 }
58
59 @try { @throw object; }
60 @catch (MyObject *) /* Ok */
61 {
62 dummy++;
63 }
64
65 @try { @throw object; }
85b9be9b 66 @catch (MyObject <MyProtocol> *) /* { dg-error "'@catch' parameter cannot be protocol-qualified" } */
b3d2d312 67 {
68 dummy++;
69 }
70
71 @try { @throw object; }
85b9be9b 72 @catch (MyObject) /* { dg-error "'@catch' parameter is not a known Objective-C class type" } */
f0ca6e0d 73 { /* { dg-error "conversion to non-scalar type requested" "" { target *-*-* } .-1 } */
b3d2d312 74 dummy++;
75 }
76
77 @try { @throw object; }
78 @catch (static MyObject *) /* { dg-error "storage class specified for" } */
79 {
80 dummy++;
81 }
82
83 @try { @throw object; }
84 @catch (MyObjectTypedef *) /* Ok */
85 {
86 dummy++;
87 }
88
89 @try { @throw object; }
85b9be9b 90 @catch (MyObjectTypedef <MyProtocol> *) /* { dg-error "'@catch' parameter cannot be protocol-qualified" } */
b3d2d312 91 {
92 dummy++;
93 }
94
95 @try { @throw object; }
96 @catch (MyObjectPtrTypedef) /* Ok */
97 {
98 dummy++;
99 }
100
101 @try { @throw object; }
85b9be9b 102 @catch (Class) /* { dg-error "'@catch' parameter is not a known Objective-C class type" } */
b3d2d312 103 {
104 dummy++;
105 }
106
107 @try { @throw object; }
108 @catch (...) /* Ok */
109 {
110 dummy++;
111 }
112
113 return dummy;
114}