summaryrefslogtreecommitdiffstats
path: root/clang/test/FixIt/fixit-c++2a.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/FixIt/fixit-c++2a.cpp')
-rw-r--r--clang/test/FixIt/fixit-c++2a.cpp38
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
+}
OpenPOWER on IntegriCloud