1 // RUN: %clang_cc1 -Woverriding-method-mismatch -fsyntax-only -verify %s 2 // rdar://6191214 3 4 @protocol Xint 5 -(void) setX: (int) arg0; // expected-note {{previous declaration is here}} 6 +(int) C; // expected-note {{previous declaration is here}} 7 @end 8 9 @protocol Xfloat 10 -(void) setX: (float) arg0; // expected-note 2 {{previous declaration is here}} 11 +(float) C; // expected-note 2 {{previous declaration is here}} 12 @end 13 14 @interface A <Xint, Xfloat> 15 @end 16 17 @implementation A 18 -(void) setX: (int) arg0 { } // expected-warning {{conflicting parameter types in declaration of 'setX:': 'float' vs 'int'}} 19 +(int) C {return 0; } // expected-warning {{conflicting return type in declaration of 'C': 'float' vs 'int'}} 20 @end 21 22 @interface B <Xfloat, Xint> 23 @end 24 25 @implementation B 26 -(void) setX: (float) arg0 { } // expected-warning {{conflicting parameter types in declaration of 'setX:': 'int' vs 'float'}} 27 + (float) C {return 0.0; } // expected-warning {{conflicting return type in declaration of 'C': 'int' vs 'float'}} 28 @end 29 30 @protocol Xint_float<Xint, Xfloat> 31 @end 32 33 @interface C<Xint_float> 34 @end 35 36 @implementation C 37 -(void) setX: (int) arg0 { } // expected-warning {{conflicting parameter types in declaration of 'setX:': 'float' vs 'int'}} 38 + (int) C {return 0;} // expected-warning {{conflicting return type in declaration of 'C': 'float' vs 'int'}} 39 @end 40