blob: 862265ca64762a331cc95387fd86ed850803acad [file] [log] [blame]
Daniel Dunbard7d5f022009-03-24 02:24:46 +00001// RUN: clang-cc -pedantic -fsyntax-only -verify %s
Fariborz Jahanian4ffc5412007-12-12 01:00:23 +00002
3@protocol MyProto1
4@end
5
6@protocol MyProto2
7@end
8
9@interface INTF @end
10
11INTF <MyProto1> * Func(INTF <MyProto1, MyProto2> *p2)
12{
13 return p2;
14}
15
16
17INTF <MyProto1> * Func1(INTF <MyProto1, MyProto2> *p2)
18{
19 return p2;
20}
21
22INTF <MyProto1, MyProto2> * Func2(INTF <MyProto1> *p2)
23{
Chris Lattner5cf216b2008-01-04 18:04:52 +000024 Func(p2); // expected-warning {{incompatible pointer types passing 'INTF<MyProto1> *', expected 'INTF<MyProto1,MyProto2> *}}
Chris Lattnerc992b4a2008-01-03 23:36:08 +000025 return p2; // expected-warning {{incompatible pointer types returning 'INTF<MyProto1> *', expected 'INTF<MyProto1,MyProto2> *}}
Fariborz Jahanian4ffc5412007-12-12 01:00:23 +000026}
27
28
29
30INTF <MyProto1> * Func3(INTF <MyProto2> *p2)
31{
Chris Lattnerc992b4a2008-01-03 23:36:08 +000032 return p2; // expected-warning {{incompatible pointer types returning 'INTF<MyProto2> *', expected 'INTF<MyProto1> *}}
Fariborz Jahanian4ffc5412007-12-12 01:00:23 +000033}
34
35
36INTF <MyProto1, MyProto2> * Func4(INTF <MyProto2, MyProto1> *p2)
37{
38 return p2;
39}
40