Add lldb dumping for RequireImplsId and RequireImplsBlockId (#6524)

The dump of a block looks like:
```
(lldb) dump context require_impls_block_id
require_block60000001
  - require0: {self_id: inst60000019, facet_type_inst_id: inst6000001D, extend_self: true, parent_scope: name_scope60000002}
```

The dump of an individual RequireImplsId is shown above for `require0`.
This commit is contained in:
Dana Jansens
2025-12-19 18:48:20 +00:00
committed by GitHub
parent c5eba90317
commit 54a1c8213c
5 changed files with 49 additions and 1 deletions
+2
View File
@@ -93,6 +93,8 @@ Example usage:
"name": "SemIR::MakeNameId",
"name_scope": "SemIR::MakeNameScopeId",
"identified_facet_type": "SemIR::MakeIdentifiedFacetTypeId",
"require_block": "SemIR::MakeRequireImplsBlockId",
"require": "SemIR::MakeRequireImplsId",
"specific": "SemIR::MakeSpecificId",
"specific_interface": "SemIR::MakeSpecificInterfaceId",
"struct_type_fields": "SemIR::MakeStructTypeFieldsId",
+12
View File
@@ -121,6 +121,18 @@ LLVM_DUMP_METHOD static auto Dump(const Context& context,
return SemIR::Dump(context.sem_ir(), named_constraint_id);
}
LLVM_DUMP_METHOD static auto Dump(
const Context& context, SemIR::RequireImplsBlockId require_impls_block_id)
-> std::string {
return SemIR::Dump(context.sem_ir(), require_impls_block_id);
}
LLVM_DUMP_METHOD static auto Dump(const Context& context,
SemIR::RequireImplsId require_impls_id)
-> std::string {
return SemIR::Dump(context.sem_ir(), require_impls_id);
}
LLVM_DUMP_METHOD static auto Dump(const Context& context,
SemIR::SpecificId specific_id)
-> std::string {
+31
View File
@@ -377,6 +377,30 @@ LLVM_DUMP_METHOD auto Dump(const File& file,
return out.TakeStr();
}
LLVM_DUMP_METHOD auto Dump(const File& file,
RequireImplsBlockId require_impls_block_id)
-> std::string {
RawStringOstream out;
out << require_impls_block_id;
if (require_impls_block_id.has_value()) {
for (auto require_id :
file.require_impls_blocks().Get(require_impls_block_id)) {
out << "\n - " << Dump(file, require_id);
}
}
return out.TakeStr();
}
LLVM_DUMP_METHOD auto Dump(const File& file, RequireImplsId require_impls_id)
-> std::string {
RawStringOstream out;
out << require_impls_id;
if (require_impls_id.has_value()) {
out << ": " << file.require_impls().Get(require_impls_id);
}
return out.TakeStr();
}
LLVM_DUMP_METHOD auto Dump(const File& file, SpecificId specific_id)
-> std::string {
RawStringOstream out;
@@ -483,6 +507,13 @@ LLVM_DUMP_METHOD static auto MakeNamedConstraintId(int id)
-> NamedConstraintId {
return NamedConstraintId(id);
}
LLVM_DUMP_METHOD static auto MakeRequireImplsBlockId(int id)
-> RequireImplsBlockId {
return RequireImplsBlockId(id);
}
LLVM_DUMP_METHOD static auto MakeRequireImplsId(int id) -> RequireImplsId {
return RequireImplsId(id);
}
LLVM_DUMP_METHOD static auto MakeSpecificId(int id) -> SpecificId {
return SpecificId(id);
}
+3
View File
@@ -37,6 +37,9 @@ auto Dump(const File& file, NameId name_id) -> std::string;
auto Dump(const File& file, NameScopeId name_scope_id) -> std::string;
auto Dump(const File& file, NamedConstraintId named_constraint_id)
-> std::string;
auto Dump(const File& file, RequireImplsBlockId require_impls_block_id)
-> std::string;
auto Dump(const File& file, RequireImplsId require_impls_id) -> std::string;
auto Dump(const File& file, SpecificId specific_id) -> std::string;
auto Dump(const File& file, SpecificInterfaceId specific_interface_id)
-> std::string;
+1 -1
View File
@@ -37,7 +37,7 @@ struct RequireImpls : Printable<RequireImpls> {
out << '{';
out << "self_id: " << self_id
<< ", facet_type_inst_id: " << facet_type_inst_id
<< ", extend_self: " << extend_self
<< ", extend_self: " << (extend_self ? "true" : "false")
<< ", parent_scope: " << parent_scope_id;
out << '}';
}