1 // RUN: %clang_cc1 -fsyntax-only -verify %s
3 #define SA(n, c) int arr##n[(c) ? 1 : -1] = {}
7 int f1(enum {AA
,BB
} E
) { // expected-warning {{will not be visible outside of this function}}
13 int f2(enum {AA
=7,BB
} E
) { // expected-warning {{will not be visible outside of this function}}
22 int f3(struct a
{ } *); // expected-warning {{will not be visible outside of this function}}
24 struct A
{ struct b
{ int j
; } t
; }; // expected-note {{previous definition is here}}
26 int f4(struct A
{ struct b
{ int j
; } t
; } *); // expected-warning {{declaration of 'struct A' will not be visible outside of this function}} expected-warning {{redefinition of 'b' will not be visible outside of this function}}
29 struct ab
{ // expected-note {{previous definition is here}} expected-note {{previous definition is here}}
34 int f5(struct aA
{ struct ab
{ int j
; } b
; struct ab
{ char glorx
; } glorx
; } *); // expected-warning {{declaration of 'struct aA' will not be visible}} expected-warning {{redefinition of 'ab' will not be visible}} expected-warning {{redefinition of 'ab' will not be visible}}
36 void f6(struct z
{int b
;} c
) { // expected-warning {{declaration of 'struct z' will not be visible outside of this function}}
41 void pr19018_1 (enum e19018
{ qq
} x
); // expected-warning{{declaration of 'enum e19018' will not be visible outside of this function}}
42 enum e19018 qq
; //expected-error{{tentative definition has type 'enum e19018' that is never completed}} \
43 //expected-note{{forward declaration of 'enum e19018'}}
45 // Only warn once, even if we create two declarations.
46 void f(struct q
*, struct __attribute__((aligned(4))) q
*); // expected-warning {{will not be visible outside}}
48 // This enum inside the function pointer parameter shouldn't leak into the
51 void enum_in_fun_in_fun(void (*fp
)(enum { AA
, BB
} e
)) { // expected-warning {{will not be visible}}
52 SA(1, AA
== 5); // expected-warning{{variable length array folded to constant array as an extension}}
57 extern void ext(struct S
{ enum E7
{ a
, b
} o
; } p
); // expected-warning 2 {{will not be visible}}
58 ext(a
); // expected-error {{use of undeclared identifier}}
61 int f8(struct S
{ enum E8
{ a
, b
} o
; } p
) { // expected-warning 2 {{will not be visible}}
66 // expected-note@+1 {{forward declaration}}
67 struct S o
; // expected-error {{'struct S' that is never completed}}
68 // expected-note@+1 {{forward declaration}}
69 enum E8 x
= a
+ b
; // expected-error 2 {{undeclared identifier}} expected-error {{incomplete type 'enum E8'}}
71 int f9(struct { enum e
{ a
= 1 } b
; } c
) { // expected-warning {{will not be visible}}
76 struct S
{ // expected-warning {{will not be visible}}
77 enum E10
{ a
, b
, c
} f
; // expected-warning {{will not be visible}}
83 struct S
{ // expected-warning {{will not be visible}}
84 enum E11
{ // expected-warning {{will not be visible}}
86 } // expected-warning {{expected ';' at end of declaration list}}
87 } // expected-error {{expected member name or ';'}}
92 struct S12
{ } e
// expected-warning {{will not be visible}}
94 struct S12 o
; // expected-error {{incomplete type}} expected-note {{forward declaration}}