[clang] [clang] improve print / dump of anonymous declarations (PR #124605)

Erich Keane via cfe-commits cfe-commits at lists.llvm.org
Mon Jan 27 10:49:14 PST 2025


================
@@ -875,7 +875,41 @@ void TextNodeDumper::dumpBareDeclRef(const Decl *D) {
 
   if (const NamedDecl *ND = dyn_cast<NamedDecl>(D)) {
     ColorScope Color(OS, ShowColors, DeclNameColor);
-    OS << " '" << ND->getDeclName() << '\'';
+    if (DeclarationName Name = ND->getDeclName())
+      OS << " '" << Name << '\'';
+    else
+      switch (ND->getKind()) {
+      case Decl::Decomposition: {
+        auto *DD = cast<DecompositionDecl>(ND);
+        OS << " first_binding '" << DD->bindings()[0]->getDeclName() << '\'';
+        break;
+      }
+      case Decl::Field: {
+        auto *FD = cast<FieldDecl>(ND);
+        OS << " index " << FD->getFieldIndex();
----------------
erichkeane wrote:

> It is at least a uniquely identifying property for the field within its parent declaration.
> 
> We could call it `field_index`, but since this is a field and there is only this index, it doesn't feel particularly confusing to me, otherwise do you mean confusing when quickly skimming over the AST dump?

Yeah, exactly that.  `field_index` or `field at offset X`, or `field at index X` could be more readable?  It just isn't immediately clear what `index` for a field is relevant in the context of reading the AST (as this is actually more of a property of the containing struct instead of the field, but stored in the field itself for obvious reasons).

https://github.com/llvm/llvm-project/pull/124605


More information about the cfe-commits mailing list