aboutsummaryrefslogtreecommitdiff
path: root/clang/test/SemaCXX/cxx1z-decomposition.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/SemaCXX/cxx1z-decomposition.cpp')
-rw-r--r--clang/test/SemaCXX/cxx1z-decomposition.cpp30
1 files changed, 15 insertions, 15 deletions
diff --git a/clang/test/SemaCXX/cxx1z-decomposition.cpp b/clang/test/SemaCXX/cxx1z-decomposition.cpp
index 6ee1249..158a3a6 100644
--- a/clang/test/SemaCXX/cxx1z-decomposition.cpp
+++ b/clang/test/SemaCXX/cxx1z-decomposition.cpp
@@ -3,22 +3,22 @@
// RUN: %clang_cc1 -std=c++20 -Wpre-c++20-compat -fexperimental-new-constant-interpreter -verify=expected %s
void use_from_own_init() {
- auto [a] = a; // expected-error {{binding 'a' cannot appear in the initializer of its own decomposition declaration}}
+ auto [a] = a; // expected-error {{binding 'a' cannot appear in the initializer of its own structured binding declaration}}
}
void num_elems() {
struct A0 {} a0;
int a1[1], a2[2];
- auto [] = a0; // expected-warning {{does not allow a decomposition group to be empty}}
- auto [v1] = a0; // expected-error {{type 'struct A0' decomposes into 0 elements, but 1 name was provided}}
- auto [] = a1; // expected-error {{type 'int[1]' decomposes into 1 element, but no names were provided}} expected-warning {{empty}}
+ auto [] = a0; // expected-warning {{does not allow a structured binding group to be empty}}
+ auto [v1] = a0; // expected-error {{type 'struct A0' binds to 0 elements, but 1 name was provided}}
+ auto [] = a1; // expected-error {{type 'int[1]' binds to 1 element, but no names were provided}} expected-warning {{empty}}
auto [v2] = a1;
- auto [v3, v4] = a1; // expected-error {{type 'int[1]' decomposes into 1 element, but 2 names were provided}}
- auto [] = a2; // expected-error {{type 'int[2]' decomposes into 2 elements, but no names were provided}} expected-warning {{empty}}
- auto [v5] = a2; // expected-error {{type 'int[2]' decomposes into 2 elements, but only 1 name was provided}}
+ auto [v3, v4] = a1; // expected-error {{type 'int[1]' binds to 1 element, but 2 names were provided}}
+ auto [] = a2; // expected-error {{type 'int[2]' binds to 2 elements, but no names were provided}} expected-warning {{empty}}
+ auto [v5] = a2; // expected-error {{type 'int[2]' binds to 2 elements, but only 1 name was provided}}
auto [v6, v7] = a2;
- auto [v8, v9, v10] = a2; // expected-error {{type 'int[2]' decomposes into 2 elements, but 3 names were provided}}
+ auto [v8, v9, v10] = a2; // expected-error {{type 'int[2]' binds to 2 elements, but 3 names were provided}}
}
// As a Clang extension, _Complex can be decomposed.
@@ -105,7 +105,7 @@ void enclosing() {
void bitfield() {
struct { int a : 3, : 4, b : 5; } a;
auto &[x, y] = a;
- auto &[p, q, r] = a; // expected-error-re {{type 'struct (unnamed struct at {{.*}})' decomposes into 2 elements, but 3 names were provided}}
+ auto &[p, q, r] = a; // expected-error-re {{type 'struct (unnamed struct at {{.*}})' binds to 2 elements, but 3 names were provided}}
}
void for_range() {
@@ -115,7 +115,7 @@ void for_range() {
}
int y[5];
- for (auto[c] : y) { // expected-error {{cannot decompose non-class, non-array type 'int'}}
+ for (auto[c] : y) { // expected-error {{cannot bind non-class, non-array type 'int'}}
c++;
}
}
@@ -157,16 +157,16 @@ int f2() {
namespace lambdas {
void f() {
int n;
- auto [a] = // expected-error {{cannot decompose lambda closure type}}
+ auto [a] = // expected-error {{cannot bind lambda closure type}}
[n] {}; // expected-note {{lambda expression}}
}
- auto [] = []{}; // expected-warning {{ISO C++17 does not allow a decomposition group to be empty}}
+ auto [] = []{}; // expected-warning {{ISO C++17 does not allow a structured binding group to be empty}}
int g() {
int n = 0;
auto a = [=](auto &self) { // expected-note {{lambda expression}}
- auto &[capture] = self; // expected-error {{cannot decompose lambda closure type}}
+ auto &[capture] = self; // expected-error {{cannot bind lambda closure type}}
++capture;
return n;
};
@@ -188,14 +188,14 @@ namespace lambdas {
struct A : decltype(x) {
int n;
};
- auto &&[r] = A{x, 0}; // expected-error-re {{cannot decompose class type 'A': both it and its base class 'decltype(x)' (aka '(lambda {{.*}})') have non-static data members}}
+ auto &&[r] = A{x, 0}; // expected-error-re {{cannot bind class type 'A': both it and its base class 'decltype(x)' (aka '(lambda {{.*}})') have non-static data members}}
return r;
}
void j() {
auto x = [] {};
struct A : decltype(x) {};
- auto &&[] = A{x}; // expected-warning {{ISO C++17 does not allow a decomposition group to be empty}}
+ auto &&[] = A{x}; // expected-warning {{ISO C++17 does not allow a structured binding group to be empty}}
}
}