[clang] [clang][AST] Pretty-print default template template args (PR #162134)

Andrey Ali Khan Bolshakov via cfe-commits cfe-commits at lists.llvm.org
Mon Oct 6 12:54:46 PDT 2025


================
@@ -1190,7 +1190,11 @@ void DeclPrinter::printTemplateParameters(const TemplateParameterList *Params,
       VisitNonTypeTemplateParmDecl(NTTP);
     } else if (auto TTPD = dyn_cast<TemplateTemplateParmDecl>(Param)) {
       VisitTemplateDecl(TTPD);
-      // FIXME: print the default argument, if present.
+      if (TTPD->hasDefaultArgument() && !TTPD->defaultArgumentWasInherited()) {
+        Out << " = ";
+        TTPD->getDefaultArgument().getArgument().print(Policy, Out,
+                                                       /*IncludeType=*/false);
+      }
----------------
bolshakov-a wrote:

And what about
```diff
--- a/clang/lib/AST/DeclPrinter.cpp
+++ b/clang/lib/AST/DeclPrinter.cpp
@@ -51,6 +51,15 @@ namespace {
     void PrintObjCTypeParams(ObjCTypeParamList *Params);
     void PrintOpenACCRoutineOnLambda(Decl *D);
 
+    template <typename T>
+    void VisitTemplateDefArg(const T* Arg) {
+      if (Arg->hasDefaultArgument() && !Arg->defaultArgumentWasInherited()) {
+        Out << " = ";
+        Arg->getDefaultArgument().getArgument().print(Policy, Out,
+                                                       /*IncludeType=*/false);
+      }
+    }
+
   public:
```
?

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


More information about the cfe-commits mailing list