| // RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s |
| |
| @interface A |
| - (void) setMoo: (int) x; // expected-note {{previous definition is here}} |
| - (int) setMoo1: (int) x; // expected-note {{previous definition is here}} |
| - (int) setOk : (int) x : (double) d; |
| @end |
| |
| @implementation A |
| -(void) setMoo: (float) x {} // expected-warning {{conflicting parameter types in implementation of 'setMoo:': 'int' vs 'float'}} |
| - (char) setMoo1: (int) x { return 0; } // expected-warning {{conflicting return type in implementation of 'setMoo1:': 'int' vs 'char'}} |
| - (int) setOk : (int) x : (double) d { return 0; } |
| @end |
| |
| |
| |
| @interface C |
| + (void) cMoo: (int) x; // expected-note 2 {{previous definition is here}} |
| @end |
| |
| @implementation C |
| +(float) cMoo: // expected-warning {{conflicting return type in implementation of 'cMoo:': 'void' vs 'float'}} |
| (float) x { return 0; } // expected-warning {{conflicting parameter types in implementation of 'cMoo:': 'int' vs 'float'}} |
| @end |
| |
| |
| @interface A(CAT) |
| - (void) setCat: (int) x; // expected-note 2 {{previous definition is here}} |
| + (void) cCat: (int) x; // expected-note {{previous definition is here}} |
| @end |
| |
| @implementation A(CAT) |
| -(float) setCat: // expected-warning {{conflicting return type in implementation of 'setCat:': 'void' vs 'float'}} |
| (float) x { return 0; } // expected-warning {{conflicting parameter types in implementation of 'setCat:': 'int' vs 'float'}} |
| + (int) cCat: (int) x { return 0; } // expected-warning {{conflicting return type in implementation of 'cCat:': 'void' vs 'int'}} |
| @end |
| |
| // rdar://12519216 |
| // test that when implementation implements method in a category, types match. |
| @interface testObject {} |
| @end |
| |
| @interface testObject(Category) |
| - (float)returnCGFloat; // expected-note {{previous definition is here}} |
| @end |
| |
| @implementation testObject |
| - (double)returnCGFloat { // expected-warning {{conflicting return type in implementation of 'returnCGFloat': 'float' vs 'double'}} |
| return 0.0; |
| } |
| @end |