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);


        
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to