152
|
1 /* PR c++/93801 - False -Wmismatched-tags upon redundant typename
|
|
2 { dg-do compile }
|
|
3 { dg-options "-Wall -Wredundant-tags" } */
|
|
4
|
|
5 namespace N
|
|
6 {
|
|
7 class C { };
|
|
8 enum E { };
|
|
9 struct S { };
|
|
10 union U { };
|
|
11
|
|
12 template <int> class TC { };
|
|
13 template <int> struct TS { };
|
|
14 template <int> union TU { };
|
|
15 }
|
|
16
|
|
17 N::C c1;
|
|
18 typename N::C c2; // { dg-bogus "-Wredundant-tags" }
|
|
19 class N::C c3; // { dg-warning "-Wredundant-tags" }
|
|
20
|
|
21 N::E e1;
|
|
22 typename N::E e2; // { dg-bogus "-Wredundant-tags" }
|
|
23 enum N::E e3; // { dg-warning "-Wredundant-tags" }
|
|
24
|
|
25 N::S s1;
|
|
26 typename N::S s2; // { dg-bogus "-Wredundant-tags" }
|
|
27 struct N::S s3; // { dg-warning "-Wredundant-tags" }
|
|
28
|
|
29 N::U u1;
|
|
30 typename N::U u2; // { dg-bogus "-Wredundant-tags" }
|
|
31 // { dg-bogus "'class' tag used in naming 'union N::U" "pr93809" { xfail *-*-*} .-1 }
|
|
32 union N::U u3; // { dg-warning "-Wredundant-tags" }
|
|
33
|
|
34
|
|
35 typedef N::TC<0> TC0;
|
|
36 typedef typename N::TC<0> TC0;
|
|
37 typedef class N::TC<0> TC0; // { dg-warning "-Wredundant-tags" }
|
|
38
|
|
39 typedef N::TS<0> TS0;
|
|
40 typedef typename N::TS<0> TS0;
|
|
41 typedef struct N::TS<0> TS0; // { dg-warning "-Wredundant-tags" }
|
|
42
|
|
43 typedef N::TS<0> TS0;
|
|
44 typedef typename N::TS<0> TS0;
|
|
45 typedef struct N::TS<0> TS0; // { dg-warning "-Wredundant-tags" }
|