blob: 70d3d39f8ba5744da4563ce0c095e08860e7e76d [file] [log] [blame]
Aaron Ballmanbf5cf8c2013-07-22 17:55:04 +00001// RUN: %clang_cc1 -fsyntax-only -verify %s
Fariborz Jahanianf4aa2792011-06-27 21:12:03 +00002// rdar://9584012
3
4typedef struct {
5 char *str;
6} Class;
7
8typedef union {
9 Class *object;
10} Instance __attribute__((transparent_union));
11
12__attribute__((nonnull(1))) void Class_init(Instance this, char *str) {
13 this.object->str = str;
14}
15
16int main(void) {
17 Class *obj;
18 Class_init(0, "Hello World"); // expected-warning {{null passed to a callee which requires a non-null argument}}
19 Class_init(obj, "Hello World");
20}
21
Aaron Ballmanbe50eb82013-07-30 00:48:57 +000022void foo(const char *str) __attribute__((nonnull("foo"))); // expected-error{{'nonnull' attribute requires parameter 1 to be an integer constant}}
Aaron Ballmancedaaea2013-12-26 17:07:49 +000023void bar(int i) __attribute__((nonnull(1))); // expected-warning {{'nonnull' attribute only applies to pointer arguments}} expected-warning {{'nonnull' attribute applied to function with no pointer arguments}}