aboutsummaryrefslogtreecommitdiff
path: root/clang/test/Parser/cxx2c-trivially-relocatable.cpp
blob: 255e3e4f4460d1058f98d091ddead0edfaa04e21 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// RUN: %clang_cc1 -std=c++03 -verify=expected,cxx11,cxx03 -fsyntax-only %s
// RUN: %clang_cc1 -std=c++11 -verify=expected,cxx11 -fsyntax-only %s
// RUN: %clang_cc1 -std=c++2c -verify=expected -fsyntax-only %s


class A trivially_relocatable_if_eligible {};
// cxx11-warning@-1 {{'trivially_relocatable_if_eligible' keyword is a C++2c extension}}
class E final trivially_relocatable_if_eligible {};
// cxx11-warning@-1 {{'trivially_relocatable_if_eligible' keyword is a C++2c extension}}
// cxx03-warning@-2 {{'final' keyword is a C++11 extension}}
class G trivially_relocatable_if_eligible final{};
// cxx11-warning@-1 {{'trivially_relocatable_if_eligible' keyword is a C++2c extension}}
// cxx03-warning@-2 {{'final' keyword is a C++11 extension}}
class I trivially_relocatable_if_eligible trivially_relocatable_if_eligible final {};
// expected-error@-1 {{class already marked 'trivially_relocatable_if_eligible'}}
// cxx11-warning@-2 {{'trivially_relocatable_if_eligible' keyword is a C++2c extension}}
// cxx03-warning@-3 {{'final' keyword is a C++11 extension}}
class trivially_relocatable_if_eligible trivially_relocatable_if_eligible {};
// cxx11-warning@-1 {{'trivially_relocatable_if_eligible' keyword is a C++2c extension}}
class J replaceable_if_eligible{};
// cxx11-warning@-1 {{'replaceable_if_eligible' keyword is a C++2c extension}}
class K replaceable_if_eligible replaceable_if_eligible {};
// expected-error@-1 {{class already marked 'replaceable_if_eligible'}}
// cxx11-warning@-2 {{'replaceable_if_eligible' keyword is a C++2c extension}}
class replaceable_if_eligible replaceable_if_eligible {};
// cxx11-warning@-1 {{'replaceable_if_eligible' keyword is a C++2c extension}}
class L replaceable_if_eligible trivially_relocatable_if_eligible final {};
// cxx11-warning@-1 {{'replaceable_if_eligible' keyword is a C++2c extension}}
// cxx11-warning@-2 {{'trivially_relocatable_if_eligible' keyword is a C++2c extension}}
// cxx03-warning@-3 {{'final' keyword is a C++11 extension}}
class M replaceable_if_eligible final trivially_relocatable_if_eligible {};
// cxx11-warning@-1 {{'trivially_relocatable_if_eligible' keyword is a C++2c extension}}
// cxx11-warning@-2 {{'replaceable_if_eligible' keyword is a C++2c extension}}
// cxx03-warning@-3 {{'final' keyword is a C++11 extension}}
class N final trivially_relocatable_if_eligible replaceable_if_eligible {};
// cxx11-warning@-1 {{'trivially_relocatable_if_eligible' keyword is a C++2c extension}}
// cxx11-warning@-2 {{'replaceable_if_eligible' keyword is a C++2c extension}}
// cxx03-warning@-3 {{'final' keyword is a C++11 extension}}
class O trivially_relocatable_if_eligible replaceable_if_eligible final {};
// cxx11-warning@-1 {{'trivially_relocatable_if_eligible' keyword is a C++2c extension}}
// cxx11-warning@-2 {{'replaceable_if_eligible' keyword is a C++2c extension}}
// cxx03-warning@-3 {{'final' keyword is a C++11 extension}}