annotate gcc/testsuite/g++.dg/cpp0x/override2.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 // { dg-do compile { target c++11 } }
kono
parents:
diff changeset
2 struct B1 {};
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 struct B2 final {};
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 struct D1 : B1 {};
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 struct D2 : B2 {}; // { dg-error "cannot derive from 'final' base" }
kono
parents:
diff changeset
9
kono
parents:
diff changeset
10 template<class T> struct D3 : T {};
kono
parents:
diff changeset
11
kono
parents:
diff changeset
12 template<class T> struct D4 : T {}; // { dg-error "cannot derive from 'final' base" }
kono
parents:
diff changeset
13
kono
parents:
diff changeset
14 template <class T> struct B3 {};
kono
parents:
diff changeset
15
kono
parents:
diff changeset
16 template <class T> struct B4 final {};
kono
parents:
diff changeset
17
kono
parents:
diff changeset
18 template <class T> struct B5 final {};
kono
parents:
diff changeset
19
kono
parents:
diff changeset
20 struct undeclared<int> final { }; // { dg-error "not a class template" }
kono
parents:
diff changeset
21
kono
parents:
diff changeset
22 struct D5 : B3<D5> {};
kono
parents:
diff changeset
23
kono
parents:
diff changeset
24 struct D6 : B4<D6> {}; // { dg-error "cannot derive from 'final' base" }
kono
parents:
diff changeset
25
kono
parents:
diff changeset
26 struct B6 final final {}; // { dg-error "duplicate virt-specifier" }
kono
parents:
diff changeset
27
kono
parents:
diff changeset
28 struct B7 override {}; // { dg-error "cannot specify 'override' for a class" }
kono
parents:
diff changeset
29
kono
parents:
diff changeset
30 namespace N
kono
parents:
diff changeset
31 {
kono
parents:
diff changeset
32 struct C;
kono
parents:
diff changeset
33 }
kono
parents:
diff changeset
34
kono
parents:
diff changeset
35 struct N::C final{};
kono
parents:
diff changeset
36
kono
parents:
diff changeset
37 int main()
kono
parents:
diff changeset
38 {
kono
parents:
diff changeset
39 D3<B1> d;
kono
parents:
diff changeset
40 D4<B2> d2;
kono
parents:
diff changeset
41 struct B2 final{}; // { dg-message "previous definition" }
kono
parents:
diff changeset
42 B2 final; // { dg-error "has a previous declaration|previously declared here" }
kono
parents:
diff changeset
43 B2 final2 = final;
kono
parents:
diff changeset
44 struct B2 {}; // { dg-error "redefinition" }
kono
parents:
diff changeset
45 struct B2 final; // { dg-error "redeclaration" }
kono
parents:
diff changeset
46 struct B2 override; // { dg-message "previously declared here" }
kono
parents:
diff changeset
47 struct B2 final {}; // { dg-error "redefinition" }
kono
parents:
diff changeset
48 struct B2 override {}; // { dg-error "cannot specify 'override' for a class" }
kono
parents:
diff changeset
49 B2 override{}; // { dg-error "redeclaration" }
kono
parents:
diff changeset
50 struct foo final {}; // { dg-message "previous definition" }
kono
parents:
diff changeset
51 struct foo final {}; // { dg-error "redefinition" }
kono
parents:
diff changeset
52 foo final; // { dg-error "conflicting declaration" }
kono
parents:
diff changeset
53 }