1 | // RUN: %clang_cc1 -fsyntax-only -verify %s |
2 | // PR3459 |
3 | struct bar { |
4 | char n[1]; |
5 | }; |
6 | |
7 | struct foo { |
8 | char name[(int)&((struct bar *)0)->n]; |
9 | char name2[(int)&((struct bar *)0)->n - 1]; //expected-error{{'name2' declared as an array with a negative size}} |
10 | }; |
11 | |
12 | // PR3430 |
13 | struct s { |
14 | struct st { |
15 | int v; |
16 | } *ts; |
17 | }; |
18 | |
19 | struct st; |
20 | |
21 | int foo() { |
22 | struct st *f; |
23 | return f->v + f[0].v; |
24 | } |
25 | |
26 | // PR3642, PR3671 |
27 | struct pppoe_tag { |
28 | short tag_type; |
29 | char tag_data[]; |
30 | }; |
31 | struct datatag { |
32 | struct pppoe_tag hdr; //expected-warning{{field 'hdr' with variable sized type 'struct pppoe_tag' not at the end of a struct or class is a GNU extension}} |
33 | char data; |
34 | }; |
35 | |
36 | |
37 | // PR4092 |
38 | struct s0 { |
39 | char a; // expected-note {{previous declaration is here}} |
40 | char a; // expected-error {{duplicate member 'a'}} |
41 | }; |
42 | |
43 | struct s0 f0(void) {} |
44 | |
45 | // <rdar://problem/8177927> - This previously triggered an assertion failure. |
46 | struct x0 { |
47 | unsigned int x1; |
48 | }; |
49 | |
50 | // rdar://problem/9150338 |
51 | static struct test1 { // expected-warning {{'static' ignored on this declaration}} |
52 | int x; |
53 | }; |
54 | const struct test2 { // expected-warning {{'const' ignored on this declaration}} |
55 | int x; |
56 | }; |
57 | inline struct test3 { // expected-error {{'inline' can only appear on functions}} |
58 | int x; |
59 | }; |
60 | |
61 | struct hiding_1 {}; |
62 | struct hiding_2 {}; |
63 | void test_hiding() { |
64 | struct hiding_1 *hiding_1(); |
65 | extern struct hiding_2 *hiding_2; |
66 | struct hiding_1 *p = hiding_1(); |
67 | struct hiding_2 *q = hiding_2; |
68 | } |
69 | |
70 | struct PreserveAttributes {}; |
71 | typedef struct __attribute__((noreturn)) PreserveAttributes PreserveAttributes_t; // expected-warning {{'noreturn' attribute only applies to functions and methods}} |
72 | |