[Lldb-commits] [lldb] [lldb][DWARFASTParserClang] Added a check for the specialization existence (PR #154123)
Michael Buch via lldb-commits
lldb-commits at lists.llvm.org
Mon Sep 8 03:14:06 PDT 2025
================
@@ -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
More information about the lldb-commits
mailing list