llvm-project/clang/test/FixIt/fixit-constrained-structured-binding.cpp
foxfromabyss 32cb4b2c6d
[Clang][Diagnostics] Use "structured binding" instead of "decomposition" (#163101)
[P0615R0](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0615r0.html)
changed the term "decomposition" to "structured binding". Some
diagnostic messages were created before this paper. These messages
should be updated using "structured binding" to avoid making users
confused.

Closes #157880

---------

Co-authored-by: foxfromabyss <foxfromabyss@foxfromabyss.com>
Co-authored-by: Sirraide <aeternalmail@gmail.com>
2025-10-16 18:28:38 +02:00

34 lines
1022 B
C++

// RUN: not %clang_cc1 -std=c++20 -fdiagnostics-parseable-fixits -x c++ %s 2> %t
// RUN: FileCheck %s < %t
template<typename T>
concept UnaryC = true;
template<typename T, typename U>
concept BinaryC = true;
struct S{ int i, j; };
S get_S();
template<typename T>
T get_T();
void use() {
UnaryC auto [a, b] = get_S();
// CHECK: error: structured binding declaration cannot be declared with constrained 'auto'
// CHECK: fix-it:{{.*}}:{16:3-16:10}:""
BinaryC<int> auto [c, d] = get_S();
// CHECK: error: structured binding declaration cannot be declared with constrained 'auto'
// CHECK: fix-it:{{.*}}:{19:3-19:16}:""
}
template<typename T>
void TemplUse() {
UnaryC auto [a, b] = get_T<T>();
// CHECK: error: structured binding declaration cannot be declared with constrained 'auto'
// XCHECK: fix-it:{{.*}}:{26:3-26:10}:""
BinaryC<T> auto [c, d] = get_T<T>();
// CHECK: error: structured binding declaration cannot be declared with constrained 'auto'
// XCHECK: fix-it:{{.*}}:{29:3-29:14}:""
}