[clang] 831a8b5 - Add dump info for VarDecl

Aaron Ballman via cfe-commits cfe-commits at lists.llvm.org
Thu Nov 6 06:26:18 PST 2025


Author: Aaron Ballman
Date: 2025-11-06T09:26:04-05:00
New Revision: 831a8b55cafe6c139beb0f6d88ab32a71bdfd1ca

URL: https://github.com/llvm/llvm-project/commit/831a8b55cafe6c139beb0f6d88ab32a71bdfd1ca
DIFF: https://github.com/llvm/llvm-project/commit/831a8b55cafe6c139beb0f6d88ab32a71bdfd1ca.diff

LOG: Add dump info for VarDecl

A VarDecl can either be a declaration, a definition, or a tentative
definition. This dumps that information because it turned out to be
useful for a discussion trying to understand a difference in behavior
between C and C++.

Added: 
    

Modified: 
    clang/lib/AST/TextNodeDumper.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/AST/TextNodeDumper.cpp b/clang/lib/AST/TextNodeDumper.cpp
index 41aebdb8d2f1b..549d7208a7a06 100644
--- a/clang/lib/AST/TextNodeDumper.cpp
+++ b/clang/lib/AST/TextNodeDumper.cpp
@@ -2461,6 +2461,7 @@ void TextNodeDumper::VisitVarDecl(const VarDecl *D) {
       break;
     case VarDecl::ParenListInit:
       OS << " parenlistinit";
+      break;
     }
   }
   if (D->needsDestruction(D->getASTContext()))
@@ -2468,6 +2469,19 @@ void TextNodeDumper::VisitVarDecl(const VarDecl *D) {
   if (D->isParameterPack())
     OS << " pack";
 
+  VarDecl::DefinitionKind K = D->isThisDeclarationADefinition();
+  switch (K) {
+  case VarDecl::DefinitionKind::DeclarationOnly:
+    OS << " declaration";
+    break;
+  case VarDecl::DefinitionKind::Definition:
+    OS << " definition";
+    break;
+  case VarDecl::DefinitionKind::TentativeDefinition:
+    OS << " tentative definition";
+    break;
+  }
+
   if (const auto *Instance = D->getTemplateInstantiationPattern()) {
     OS << " instantiated_from";
     dumpPointer(Instance);


        


More information about the cfe-commits mailing list