1*67e74705SXin Li// RUN: %clang_cc1 -Wmethod-signatures -fsyntax-only -verify -Wno-objc-root-class %s 2*67e74705SXin Li 3*67e74705SXin Li@interface foo 4*67e74705SXin Li- (int)meth; 5*67e74705SXin Li@end 6*67e74705SXin Li 7*67e74705SXin Li@implementation foo 8*67e74705SXin Li- (int) meth { return [self meth]; } 9*67e74705SXin Li@end 10*67e74705SXin Li 11*67e74705SXin Li// PR2708 12*67e74705SXin Li@interface MyClass 13*67e74705SXin Li+- (void)myMethod; // expected-error {{expected selector for Objective-C method}} 14*67e74705SXin Li- (vid)myMethod2; // expected-error {{expected a type}} 15*67e74705SXin Li@end 16*67e74705SXin Li 17*67e74705SXin Li@implementation MyClass 18*67e74705SXin Li- (void)myMethod { } 19*67e74705SXin Li- (vid)myMethod2 { } // expected-error {{expected a type}} 20*67e74705SXin Li 21*67e74705SXin Li@end 22*67e74705SXin Li 23*67e74705SXin Li 24*67e74705SXin Li@protocol proto; 25*67e74705SXin Li@protocol NSObject; 26*67e74705SXin Li 27*67e74705SXin Li//@protocol GrowlPluginHandler <NSObject> @end 28*67e74705SXin Li 29*67e74705SXin Li 30*67e74705SXin Li@interface SomeClass2 31*67e74705SXin Li- (int)myMethod1: (id<proto>) 32*67e74705SXin Liarg; // expected-note {{previous definition is here}} 33*67e74705SXin Li@end 34*67e74705SXin Li 35*67e74705SXin Li@implementation SomeClass2 36*67e74705SXin Li- (int)myMethod1: (id<NSObject>) 37*67e74705SXin Li arg { // expected-warning {{conflicting parameter types in implementation of 'myMethod1:': 'id<proto>' vs 'id<NSObject>'}} 38*67e74705SXin Li 39*67e74705SXin Li} 40*67e74705SXin Li@end 41