https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115331
Bug ID: 115331 Summary: [15 regression] ICE-on-invalid passing a typoed lambda to a list-initializer Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: blubban at gmail dot com Target Milestone: --- struct has_ctor { has_ctor(auto arg) {} }; void aaa() { has_ctor{[]<(){}}; // typo intentional } -std=c++20 <source>: In function 'void aaa()': <source>:8:17: error: expected identifier before '(' token 8 | has_ctor{[]<(){}}; | ^ <source>:8:19: error: expected '>' before '{' token 8 | has_ctor{[]<(){}}; | ^ <source>: In instantiation of 'has_ctor::has_ctor(auto:1) [with auto:1 = aaa()::<lambda()>]': <source>:3:5: required from here 3 | has_ctor(auto arg) {} | ^~~~~~~~ <source>:3:5: internal compiler error: tree check: expected tree that contains 'decl common' structure, have 'error_mark' in decl_template_parm_check, at cp/cp-tree.h:5138 0x269996c internal_error(char const*, ...) ???:0 0x96eb0f tree_contains_struct_check_failed(tree_node const*, tree_node_structure_enum, char const*, int, char const*) ???:0 0xba20c6 mangle_decl(tree_node*) ???:0 0x16c5fc5 decl_assembler_name(tree_node*) ???:0 0x16eea01 assign_assembler_name_if_needed(tree_node*) ???:0 0xe8c11d cgraph_node::analyze() ???:0 0xe8f6d1 symbol_table::finalize_compilation_unit() ???:0 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. Compiler returned: 1 Online reproducer: https://godbolt.org/z/K1hjEsaf5 The ICE does not reproduce on 14.1, it's trunk only (tested on Compiler-Explorer-Build-gcc-cbf2ed4b309d54039d74be5d730299012e7681b3-binutils-2.42, 15.0.0 20240603).