Stephen Hines | 651f13c | 2014-04-23 16:59:28 -0700 | [diff] [blame] | 1 | // RUN: %clang_cc1 -fsyntax-only -verify %s |
James Molloy | 16f1f71 | 2012-02-29 10:24:19 +0000 | [diff] [blame] | 2 | |
| 3 | const int AA = 5; |
| 4 | |
Stephen Hines | 651f13c | 2014-04-23 16:59:28 -0700 | [diff] [blame] | 5 | int f1(enum {AA,BB} E) { // expected-warning {{will not be visible outside of this function}} |
James Molloy | 16f1f71 | 2012-02-29 10:24:19 +0000 | [diff] [blame] | 6 | return BB; |
| 7 | } |
| 8 | |
Stephen Hines | 651f13c | 2014-04-23 16:59:28 -0700 | [diff] [blame] | 9 | int f2(enum {AA=7,BB} E) { // expected-warning {{will not be visible outside of this function}} |
James Molloy | 16f1f71 | 2012-02-29 10:24:19 +0000 | [diff] [blame] | 10 | return AA; |
| 11 | } |
| 12 | |
| 13 | struct a { |
| 14 | }; |
| 15 | |
| 16 | int f3(struct a { } *); // expected-warning {{will not be visible outside of this function}} |
| 17 | |
| 18 | struct A { struct b { int j; } t; }; // expected-note {{previous definition is here}} |
| 19 | |
| 20 | 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}} |
| 21 | |
| 22 | struct aA { |
| 23 | struct ab { // expected-note {{previous definition is here}} expected-note {{previous definition is here}} |
| 24 | int j; |
| 25 | } b; |
| 26 | }; |
| 27 | |
| 28 | 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}} |
| 29 | |
| 30 | void f6(struct z {int b;} c) { // expected-warning {{declaration of 'struct z' will not be visible outside of this function}} |
| 31 | struct z d; |
| 32 | d.b = 4; |
| 33 | } |
Stephen Hines | c568f1e | 2014-07-21 00:47:37 -0700 | [diff] [blame] | 34 | |
| 35 | void pr19018_1 (enum e19018 { qq } x); // expected-warning{{declaration of 'enum e19018' will not be visible outside of this function}} |
| 36 | enum e19018 qq; //expected-error{{tentative definition has type 'enum e19018' that is never completed}} \ |
| 37 | //expected-note{{forward declaration of 'enum e19018'}} |