diff options
Diffstat (limited to 'clang/test/FixIt/fixit-c++2a.cpp')
-rw-r--r-- | clang/test/FixIt/fixit-c++2a.cpp | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/clang/test/FixIt/fixit-c++2a.cpp b/clang/test/FixIt/fixit-c++2a.cpp index c97bb7ae610..6fe05dabf07 100644 --- a/clang/test/FixIt/fixit-c++2a.cpp +++ b/clang/test/FixIt/fixit-c++2a.cpp @@ -1,7 +1,8 @@ -// RUN: %clang_cc1 -verify -std=c++2a %s +// RUN: %clang_cc1 -verify -std=c++2a -pedantic-errors %s // RUN: cp %s %t // RUN: not %clang_cc1 -x c++ -std=c++2a -fixit %t -// RUN: %clang_cc1 -Wall -pedantic -x c++ -std=c++2a %t +// RUN: %clang_cc1 -Wall -pedantic-errors -x c++ -std=c++2a %t +// RUN: cat %t | FileCheck %s /* This is a test of the various code modification hints that only apply in C++2a. */ @@ -13,3 +14,36 @@ template<typename ...T> void init_capture_pack(T ...a) { [&...a]{}; // expected-error {{must appear after the name}} [...&a]{}; // expected-error {{must appear after the name}} } + +namespace constinit_mismatch { + extern thread_local constinit int a; // expected-note {{declared constinit here}} + thread_local int a = 123; // expected-error {{'constinit' specifier missing on initializing declaration of 'a'}} + // CHECK: {{^}} constinit thread_local int a = 123; + + int b = 123; // expected-note {{add the 'constinit' specifier}} + extern constinit int b; // expected-error {{'constinit' specifier added after initialization of variable}} + // CHECK: {{^}} extern int b; + + template<typename> struct X { + template<int> static constinit int n; // expected-note {{constinit}} + }; + template<typename T> template<int N> + int X<T>::n = 123; // expected-error {{missing}} + // CHECK: {{^}} constinit int X<T>::n = 123; + +#define ABSL_CONST_INIT [[clang::require_constant_initialization]] + extern constinit int c; // expected-note {{constinit}} + int c; // expected-error {{missing}} + // CHECK: {{^}} ABSL_CONST_INIT int c; + +#define MY_CONST_INIT constinit + extern constinit int d; // expected-note {{constinit}} + int d; // expected-error {{missing}} + // CHECK: {{^}} MY_CONST_INIT int d; +#undef MY_CONST_INIT + + extern constinit int e; // expected-note {{constinit}} + int e; // expected-error {{missing}} + // CHECK: {{^}} ABSL_CONST_INIT int e; +#undef ABSL_CONST_INIT +} |