xref: /llvm-project/clang/test/Sema/nested-redef.c (revision 267a437920904723360cb2837172bd776db73057)
1 // RUN: %clang_cc1 -fsyntax-only -verify %s
2 struct X { // expected-note{{previous definition is here}}
3   struct X { } x; // expected-error{{nested redefinition of 'X'}}
4 };
5 
6 struct Y { };
f(void)7 void f(void) {
8   struct Y { }; // okay: this is a different Y
9 }
10 
11 struct T;
12 struct Z {
13   struct T { int x; } t;
14   struct U { int x; } u;
15 };
16 
f2(void)17 void f2(void) {
18   struct T t;
19   struct U u;
20 }
21 
f3(void)22 void f3(void) {
23   struct G { // expected-note{{previous definition is here}}
24     struct G {}; // expected-error{{nested redefinition of 'G'}}
25   };
26 }
27 
f4(void)28 void f4(void) {
29   struct G { // expected-note 2{{previous definition is here}}
30     struct G {}; // expected-error{{nested redefinition of 'G'}}
31   };
32 
33   struct G {}; // expected-error{{redefinition of 'G'}}
34 }
35