Add Sema::CheckMessageArgumentTypes()...
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43050 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/Sema/argument-checking.m b/test/Sema/argument-checking.m
new file mode 100644
index 0000000..cf7eb83
--- /dev/null
+++ b/test/Sema/argument-checking.m
@@ -0,0 +1,27 @@
+// RUN: clang -fsyntax-only -verify %s
+
+typedef struct objc_object *id;
+
+struct S { int a; };
+
+extern int charStarFunc(char *);
+extern int charFunc(char);
+
+@interface Test
++alloc;
+-(int)charStarMeth:(char *)s;
+-structMeth:(struct S)s;
+-structMeth:(struct S)s :(struct S)s2;
+@end
+
+void test() {
+ id obj = [Test alloc];
+ struct S sInst;
+
+ charStarFunc(1); // expected-warning {{incompatible types passing 'int' to function expecting 'char *'}}
+ charFunc("abc"); // expected-warning {{incompatible types passing 'char *' to function expecting 'char'}}
+
+ [obj charStarMeth:1]; // expected-warning {{incompatible types passing 'int' to method expecting 'char *'}}
+ [obj structMeth:1]; // expected-error {{incompatible types passing 'int' to method expecting 'struct S'}}
+ [obj structMeth:sInst :1]; // expected-error {{incompatible types passing 'int' to method expecting 'struct S'}}
+}