teemperor added a comment. > I don't really have the full context here, but I am wondering if we shouldn't > somehow take the DW_AT_declaration attribute into account here. It seems like > that should give a more definitive answer as to whether we can expect to see > a full set of template parameters or not.
I think that is actually a good approach. I think the current patch rejects forward declarations (which is fine as we don't have the required information in DWARF) and empty parameter packs (which is the edge case the original patch fixed). Example: this is currently rejected even though we have all the required information: template<typename ...T> struct X {}; int main() { X<int> x; } -> 0x00000059: DW_TAG_structure_type DW_AT_calling_convention (DW_CC_pass_by_value) DW_AT_name ("X<int>") DW_AT_byte_size (0x01) DW_AT_decl_file ("/home/teemperor/test/someoneshouldreallypaymeforthis.cpp") DW_AT_decl_line (2) 0x00000062: DW_TAG_GNU_template_parameter_pack DW_AT_name ("T") 0x00000067: DW_TAG_template_type_parameter DW_AT_type (0x00000052 "int") 0x0000006c: NULL 0x0000006d: NULL 0x0000006e: NULL I think having a fake class with a weird identifiers that contains template arguments is better than the missing arguments, so this looks in general good to me. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D126668/new/ https://reviews.llvm.org/D126668 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits