annotate clang/test/SemaObjC/protocol-id-test-3.m @ 207:2e18cbf3894f

LLVM12
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 08 Jun 2021 06:07:14 +0900
parents 1d019706d866
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 // RUN: %clang_cc1 -pedantic -fsyntax-only -verify %s
anatofuz
parents:
diff changeset
2
anatofuz
parents:
diff changeset
3 @protocol MyProto1
anatofuz
parents:
diff changeset
4 @end
anatofuz
parents:
diff changeset
5
anatofuz
parents:
diff changeset
6 @protocol MyProto2
anatofuz
parents:
diff changeset
7 @end
anatofuz
parents:
diff changeset
8
anatofuz
parents:
diff changeset
9 @interface INTF @end
anatofuz
parents:
diff changeset
10
anatofuz
parents:
diff changeset
11 id<MyProto1> Func(INTF <MyProto1, MyProto2> *p2) // expected-note 2{{passing argument to parameter 'p2' here}}
anatofuz
parents:
diff changeset
12 {
anatofuz
parents:
diff changeset
13 return p2;
anatofuz
parents:
diff changeset
14 }
anatofuz
parents:
diff changeset
15
anatofuz
parents:
diff changeset
16
anatofuz
parents:
diff changeset
17
anatofuz
parents:
diff changeset
18
anatofuz
parents:
diff changeset
19 id<MyProto1> Gunc(id <MyProto1, MyProto2>p2)
anatofuz
parents:
diff changeset
20 {
anatofuz
parents:
diff changeset
21 return p2;
anatofuz
parents:
diff changeset
22 }
anatofuz
parents:
diff changeset
23
anatofuz
parents:
diff changeset
24
anatofuz
parents:
diff changeset
25 id<MyProto1> Gunc1(id <MyProto1, MyProto2>p2)
anatofuz
parents:
diff changeset
26 {
anatofuz
parents:
diff changeset
27 return p2;
anatofuz
parents:
diff changeset
28 }
anatofuz
parents:
diff changeset
29
anatofuz
parents:
diff changeset
30 id<MyProto1, MyProto2> Gunc2(id <MyProto1>p2)
anatofuz
parents:
diff changeset
31 {
anatofuz
parents:
diff changeset
32 Func(p2); // expected-warning {{passing 'id<MyProto1>' to parameter of incompatible type 'INTF<MyProto1,MyProto2> *'}}
anatofuz
parents:
diff changeset
33 return p2; // expected-warning {{returning 'id<MyProto1>' from a function with incompatible result type 'id<MyProto1,MyProto2>'}}
anatofuz
parents:
diff changeset
34 }
anatofuz
parents:
diff changeset
35
anatofuz
parents:
diff changeset
36
anatofuz
parents:
diff changeset
37
anatofuz
parents:
diff changeset
38 id<MyProto1> Gunc3(id <MyProto2>p2)
anatofuz
parents:
diff changeset
39 {
anatofuz
parents:
diff changeset
40 return p2; // expected-warning {{returning 'id<MyProto2>' from a function with incompatible result type 'id<MyProto1>'}}
anatofuz
parents:
diff changeset
41 }
anatofuz
parents:
diff changeset
42
anatofuz
parents:
diff changeset
43
anatofuz
parents:
diff changeset
44 id<MyProto1, MyProto2> Gunc4(id <MyProto2, MyProto1>p2)
anatofuz
parents:
diff changeset
45 {
anatofuz
parents:
diff changeset
46 return p2;
anatofuz
parents:
diff changeset
47 }
anatofuz
parents:
diff changeset
48
anatofuz
parents:
diff changeset
49
anatofuz
parents:
diff changeset
50
anatofuz
parents:
diff changeset
51 INTF<MyProto1> * Hunc(id <MyProto1, MyProto2>p2)
anatofuz
parents:
diff changeset
52 {
anatofuz
parents:
diff changeset
53 return p2;
anatofuz
parents:
diff changeset
54 }
anatofuz
parents:
diff changeset
55
anatofuz
parents:
diff changeset
56
anatofuz
parents:
diff changeset
57 INTF<MyProto1> * Hunc1(id <MyProto1, MyProto2>p2)
anatofuz
parents:
diff changeset
58 {
anatofuz
parents:
diff changeset
59 return p2;
anatofuz
parents:
diff changeset
60 }
anatofuz
parents:
diff changeset
61
anatofuz
parents:
diff changeset
62 INTF<MyProto1, MyProto2> * Hunc2(id <MyProto1>p2)
anatofuz
parents:
diff changeset
63 {
anatofuz
parents:
diff changeset
64 Func(p2); // expected-warning {{passing 'id<MyProto1>' to parameter of incompatible type 'INTF<MyProto1,MyProto2> *'}}
anatofuz
parents:
diff changeset
65 return p2; // expected-warning {{returning 'id<MyProto1>' from a function with incompatible result type 'INTF<MyProto1,MyProto2> *'}}
anatofuz
parents:
diff changeset
66 }
anatofuz
parents:
diff changeset
67
anatofuz
parents:
diff changeset
68 INTF<MyProto1> * Hunc3(id <MyProto2>p2)
anatofuz
parents:
diff changeset
69 {
anatofuz
parents:
diff changeset
70 return p2; // expected-warning {{returning 'id<MyProto2>' from a function with incompatible result type 'INTF<MyProto1> *'}}
anatofuz
parents:
diff changeset
71 }
anatofuz
parents:
diff changeset
72
anatofuz
parents:
diff changeset
73
anatofuz
parents:
diff changeset
74 INTF<MyProto1, MyProto2> * Hunc4(id <MyProto2, MyProto1>p2)
anatofuz
parents:
diff changeset
75 {
anatofuz
parents:
diff changeset
76 return p2;
anatofuz
parents:
diff changeset
77 }
anatofuz
parents:
diff changeset
78
anatofuz
parents:
diff changeset
79 id Iunc(id <MyProto1, MyProto2>p2)
anatofuz
parents:
diff changeset
80 {
anatofuz
parents:
diff changeset
81 return p2;
anatofuz
parents:
diff changeset
82 }
anatofuz
parents:
diff changeset
83
anatofuz
parents:
diff changeset
84
anatofuz
parents:
diff changeset
85 id<MyProto1> Iunc1(id p2)
anatofuz
parents:
diff changeset
86 {
anatofuz
parents:
diff changeset
87 return p2;
anatofuz
parents:
diff changeset
88 }
anatofuz
parents:
diff changeset
89
anatofuz
parents:
diff changeset
90 id<MyProto1, MyProto2> Iunc2(id p2)
anatofuz
parents:
diff changeset
91 {
anatofuz
parents:
diff changeset
92 Iunc(p2);
anatofuz
parents:
diff changeset
93 return p2;
anatofuz
parents:
diff changeset
94 }