blob: 1999b7d47702e0ad81d40eb868a9e9f9920d1638 [file] [log] [blame]
John McCall10302c02010-10-28 02:34:38 +00001// RUN: %clang_cc1 -Wmethod-signatures -fsyntax-only -verify %s
David Chisnalle8a2d4c2010-10-25 17:23:52 +00002
John McCall10302c02010-10-28 02:34:38 +00003@class B;
David Chisnalle8a2d4c2010-10-25 17:23:52 +00004@interface A
John McCall10302c02010-10-28 02:34:38 +00005- (B*)obj;
6- (B*)a; // expected-note {{previous definition is here}}
David Chisnalle8a2d4c2010-10-25 17:23:52 +00007- (void)takesA: (A*)a; // expected-note {{previous definition is here}}
8- (void)takesId: (id)a; // expected-note {{previous definition is here}}
9@end
10
11
12@interface B : A
13@end
14
15@implementation B
John McCall10302c02010-10-28 02:34:38 +000016- (id)obj {return self;} // 'id' overrides are white-listed?
17- (A*)a { return self;} // expected-warning {{conflicting return type in implementation of 'a'}}
David Chisnalle8a2d4c2010-10-25 17:23:52 +000018- (void)takesA: (B*)a // expected-warning {{conflicting parameter types in implementation of 'takesA:'}}
19{}
20- (void)takesId: (B*)a // expected-warning {{conflicting parameter types in implementation of 'takesId:'}}
21{}
22@end