• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // RUN: %clang_cc1 -verify -fsyntax-only %s
2 
3 static int g0; // expected-note{{previous definition}}
4 int g0; // expected-error{{non-static declaration of 'g0' follows static declaration}}
5 
6 static int g1;
7 extern int g1;
8 
9 static int g2;
10 __private_extern__ int g2;
11 
12 int g3; // expected-note{{previous definition}}
13 static int g3; // expected-error{{static declaration of 'g3' follows non-static declaration}}
14 
15 extern int g4; // expected-note{{previous definition}}
16 static int g4; // expected-error{{static declaration of 'g4' follows non-static declaration}}
17 
18 __private_extern__ int g5; // expected-note{{previous definition}}
19 static int g5; // expected-error{{static declaration of 'g5' follows non-static declaration}}
20 
f0()21 void f0() {
22   int g6; // expected-note {{previous}}
23   extern int g6; // expected-error {{extern declaration of 'g6' follows non-extern declaration}}
24 }
25 
f1()26 void f1() {
27   int g7; // expected-note {{previous}}
28   __private_extern__ int g7; // expected-error {{extern declaration of 'g7' follows non-extern declaration}}
29 }
30 
f2()31 void f2() {
32   extern int g8; // expected-note{{previous definition}}
33   int g8; // expected-error {{non-extern declaration of 'g8' follows extern declaration}}
34 }
35 
f3()36 void f3() {
37   __private_extern__ int g9; // expected-note{{previous definition}}
38   int g9; // expected-error {{non-extern declaration of 'g9' follows extern declaration}}
39 }
40 
f4()41 void f4() {
42   extern int g10;
43   extern int g10;
44 }
45 
f5()46 void f5() {
47   __private_extern__ int g11;
48   __private_extern__ int g11;
49 }
50 
f6()51 void f6() {
52   // FIXME: Diagnose
53   extern int g12;
54   __private_extern__ int g12;
55 }
56 
f7()57 void f7() {
58   // FIXME: Diagnose
59   __private_extern__ int g13;
60   extern int g13;
61 }
62 
63 struct s0;
f8()64 void f8() {
65   extern struct s0 g14;
66   __private_extern__ struct s0 g14;
67 }
68 struct s0 { int x; };
69 
f9()70 void f9() {
71   extern int g15 = 0; // expected-error{{'extern' variable cannot have an initializer}}
72   // FIXME: linkage specifier in warning.
73   __private_extern__ int g16 = 0; // expected-error{{'extern' variable cannot have an initializer}}
74 }
75 
76 extern int g17;
77 int g17 = 0;
78 
79 extern int g18 = 0; // expected-warning{{'extern' variable has an initializer}}
80 
81 __private_extern__ int g19;
82 int g19 = 0;
83 
84 __private_extern__ int g20 = 0;
85