mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-17 17:46:49 +00:00

The type was never saved, and therefore never transformed in dependent contexts. Reviewed By: aaron.ballman, #clang-language-wg Differential Revision: https://reviews.llvm.org/D154492
34 lines
922 B
C++
34 lines
922 B
C++
// RUN: %clang_cc1 -fsyntax-only -verify -std=c++23 %s
|
|
|
|
namespace GH63627 {
|
|
template<class T>
|
|
void ok() {
|
|
if (using U = decltype([]{ return 42;}); true) {
|
|
static_assert(U{}() == 42);
|
|
}
|
|
for (using U = decltype([]{ return 42;}); [[maybe_unused]] auto x : "abc") {
|
|
static_assert(U{}() == 42);
|
|
}
|
|
for (using U = decltype([]{ return 42;}); false; ) {
|
|
static_assert(U{}() == 42);
|
|
}
|
|
}
|
|
|
|
template<class T>
|
|
void err() {
|
|
if (using U = decltype([]{}.foo); true) {} // expected-error {{no member named 'foo'}}
|
|
|
|
for (using U = decltype([]{}.foo); // expected-error {{no member named 'foo'}}
|
|
[[maybe_unused]] auto x : "abc") { }
|
|
|
|
for (using U = decltype([]{}.foo); // expected-error {{no member named 'foo'}}
|
|
false ; ) { }
|
|
};
|
|
|
|
void test() {
|
|
ok<int>();
|
|
err<int>(); // expected-note {{in instantiation of function template specialization 'GH63627::err<int>'}}
|
|
}
|
|
|
|
}
|