blob: 255e3e4f4460d1058f98d091ddead0edfaa04e21 [file] [log] [blame]
// 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}}