llvm-project/clang/test/Coverage/unresolved-ctor-expr.cpp
Mital Ashok 482c41e992
[Clang] [Sema] Diagnose unknown std::initializer_list layout in SemaInit (#95580)
This checks if the layout of `std::initializer_list` is something Clang
can handle much earlier and deduplicates the checks in
CodeGen/CGExprAgg.cpp and AST/ExprConstant.cpp

Also now diagnose `union initializer_list` (Fixes #95495), bit-field for
the size (Fixes a crash that would happen during codegen if it were
unnamed), base classes (that wouldn't be initialized) and polymorphic
classes (whose vtable pointer wouldn't be initialized).
2024-06-20 19:44:06 +02:00

25 lines
622 B
C++

// RUN: %clang_cc1 -fsyntax-only -verify -std=c++20 -fcoverage-mapping %s
// expected-no-diagnostics
// GH62105 demonstrated a crash with this example code when calculating
// coverage mapping because some source location information was being dropped.
// Demonstrate that we do not crash on this code.
namespace std { template <typename E> class initializer_list { const E *a, *b; }; }
template <typename> struct T {
T(std::initializer_list<int>, int = int());
bool b;
};
template <typename> struct S1 {
static void foo() {
class C;
(void)(0 ? T<C>{} : T<C>{});
}
};
void bar() {
S1<int>::foo();
}