annotate gcc/testsuite/g++.dg/warn/Wredundant-tags.C @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 1830386684a0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
145
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
1 /* PR c++/61339 - add mismatch between struct and class
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
2 Test to verify that -Wredundant-tags is issued for references to class
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
3 types that use the class-key even though they don't need to.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
4 { dg-do compile }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
5 { dg-options "-Wredundant-tags" } */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
6
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
7 struct A;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
8
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
9 extern A *pa;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
10 extern struct A *pa; // { dg-warning "redundant class-key 'struct' in reference to 'struct A'" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
11
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
12 extern A aa[];
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
13 extern struct A aa[]; // { dg-warning "redundant class-key 'struct' in reference to 'struct A'" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
14
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
15 void func (A*);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
16 void func (struct A*); // { dg-warning "redundant class-key 'struct' in reference to 'struct A'" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
17
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
18 int A;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
19
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
20 extern struct A *pa;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
21 extern struct A aa[];
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
22 void func (struct A*);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
23
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
24
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
25 class B;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
26
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
27 extern B *pb;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
28 extern class B *pb; // { dg-warning "redundant class-key 'class' in reference to 'class B'" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
29
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
30 extern B ab[];
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
31 extern class B ab[]; // { dg-warning "redundant class-key 'class' in reference to 'class B'" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
32
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
33 void func (B*);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
34 void func (class B*); // { dg-warning "redundant class-key 'class' in reference to 'class B'" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
35
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
36 int B;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
37
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
38 extern class B *pb;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
39 extern class B ab[];
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
40 void func (class B*);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
41
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
42
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
43 enum C { c0 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
44
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
45 extern C *pc;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
46 extern enum C *pc; // { dg-warning "redundant enum-key 'enum' in reference to 'enum C'" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
47
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
48 extern C ac[];
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
49 extern enum C ac[]; // { dg-warning "redundant enum-key 'enum' in reference to 'enum C'" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
50
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
51 void func (C*);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
52 void func (enum C*); // { dg-warning "redundant enum-key 'enum' in reference to 'enum C'" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
53
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
54 int C;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
55
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
56 extern enum C *pc;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
57 extern enum C ac[];
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
58 void func (enum C*);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
59
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
60
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
61 #if __cplusplus > 199711L
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
62
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
63 enum class D1 { d1 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
64 enum struct D2 { d2 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
65
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
66 #else
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
67
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
68 enum D1 { d1 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
69 enum D2 { d2 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
70
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
71 #endif
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
72
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
73 extern D1 *pd1;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
74 extern D2 *pd2;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
75 extern enum D1 *pd1; // { dg-warning "redundant enum-key 'enum' in reference to 'enum class D1'" "C++ 11 and above" { target c++11 } }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
76 // { dg-warning "redundant enum-key 'enum' in reference to 'enum D1'" "C++ 98" { target c++98_only } .-1 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
77
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
78 extern enum D2 *pd2; // { dg-warning "redundant enum-key 'enum' in reference to 'enum class D2'" "C++ 11 and above" { target c++11 } }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
79 // { dg-warning "redundant enum-key 'enum' in reference to 'enum D2'" "C++ 98" { target c++98_only } .-1 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
80
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
81 extern D1 ad1[];
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
82 extern D2 ad2[];
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
83
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
84 #if __cplusplus > 199711L
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
85 extern enum class D1 ad1[]; // { dg-warning "redundant enum-key 'enum class' in reference to 'enum class D1'" "C++ 11 and above" { target c++11 } }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
86 // { dg-warning "elaborated-type-specifier for a scoped enum must not use the 'class' keyword" "C++ 11 and above" { target c++11 } .-1 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
87 /* The pretty printer cannot differentiate between enum class and enum struct
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
88 because the C++ front-end doesn't encode it so allow for both in the text
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
89 of the warning below. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
90 extern enum struct D2 ad2[]; // { dg-warning "redundant enum-key 'enum struct' in reference to 'enum \(class|struct\) D2'" "C++ 11 and above" { target c++11 } }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
91 // { dg-warning "elaborated-type-specifier for a scoped enum must not use the 'struct' keyword" "C++ 11 and above" { target c++11 } .-1 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
92 #else
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
93 extern enum D1 ad1[]; // { dg-warning "redundant enum-key 'enum' in reference to 'enum D1'" "C++ 98" { target c++98_only } }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
94 #endif
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
95
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
96 void func (D1*);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
97 void func (enum D1*); // { dg-warning "redundant enum-key 'enum' in reference to 'enum " }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
98
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
99 void func (D2*);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
100 void func (enum D2*); // { dg-warning "redundant enum-key 'enum' in reference to 'enum " }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
101
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
102 int D1, D2;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
103
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
104 extern enum D1 *pd1;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
105 extern enum D1 ad1[];
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
106 void func (enum D1*);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
107
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
108 extern enum D2 *pd2;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
109 extern enum D2 ad2[];
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
110 void func (enum D2*);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
111
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
112
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
113 union U;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
114
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
115 extern U *pu;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
116 extern union U *pu; // { dg-warning "redundant class-key 'union' in reference to 'union U'" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
117
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
118 extern U au[];
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
119 extern union U au[]; // { dg-warning "redundant class-key 'union' in reference to 'union U'" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
120
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
121 void func (U*);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
122 void func (union U*); // { dg-warning "redundant class-key 'union' in reference to 'union U'" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
123
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
124 int U;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
125
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
126 extern union U *pu;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
127 extern union U au[];
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
128 void func (union U*);