<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/139387>139387</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Clang Crash on Parsing Constructor with Lambda and Template Name Resolution since clang 17
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
mariete1223
</td>
</tr>
</table>
<pre>
## Assertion
No asserion given
## Stack dump
```
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: /opt/compiler-explorer/clang-assertions-trunk/bin/clang++ -gdwarf-4 -g -o /app/output.s -mllvm --x86-asm-syntax=intel -fno-verbose-asm -S --gcc-toolchain=/opt/compiler-explorer/gcc-snapshot -fcolor-diagnostics -fno-crash-diagnostics -x c++ <source>
1. <source>:11:1: current parser token '}'
2. <source>:7:1: parsing struct/union/class body 'B1'
#0 0x0000000003f8ac78 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3f8ac78)
#1 0x0000000003f88904 llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3f88904)
#2 0x0000000003ecd6f8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x000077b8db042520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x0000000007c611b8 clang::TemplateName::getKind() const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x7c611b8)
#5 0x00000000074f6be6 clang::ASTContext::getNameForTemplate(clang::TemplateName, clang::SourceLocation) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x74f6be6)
#6 0x0000000006985075 clang::Sema::GetNameFromUnqualifiedId(clang::UnqualifiedId const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6985075)
#7 0x000000000698553e clang::Sema::GetNameForDeclarator(clang::Declarator&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x698553e)
#8 0x0000000006a83f20 clang::Sema::ActOnCXXMemberDeclarator(clang::Scope*, clang::AccessSpecifier, clang::Declarator&, llvm::MutableArrayRef<clang::TemplateParameterList*>, clang::Expr*, clang::VirtSpecifiers const&, clang::InClassInitStyle) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6a83f20)
#9 0x000000000667bfc0 clang::Parser::ParseCXXClassMemberDeclaration(clang::AccessSpecifier, clang::ParsedAttributes&, clang::Parser::ParsedTemplateInfo&, clang::ParsingDeclRAIIObject*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x667bfc0)
#10 0x000000000667d8e1 clang::Parser::ParseCXXClassMemberDeclarationWithPragmas(clang::AccessSpecifier&, clang::ParsedAttributes&, clang::TypeSpecifierType, clang::Decl*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x667d8e1)
#11 0x000000000667f70f clang::Parser::ParseCXXMemberSpecification(clang::SourceLocation, clang::SourceLocation, clang::ParsedAttributes&, unsigned int, clang::Decl*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x667f70f)
#12 0x0000000006682620 clang::Parser::ParseClassSpecifier(clang::tok::TokenKind, clang::SourceLocation, clang::DeclSpec&, clang::Parser::ParsedTemplateInfo&, clang::AccessSpecifier, bool, clang::Parser::DeclSpecContext, clang::ParsedAttributes&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6682620)
#13 0x0000000006655e60 clang::Parser::ParseDeclarationSpecifiers(clang::DeclSpec&, clang::Parser::ParsedTemplateInfo&, clang::AccessSpecifier, clang::Parser::DeclSpecContext, clang::Parser::LateParsedAttrList*, clang::ImplicitTypenameContext) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6655e60)
#14 0x0000000006611444 clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6611444)
#15 0x0000000006611ea9 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6611ea9)
#16 0x00000000066197ca clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x66197ca)
#17 0x000000000661a76d clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x661a76d)
#18 0x000000000660cb4a clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x660cb4a)
#19 0x000000000492f768 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x492f768)
#20 0x0000000004c254a5 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4c254a5)
#21 0x0000000004ba434e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4ba434e)
#22 0x0000000004d191b9 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4d191b9)
#23 0x0000000000da8bdf cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xda8bdf)
#24 0x0000000000d9edaa ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#25 0x0000000004996369 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#26 0x0000000003ecdb94 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3ecdb94)
#27 0x000000000499697f clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#28 0x0000000004958d9d clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4958d9d)
#29 0x0000000004959e2e clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4959e2e)
#30 0x0000000004961c85 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4961c85)
#31 0x0000000000da4b48 clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xda4b48)
#32 0x0000000000c2a384 main (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xc2a384)
#33 0x000077b8db029d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#34 0x000077b8db029e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#35 0x0000000000d9e855 _start (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xd9e855)
```
## Program
```
#include <iostream>
class A0
{};
class A1 : public A0
{
};
class B1 : public A1
{
public:
B1(delegate<A0*(void*)> mem_alloc) : A1([mem_alloc](void **ptr, delegate<void(void*)> del) { *pt r = mem_alloc(del);})
}
```
## To reproduce
Since 17, until trunk
https://gcc.godbolt.org/z/obvhvnnfj
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWl9z4ygS_zTkhbJLQv8f8qDY8V72ZndS49zevLkQwjY7EmgBZZ379FeAbP2J48zuxfNyUzOJB5rm179u6AaDlWI7TuktiO5AtLzBrd4LeVtjyaimPkLBTSHKl1uAAoACmCtFpWaCAy8HXv6rgNi0MMHhjj3TrrkTXmtMvsGyrZuuOfa6v17--Ok-X99D1RY10xDDot1BSRshNdQC7rVuFAhygFYArXZM79tiTkQN0Kqqno-_Zo0Uv1OiAVoxpVqqAFpBzEvIOKnakkK9p5BIrPawwOSblphQgBawkbSRglClaAmVaKVrNiOxUoIwrGkJZcuhIpI1eg68fGBLYGzx5sDLHqXYSVxDLHdtTbk2kCFAK9EYTETUDauonNFDUwlJpWmrMN_N8JFFNdOy5d8AWhWMH7sBugPoDs525Z9YbmchnO3gTBi9uGmM9lY3rZ4rOKsNC3A2O6TxDKt6pl64xgcQLBnXtIKzLRezZyoLoajph7M1nM12hMy0EBXZY8ZBsLyI1wgrjhu1FxrOtkRUQs5KhndcKM2IcnNYjsfNB0g6O0Cw6DgO7oGX-4a4UVuQ-775YcgjrZSUa9hgqaiEWnyjHAKUgGRpfno5OjM8OY42oxjfQaVla8Oi5SZULa9KQRPIRtmd73RBgAIPegfv-CfYppgkKbQxFuQgyNWLch8eJePaBsGTC6O0F5L4z41QWlJcAxSbUGJcA5RBgNIPigaA7rxDBw-grAPvT8CnmReeA7-oKOZt85mv2Y7jCqC05XbZl7ASZoprQDVgeqhoBJWSMt6mcGHi5gsl4pnKF4ftH5iXlZkx7TgcySwE1_Sg56Qxy9Cz_5z-oNOfJEVaFl6IIuR1RlWsAGh1SONNHM4qxtvDbMdb10HmSsxjC9kO6QGHQ8AJiX2_SKEz03L6ROumwpr-imvqWnZU_5Px0k6aQSK40h9Na4ejRxmNUIbbuKDxEGW-fuo4O2E0gFdCHvEDlL5lFVoMVa3tivskCLb7_9VMdEb0JsZDE-MsjbwkGuGiNXaffuqMk6L-F_-jxRXbMlo-lGMTR13OBrtqP3wNdFh7S5KpJVFAL1si5JKSCkushRxbMWy_FvgooD34dAQep8EWeefB50R_5ouvX3-hdUHfNGBNREMByidRlhOTl9cNJcZDctI7sXox2Ox-aTUuKppLiV--0C0IFmfC-hFLXFNN5SdmvJ6b_DGe4f7QyNeofmNSnzCpQdCMpB74wuSZB870Wr9U9BpuccT3bslGbomTYktGbnm0iXTwefH1q0U59o5d0el3-8FqKnOtJStabQqvKRev5i2PPnjgW3FenvGdwfMlf3j4XLjCLr8Gh44lx6HJot6EwzKl_t_j8N9M7x8l3tVYvUPnWb4uMvr00tCTAvOfM2vjaoQZSnrC_Alh28TbvkeY46ozgJyJuGl-uZh8voe7U41jK4kfx5Vho-cKjblKUYzeWaAmsgaRMuRIi29dMJjC2FUb38-Tsdoo_t9X65ndoRCiuqD1OPexGvkOD17BN5b93jfB2DdRROPLvhks9T4dvE7MVyP575PbSX5ySbAj-5gFJ2msbipGmDZ7DMc1PWm9gkMs5b1DwrFDfD8Mw3cd8lmuWk7MfEu6feCaSnfG-ev56l2JLkOd9-8rf12BL8tIz1c05Yvi7HsDeEQb4-z1jnwV1t4t-K7CGsVZz1o8YS1LCL7I2v3BBdWb1dK1mLoGF8banotkwgVO4vIiF0-i-USfaeVS6JCEzw3-o6WPWo5rbyP4kxRtY6vy-9eG9yeHX0TZVvShboTUa20Pp9fJA9bMnoTx2Sb2SBG-Doh8_TQpWAxuZ80x-bnfVwBsIfWAR1V_mKFtEo8uJxaipD9RntvlfTzYUNJq2jW5O4oPhtkBOcFEo8I6JCgK8ejovpImtfDyDM4rIXQYeoSjSjYscBiEdEykm_OBK405oee5fNukq8Rvh7O3YlRjhqWf-UU2PtRavL0xz-JcBf7K2KtsQR2-Hv2oCvNKnBblFhLib2psFAwuWoeH-z2Wx3P46Rg_akML-CxYeR0jHMrehnBsQ0ZLjOGR9oX_ZPeFgSXrGlfVb5RoIU25ddagyQWH0dGVYqNbq1KyZyonV6IGUzTeJLI4iDNLyUDptisBNtKyanvd0nNX6yDICa6qApNvmy0fb-xu4i50Fv5C1DXm5XQVn_We0p2caMzs2BAwIEdLxnddunCuPQ3YbMjhYL8vAEFeYMXIRlnxjsKRsGnYaImZVsfuiTpcVWYpCDnoNyJ5v5vnp6tONwSgpMJ1UWKAkp4qlB5v0n8WxRlnxNP77yIbXtWfu-V2PV9avsZbWr2MuLzstyvc5zvEfcAn0-DKktEVwP9dcBjG5w2Weu69HQXpmLUoLbPyTdas1_CrzHikcrR1TwYagbduKS-I5qNy5koX_J3ZfShNipkoo4j-VVJ-FoV6m5GfRWGOuiNGLu3FpwhoMDPOf32BdJHELkx-CJWGrBOV428zwyz2SRq9BXs5-DwqEM5UBm-54AdSeYVq1dLTk-dP6pCwCLui-liJHMHbrSTvNoL3M_SH1x4GWY97VP15BOEgDaFB_NETO9X9xJPvXFFWZn_xO1c7pFcYThXS0IObjRmzURpLvRmY9d1T0HAwRTQt1NIogk75h_vJKu-mHjx96R_IdO9HXr-OASg4vmExa-b4uMA-oHBvGVxKSe5AsgTBXd_sQ_sQoi0qRnoh83MkdzeW809yrgXYNy4QQnjnA5SWtKI7cxwPFrlnwz7tS2sQ3MOa1hubLW24B7nRiFIQ3fUd0bIbBd3SabRNxwPVTuVEc0ndgTq5g3YQlBAEy-GEqRMx1iXLju1k-SbnTwLa5z9lS6jrWDNOKPQT952BZhV0frWdk5dIhMx3oixEpedC7gBa_cdETPG8f-Z8-_tNeRuUWZDhG3rrJ2GcZr6Popv9bRmTAgUlSUkRFAmOcYTi1ItoucV-kRTkht0iD0Ve5Ht-FCAvmpfbOMYojjwUFjQmGQg9WmNWzc12Y-a-sU-ebv0gC9LkpsIFrZR9xIVQF4gIRMsbeWtfShXtToHQq5jSqlehma7o7cKIu3cWUHDY3UPBhdnBZGv2cvgn03v4yVa99pnU8eIa_oprCr9QJarWLAmoLJcWAPSTm1ZWt3__LVdn2_Mt-m8AAAD__y4K7Bw">