18fbe78f6SDaniel Dunbar// RUN: %clang_cc1 -fsyntax-only -verify %s 2c2371eadSFariborz Jahanian 3c2371eadSFariborz Jahanian@interface MyBase 4c2371eadSFariborz Jahanian- (void) rootInstanceMethod; 5c2371eadSFariborz Jahanian@end 6c2371eadSFariborz Jahanian 7c2371eadSFariborz Jahanian@interface MyIntermediate: MyBase 8c2371eadSFariborz Jahanian@end 9c2371eadSFariborz Jahanian 10c2371eadSFariborz Jahanian@interface MyDerived: MyIntermediate 11c2371eadSFariborz Jahanian- (void) instanceMethod; 12c2371eadSFariborz Jahanian+ (void) classMethod; 13c2371eadSFariborz Jahanian@end 14c2371eadSFariborz Jahanian 15c2371eadSFariborz Jahanian@implementation MyDerived 16c2371eadSFariborz Jahanian- (void) instanceMethod { 17c2371eadSFariborz Jahanian} 18c2371eadSFariborz Jahanian 19c2371eadSFariborz Jahanian+ (void) classMethod { /* If a class method is not found, the root */ 20c2371eadSFariborz Jahanian [self rootInstanceMethod]; /* class is searched for an instance method */ 21c2371eadSFariborz Jahanian [MyIntermediate rootInstanceMethod]; /* with the same name. */ 22c2371eadSFariborz Jahanian 23*68500913SFariborz Jahanian [self instanceMethod];// expected-warning {{'+instanceMethod' not found (return type defaults to 'id')}} 24c2371eadSFariborz Jahanian [MyDerived instanceMethod];// expected-warning {{'+instanceMethod' not found (return type defaults to 'id')}} 25c2371eadSFariborz Jahanian} 26c2371eadSFariborz Jahanian@end 27c2371eadSFariborz Jahanian 28c2371eadSFariborz Jahanian@interface Object @end 29c2371eadSFariborz Jahanian 30c2371eadSFariborz Jahanian@interface Class1 31c2371eadSFariborz Jahanian- (void)setWindow:(Object *)wdw; 32c2371eadSFariborz Jahanian@end 33c2371eadSFariborz Jahanian 34c2371eadSFariborz Jahanian@interface Class2 35c2371eadSFariborz Jahanian- (void)setWindow:(Class1 *)window; 36c2371eadSFariborz Jahanian@end 37c2371eadSFariborz Jahanian 38c2371eadSFariborz Jahanian#define nil (void*)0 39c2371eadSFariborz Jahanian 40c2371eadSFariborz Jahanianid foo(void) { 41c2371eadSFariborz Jahanian Object *obj; 42c2371eadSFariborz Jahanian id obj2 = obj; 4300dcffdeSChris Lattner [obj setWindow:nil]; // expected-warning {{'Object' may not respond to 'setWindow:'}} 44c2371eadSFariborz Jahanian 45c2371eadSFariborz Jahanian return obj; 46c2371eadSFariborz Jahanian} 47