Ver Fonte

Add missing named constraints and self in facet type debugger dump (#7018)

Dana Jansens há 1 mês atrás
pai
commit
1fa7a64cd4
1 ficheiros alterados com 21 adições e 5 exclusões
  1. 21 5
      toolchain/sem_ir/dump.cpp

+ 21 - 5
toolchain/sem_ir/dump.cpp

@@ -235,6 +235,21 @@ LLVM_DUMP_METHOD auto Dump(const File& file, FacetTypeId facet_type_id)
       out << "; " << DumpSpecificSummary(file, impls.specific_id);
     }
   }
+  for (auto impls : facet_type.extend_named_constraints) {
+    out << "\n  - "
+        << DumpNamedConstraintSummary(file, impls.named_constraint_id);
+    if (impls.specific_id.has_value()) {
+      out << "; " << DumpSpecificSummary(file, impls.specific_id);
+    }
+    out << " (extend)";
+  }
+  for (auto impls : facet_type.self_impls_named_constraints) {
+    out << "\n  - "
+        << DumpNamedConstraintSummary(file, impls.named_constraint_id);
+    if (impls.specific_id.has_value()) {
+      out << "; " << DumpSpecificSummary(file, impls.specific_id);
+    }
+  }
   for (auto rewrite : facet_type.rewrite_constraints) {
     out << "\n"
         << "  - " << DumpInstSummary(file, rewrite.lhs_id) << "\n"
@@ -287,18 +302,19 @@ LLVM_DUMP_METHOD auto Dump(const File& file,
   for (auto [i, req_impl] :
        llvm::enumerate(identified_facet_type.required_impls())) {
     auto [self, req_interface] = req_impl;
-    // TODO: Dump the self too.
-    out << "\n  - " << DumpInterfaceSummary(file, req_interface.interface_id);
+    out << "\n  - self: " << DumpConstantSummary(file, self);
+    out << "\n    impls "
+        << DumpInterfaceSummary(file, req_interface.interface_id);
     if (req_interface.specific_id.has_value()) {
       out << "; " << DumpSpecificSummary(file, req_interface.specific_id);
     }
     if (req_interface == identified_facet_type.impl_as_target_interface()) {
-      out << " (to impl)";
+      out << "\n     - `impl as` target";
     }
   }
   if (!identified_facet_type.is_valid_impl_as_target()) {
-    out << "\n  - (" << identified_facet_type.num_interfaces_to_impl()
-        << " to impl)\n";
+    out << "\n  - " << identified_facet_type.num_interfaces_to_impl()
+        << " possible `impl as` targets";
   }
   return out.TakeStr();
 }