annotate gcc/testsuite/objc.dg/call-super-3.m @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* Check if sending messages to super does not interfere with sending messages
kono
parents:
diff changeset
2 to classes. */
kono
parents:
diff changeset
3 /* Contributed by Ziemowit Laski <zlaski@apple.com>. */
kono
parents:
diff changeset
4 /* { dg-options "" } */
kono
parents:
diff changeset
5 /* { dg-do run } */
kono
parents:
diff changeset
6 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 #include "../objc-obj-c++-shared/TestsuiteObject.m"
kono
parents:
diff changeset
9
kono
parents:
diff changeset
10 extern void abort(void);
kono
parents:
diff changeset
11 #define CHECK_IF(expr) if(!(expr)) abort()
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 @interface Base: TestsuiteObject
kono
parents:
diff changeset
14 + (int) class_func1;
kono
parents:
diff changeset
15 - (int) instance_func1;
kono
parents:
diff changeset
16 @end
kono
parents:
diff changeset
17
kono
parents:
diff changeset
18 @interface Derived: Base
kono
parents:
diff changeset
19 + (int) class_func1;
kono
parents:
diff changeset
20 @end
kono
parents:
diff changeset
21
kono
parents:
diff changeset
22 @interface Derived (Categ)
kono
parents:
diff changeset
23 - (int) instance_func1;
kono
parents:
diff changeset
24 @end
kono
parents:
diff changeset
25
kono
parents:
diff changeset
26 @implementation Base
kono
parents:
diff changeset
27 + (int) class_func1 { return 234; }
kono
parents:
diff changeset
28 - (int) instance_func1 { return 345; }
kono
parents:
diff changeset
29 @end
kono
parents:
diff changeset
30
kono
parents:
diff changeset
31 @implementation Derived
kono
parents:
diff changeset
32 + (int) class_func1 {
kono
parents:
diff changeset
33 int i = [super class_func1];
kono
parents:
diff changeset
34 i += [Base class_func1];
kono
parents:
diff changeset
35 return i;
kono
parents:
diff changeset
36 }
kono
parents:
diff changeset
37 @end
kono
parents:
diff changeset
38
kono
parents:
diff changeset
39 @implementation Derived (Categ)
kono
parents:
diff changeset
40 - (int) instance_func1 {
kono
parents:
diff changeset
41 int i = [super instance_func1];
kono
parents:
diff changeset
42 i += [Base class_func1]; /* { dg-bogus "invalid receiver type" } */
kono
parents:
diff changeset
43 return i;
kono
parents:
diff changeset
44 }
kono
parents:
diff changeset
45 @end
kono
parents:
diff changeset
46
kono
parents:
diff changeset
47 int main(void) {
kono
parents:
diff changeset
48 Base *base = [[Base alloc] init]; /* { dg-bogus "invalid receiver type" } */
kono
parents:
diff changeset
49 Derived *derived = [[Derived alloc] init];
kono
parents:
diff changeset
50 CHECK_IF([Base class_func1] == 234); /* { dg-bogus "invalid receiver type" } */
kono
parents:
diff changeset
51 CHECK_IF([Derived class_func1] == 234 + 234);
kono
parents:
diff changeset
52 CHECK_IF([base instance_func1] == 345);
kono
parents:
diff changeset
53 CHECK_IF([derived instance_func1] == 234 + 345);
kono
parents:
diff changeset
54 return 0;
kono
parents:
diff changeset
55 }
kono
parents:
diff changeset
56