From 536033c20493f92ff15f55c9d8178a147b6343dc Mon Sep 17 00:00:00 2001 From: Fangrui Song Date: Thu, 14 Aug 2025 21:57:26 -0700 Subject: [PATCH] Adapt llvmorg-22-init-3166-g91cdd35008e9: getOriginalDecl --- src/indexer.cc | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/indexer.cc b/src/indexer.cc index aad808e0..ee28b8a2 100644 --- a/src/indexer.cc +++ b/src/indexer.cc @@ -333,7 +333,11 @@ try_again: break; case Type::Record: case Type::Enum: +#if LLVM_VERSION_MAJOR >= 22 // llvmorg-22-init-3166-g91cdd35008e9 + d = cast(tp)->getOriginalDecl(); +#else d = cast(tp)->getDecl(); +#endif break; case Type::TemplateTypeParm: d = cast(tp)->getDecl(); @@ -341,10 +345,15 @@ try_again: case Type::TemplateSpecialization: if (specialization) *specialization = true; - if (const RecordType *record = tp->getAs()) + if (const RecordType *record = tp->getAs()) { +#if LLVM_VERSION_MAJOR >= 22 // llvmorg-22-init-3166-g91cdd35008e9 + d = record->getOriginalDecl(); +#else d = record->getDecl(); - else +#endif + } else { d = cast(tp)->getTemplateName().getAsTemplateDecl(); + } break; case Type::Auto: @@ -355,14 +364,20 @@ try_again: break; case Type::InjectedClassName: +#if LLVM_VERSION_MAJOR >= 22 // llvmorg-22-init-3166-g91cdd35008e9 + d = cast(tp)->getOriginalDecl(); +#else d = cast(tp)->getDecl(); +#endif break; // FIXME: Template type parameters! +#if LLVM_VERSION_MAJOR < 22 // llvmorg-22-init-3166-g91cdd35008e9 case Type::Elaborated: tp = cast(tp)->getNamedType().getTypePtrOrNull(); goto try_again; +#endif default: break; @@ -411,7 +426,11 @@ bool validateRecord(const RecordDecl *rd) { if (fqt->isIncompleteType() || fqt->isDependentType()) return false; if (const RecordType *childType = i->getType()->getAs()) +#if LLVM_VERSION_MAJOR >= 22 // llvmorg-22-init-3166-g91cdd35008e9 + if (const RecordDecl *child = childType->getOriginalDecl()) +#else if (const RecordDecl *child = childType->getDecl()) +#endif if (!validateRecord(child)) return false; } @@ -685,7 +704,11 @@ public: if (fd->getIdentifier()) type.def.vars.emplace_back(getUsr(fd), offset1); else if (const auto *rt1 = fd->getType()->getAs()) { +#if LLVM_VERSION_MAJOR >= 22 // llvmorg-22-init-3166-g91cdd35008e9 + if (const RecordDecl *rd1 = rt1->getOriginalDecl()) +#else if (const RecordDecl *rd1 = rt1->getDecl()) +#endif if (seen.insert(rd1).second) stack.push_back({rd1, offset1}); }