OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [obj-c++.dg/] [exceptions-5.mm] - Blame information for rev 703

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 703 jeremybenn
/* Contributed by Nicola Pero , 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.mm, but with no name for @catch arguments.  */
7
 
8
#include 
9
 
10
@interface MyObject
11
{
12
  Class isa;
13
}
14
@end
15
 
16
@implementation MyObject
17
@end
18
 
19
@protocol MyProtocol;
20
 
21
typedef MyObject MyObjectTypedef;
22
typedef MyObject *MyObjectPtrTypedef;
23
typedef int intTypedef;
24
 
25
int test (id object)
26
{
27
  int dummy = 0;
28
 
29
  @try { @throw object; }
30
  @catch (int)          /* { dg-error "@catch parameter is not a known Objective-C class type" } */
31
    {
32
      dummy++;
33
    }
34
 
35
  @try { @throw object; }
36
  @catch (intTypedef)   /* { dg-error "@catch parameter is not a known Objective-C class type" } */
37
    {
38
      dummy++;
39
    }
40
 
41
  @try { @throw object; }
42
  @catch (int *)         /* { dg-error "@catch parameter is not a known Objective-C class type" } */
43
    {
44
      dummy++;
45
    }
46
 
47
  @try { @throw object; }
48
  @catch (id)           /* Ok */
49
    {
50
      dummy++;
51
    }
52
 
53
  @try { @throw object; }
54
  @catch (id ) /* { dg-error "@catch parameter can not be protocol-qualified" } */
55
    {
56
      dummy++;
57
    }
58
 
59
  @try { @throw object; }
60
  @catch (MyObject *)    /* Ok */
61
    {
62
      dummy++;
63
    }
64
 
65
  @try { @throw object; }
66
  @catch (MyObject  *)  /* { dg-error "@catch parameter can not be protocol-qualified" } */
67
    {
68
      dummy++;
69
    }
70
 
71
  @try { @throw object; }
72
  @catch (MyObject)     /* { dg-error "@catch parameter is not a known Objective-C class type" } */
73
    {                     /* { dg-error "no matching function" "" { target *-*-* } 72 } */
74
      dummy++;            /* { dg-message "MyObject" "" { target *-*-* } 13 } */
75
    }                     /* { dg-message "candidate" "" { target *-*-* } 13 } */
76
                          /* { dg-message "candidate" "" { target *-*-* } 72 } */
77
 
78
  @try { @throw object; }
79
  @catch (static MyObject *) /* { dg-error "storage class" } */
80
    {
81
      dummy++;
82
    }
83
 
84
  @try { @throw object; }
85
  @catch (MyObjectTypedef *) /* Ok */
86
    {
87
      dummy++;
88
    }
89
 
90
  @try { @throw object; }
91
  @catch (MyObjectTypedef  *) /* { dg-error "@catch parameter can not be protocol-qualified" } */
92
    {
93
      dummy++;
94
    }
95
 
96
  @try { @throw object; }
97
  @catch (MyObjectPtrTypedef) /* Ok */
98
    {
99
      dummy++;
100
    }
101
 
102
  @try { @throw object; }
103
  @catch (Class)   /* { dg-error "@catch parameter is not a known Objective-C class type" } */
104
    {
105
      dummy++;
106
    }
107
 
108
  @try { @throw object; }
109
  @catch (...)            /* Ok */
110
    {
111
      dummy++;
112
    }
113
 
114
  return dummy;
115
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.