Files
clang-p2996/clang/test/Coverage/unresolved-ctor-expr.cpp
Aaron Ballman b0e61de707 Model list initialization more directly; fixes an assert with coverage mapping
Instead of using the validity of a brace's source location as a flag
for list initialization, this now uses a PointerIntPair to model it so
we do not increase the size of the AST node to track this information.
This allows us to retain the valid source location information, which
fixes the coverage assertion.

Fixes https://github.com/llvm/llvm-project/issues/62105
Differential Revision: https://reviews.llvm.org/D148245
2023-04-14 07:19:33 -04:00

25 lines
603 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> class initializer_list {}; }
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();
}