================ @@ -599,6 +599,39 @@ TEST_F(DWARFASTParserClangTests, TestDefaultTemplateParamParsing) { } } +TEST_F(DWARFASTParserClangTests, TestSpecDeclExistsError) { + // Tests checking error if ClassTemplateSpecializationDecl already exists. + auto BufferOrError = llvm::MemoryBuffer::getFile( + GetInputFilePath("DW_AT_spec_decl_exists-test.yaml"), /*IsText=*/true); + ASSERT_TRUE(BufferOrError); + YAMLModuleTester t(BufferOrError.get()->getBuffer()); + + DWARFUnit *unit = t.GetDwarfUnit(); + ASSERT_NE(unit, nullptr); + const DWARFDebugInfoEntry *cu_entry = unit->DIE().GetDIE(); + ASSERT_EQ(cu_entry->Tag(), DW_TAG_compile_unit); + DWARFDIE cu_die(unit, cu_entry); + + auto holder = std::make_unique<clang_utils::TypeSystemClangHolder>("ast"); + auto &ast_ctx = *holder->GetAST(); + DWARFASTParserClangStub ast_parser(ast_ctx); + + llvm::SmallVector<lldb::TypeSP, 3> types; + for (DWARFDIE die : cu_die.children()) { + if (die.Tag() == DW_TAG_structure_type) { ---------------- Michael137 wrote:
How about also checking that: ``` llvm::StringRef(die.GetName()).starts_with("_Optional_payload") ``` So you don't parse the `struct Type`. Then you just assert that one of the types is `nullptr` and the other isn't. Makes the test a bit clearer https://github.com/llvm/llvm-project/pull/154123 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits