1 // { dg-do compile }
2 
3 struct A
4 {
5   int i;
6 };
7 
8 struct B
9 {
10   int i;
11 };
12 
13 struct C : A, B
14 {
15   using A::i; // { dg-message "previous" }
16   using B::i; // { dg-error "redeclaration" }
17 };
18 
19 struct E
20 {
21   typedef int type;
22 };
23 
24 struct F
25 {
26   typedef int type;
27 };
28 
29 struct G : E, F
30 {
31   using E::type; // { dg-message "previous" }
32   using F::type; // { dg-error "redeclaration" }
33 };
34 
35 struct H
36 {
37   typedef int type;
38 };
39 
40 struct I : H
41 {
42   typedef int type; // { dg-message "previous" }
43   using H::type; // { dg-error "conflicts" }
44 };
45 
46 struct I2 : H
47 {
48   using H::type; // { dg-message "previous" }
49   typedef int type; // { dg-error "conflicts" }
50 };
51 
52 struct J
53 {
54   struct type {};
55 };
56 
57 struct K : J
58 {
59   struct type {}; // { dg-message "previous" }
60   using J::type; // { dg-error "conflicts" }
61 };
62 
63 struct L : J
64 {
65   using J::type; // { dg-message "previous" }
66   struct type {}; // { dg-error "conflicts" }
67 };
68 
69 struct M
70 {
71   typedef int type;
72   struct type2 {};
73 };
74 
75 struct N : M
76 {
77   using M::type; // { dg-message "previous" }
78   using M::type; // { dg-error "redeclaration" }
79   using M::type2; // { dg-message "previous" }
80   using M::type2; // { dg-error "redeclaration" }
81 };
82