Merged r157653 through r157895 into branch.
[official-gcc.git] / gcc / testsuite / objc.dg / isa-field-1.m
blob377280f0d992a8c30533d35b239df64a084821aa
1 /* Ensure there are no bizarre difficulties with accessing the 'isa' field of objects.  */
2 /* { dg-do compile } */
4 #include "../objc-obj-c++-shared/Object1.h"
6 @interface Object (Test)
7 - (Class) test1: (id)object;
8 @end
10 @interface Derived: Object
11 - (Class) test2: (id)object;
12 @end
14 @implementation Object (Test)
16 Class test1(id object) {
17 #ifdef __NEXT_RUNTIME__
18     Class cls = object->isa;
19 #else
20     Class cls = object->class_pointer;
21 #endif
22     return cls;
24 - (Class) test1: (id)object {
25 #ifdef __NEXT_RUNTIME__
26     Class cls = object->isa;
27 #else
28     Class cls = object->class_pointer;
29 #endif
30     return cls;
33 @end
35 @implementation Derived
37 Class test2(id object) {
38 #ifdef __NEXT_RUNTIME__
39     Class cls = object->isa;
40 #else
41     Class cls = object->class_pointer;
42 #endif
43     return cls;
45 - (Class) test2: (id)object {
46 #ifdef __NEXT_RUNTIME__
47     Class cls = object->isa;
48 #else
49     Class cls = object->class_pointer;
50 #endif
51     return cls;
54 @end
56 Class test3(id object) {
57 #ifdef __NEXT_RUNTIME__
58     Class cls = object->isa;
59 #else
60     Class cls = object->class_pointer;
61 #endif
62     return cls;