xref: /llvm-project/clang/test/SemaObjC/argument-checking.m (revision 7068aa98412ade19a34b7ed126f4669f581b2311)
1// RUN: %clang_cc1 -fsyntax-only -verify -pedantic %s
2
3struct S { int a; };
4
5extern int charStarFunc(char *); // expected-note{{passing argument to parameter here}}
6extern int charFunc(char); // expected-note{{passing argument to parameter here}}
7
8@interface Test
9+alloc;
10-(int)charStarMeth:(char *)s; // expected-note{{passing argument to parameter 's' here}}
11-structMeth:(struct S)s; // expected-note{{passing argument to parameter 's' here}}
12-structMeth:(struct S)s
13   :(struct S)s2; // expected-note{{passing argument to parameter 's2' here}}
14@end
15
16void test(void) {
17  id obj = [Test alloc];
18  struct S sInst;
19
20  charStarFunc(1); // expected-error {{incompatible integer to pointer conversion passing 'int' to parameter of type 'char *'}}
21  charFunc("abc"); // expected-error {{incompatible pointer to integer conversion passing 'char[4]' to parameter of type 'char'}}
22
23  [obj charStarMeth:1]; // expected-error {{incompatible integer to pointer conversion sending 'int'}}
24  [obj structMeth:1]; // expected-error {{sending 'int'}}
25  [obj structMeth:sInst :1]; // expected-error {{sending 'int'}}
26}
27