https://github.com/Sandeep2265 created https://github.com/llvm/llvm-project/pull/167319
Added function checks if a type is a TypedefType and, if so, returns its original typedef name instead of printing the full type.This helps keep typedef names preserved in ExtractAPI declaration fragments instead of showing the underlying struct type. >From dafd837aca7d19b8827619be6907d55beee3a701 Mon Sep 17 00:00:00 2001 From: Sandeep Krapa <[email protected]> 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; _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
