mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-24 19:00:11 +01:00
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:
@@ -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",
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 << '}';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user