[clang] Issue #61157 (PR #167319)

via cfe-commits cfe-commits at lists.llvm.org
Mon Nov 10 08:27:39 PST 2025


https://github.com/Sandeep2265 updated https://github.com/llvm/llvm-project/pull/167319

>From dafd837aca7d19b8827619be6907d55beee3a701 Mon Sep 17 00:00:00 2001
From: Sandeep Krapa <sandeep at 10.8.107.113>
Date: Mon, 10 Nov 2025 19:42:44 +0530
Subject: [PATCH] Added a helper function OriginalNameTypedef(),it may help fix
 the issue with typedefs for structs.

---
 clang/lib/ExtractAPI/DeclarationFragments.cpp | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/clang/lib/ExtractAPI/DeclarationFragments.cpp b/clang/lib/ExtractAPI/DeclarationFragments.cpp
index e5eda46df8056..16a524702e963 100644
--- a/clang/lib/ExtractAPI/DeclarationFragments.cpp
+++ b/clang/lib/ExtractAPI/DeclarationFragments.cpp
@@ -63,6 +63,17 @@ void findTypeLocForBlockDecl(const clang::TypeSourceInfo *TSInfo,
 
 } // namespace
 
+static std::string OriginalNameTypedef(const clang::QualType &qt,
+                                       const clang::PrintingPolicy &policy) {
+  if (const auto *tt = llvm::dyn_cast<clang::TypedefType>(qt.getTypePtrOrNull())) {
+    const auto *td = tt->getDecl();
+    if (!td->getName().empty())
+      return td->getName().str();
+  }
+  return qt.getAsString(policy);
+}
+
+
 DeclarationFragments &
 DeclarationFragments::appendUnduplicatedTextCharacter(char Character) {
   if (!Fragments.empty()) {
@@ -452,7 +463,8 @@ DeclarationFragments DeclarationFragmentsBuilder::getFragmentsForType(
   // Default fragment builder for other kinds of types (BuiltinType etc.)
   SmallString<128> USR;
   clang::index::generateUSRForType(Base, Context, USR);
-  Fragments.append(Base.getAsString(),
+  std::string typestr = OriginalNameTypedef(Base, Context.getPrintingPolicy());
+  Fragments.append(typestr,
                    DeclarationFragments::FragmentKind::TypeIdentifier, USR);
 
   return Fragments;



More information about the cfe-commits mailing list