23 lines · plain
1// RUN: %clang_cc1 -Wmethod-signatures -fsyntax-only -verify %s2 3@class B;4@interface A5- (B*)obj;6- (B*)a; // expected-note {{previous definition is here}}7- (void)takesA: (A*)a; // expected-note {{previous definition is here}}8- (void)takesId: (id)a; // expected-note {{previous definition is here}}9@end10 11 12@interface B : A13@end14 15@implementation B16- (id)obj {return self;} // 'id' overrides are permitted?17- (A*)a { return self;} // expected-warning {{conflicting return type in implementation of 'a'}}18- (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@end23