1*67e74705SXin Li// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s 2*67e74705SXin Li 3*67e74705SXin Li@interface INTF 4*67e74705SXin Li- (void) meth; 5*67e74705SXin Li- (void) meth : (int) arg1; 6*67e74705SXin Li- (int) int_meth; // expected-note {{method 'int_meth' declared here}} 7*67e74705SXin Li+ (int) cls_meth; // expected-note {{method 'cls_meth' declared here}} 8*67e74705SXin Li+ (void) cls_meth1 : (int) arg1; // expected-note {{method 'cls_meth1:' declared here}} 9*67e74705SXin Li@end 10*67e74705SXin Li 11*67e74705SXin Li@implementation INTF // expected-warning {{method definition for 'int_meth' not found}} \ 12*67e74705SXin Li // expected-warning {{method definition for 'cls_meth' not found}} \ 13*67e74705SXin Li // expected-warning {{method definition for 'cls_meth1:' not found}} 14*67e74705SXin Li- (void) meth {} 15*67e74705SXin Li- (void) meth : (int) arg2{} 16*67e74705SXin Li- (void) cls_meth1 : (int) arg2{} 17*67e74705SXin Li@end 18*67e74705SXin Li 19*67e74705SXin Li@interface INTF1 20*67e74705SXin Li- (void) meth; 21*67e74705SXin Li- (void) meth : (int) arg1; 22*67e74705SXin Li- (int) int_meth; // expected-note {{method 'int_meth' declared here}} 23*67e74705SXin Li+ (int) cls_meth; // expected-note {{method 'cls_meth' declared here}} 24*67e74705SXin Li+ (void) cls_meth1 : (int) arg1; // expected-note {{method 'cls_meth1:' declared here}} 25*67e74705SXin Li@end 26*67e74705SXin Li 27*67e74705SXin Li@implementation INTF1 // expected-warning {{method definition for 'int_meth' not found}} \ 28*67e74705SXin Li // expected-warning {{method definition for 'cls_meth' not found}} \ 29*67e74705SXin Li // expected-warning {{method definition for 'cls_meth1:' not found}} 30*67e74705SXin Li- (void) meth {} 31*67e74705SXin Li- (void) meth : (int) arg2{} 32*67e74705SXin Li- (void) cls_meth1 : (int) arg2{} 33*67e74705SXin Li@end 34*67e74705SXin Li 35*67e74705SXin Li@interface INTF2 36*67e74705SXin Li- (void) meth; 37*67e74705SXin Li- (void) meth : (int) arg1; 38*67e74705SXin Li- (void) cls_meth1 : (int) arg1; 39*67e74705SXin Li@end 40*67e74705SXin Li 41*67e74705SXin Li@implementation INTF2 42*67e74705SXin Li- (void) meth {} 43*67e74705SXin Li- (void) meth : (int) arg2{} 44*67e74705SXin Li- (void) cls_meth1 : (int) arg2{} 45*67e74705SXin Li@end 46*67e74705SXin Li 47*67e74705SXin Li 48*67e74705SXin Li// rdar://8850818 49*67e74705SXin Li@interface Root @end 50*67e74705SXin Li 51*67e74705SXin Li@interface Foo : Root @end 52*67e74705SXin Li 53*67e74705SXin Li@implementation Foo 54*67e74705SXin Li 55*67e74705SXin Li- (void)someFunction { return; } 56*67e74705SXin Li 57*67e74705SXin Li+ (void)anotherFunction { 58*67e74705SXin Li [self someFunction]; // expected-warning {{method '+someFunction' not found (return type defaults to 'id')}} 59*67e74705SXin Li} 60*67e74705SXin Li@end 61