@@ -334,18 +334,27 @@ const Decl *getTypeDecl(QualType t, bool *specialization = nullptr) {
334334 break ;
335335 case Type::Record:
336336 case Type::Enum:
337+ #if LLVM_VERSION_MAJOR >= 22 // llvmorg-22-init-3166-g91cdd35008e9
338+ d = cast<TagType>(tp)->getOriginalDecl ();
339+ #else
337340 d = cast<TagType>(tp)->getDecl ();
341+ #endif
338342 break ;
339343 case Type::TemplateTypeParm:
340344 d = cast<TemplateTypeParmType>(tp)->getDecl ();
341345 break ;
342346 case Type::TemplateSpecialization:
343347 if (specialization)
344348 *specialization = true ;
345- if (const RecordType *record = tp->getAs <RecordType>())
349+ if (const RecordType *record = tp->getAs <RecordType>()) {
350+ #if LLVM_VERSION_MAJOR >= 22 // llvmorg-22-init-3166-g91cdd35008e9
351+ d = record->getOriginalDecl ();
352+ #else
346353 d = record->getDecl ();
347- else
354+ #endif
355+ } else {
348356 d = cast<TemplateSpecializationType>(tp)->getTemplateName ().getAsTemplateDecl ();
357+ }
349358 break ;
350359
351360 case Type::Auto:
@@ -356,14 +365,20 @@ const Decl *getTypeDecl(QualType t, bool *specialization = nullptr) {
356365 break ;
357366
358367 case Type::InjectedClassName:
368+ #if LLVM_VERSION_MAJOR >= 22 // llvmorg-22-init-3166-g91cdd35008e9
369+ d = cast<InjectedClassNameType>(tp)->getOriginalDecl ();
370+ #else
359371 d = cast<InjectedClassNameType>(tp)->getDecl ();
372+ #endif
360373 break ;
361374
362375 // FIXME: Template type parameters!
363376
377+ #if LLVM_VERSION_MAJOR < 22 // llvmorg-22-init-3166-g91cdd35008e9
364378 case Type::Elaborated:
365379 tp = cast<ElaboratedType>(tp)->getNamedType ().getTypePtrOrNull ();
366380 goto try_again;
381+ #endif
367382
368383 default :
369384 break ;
@@ -412,7 +427,11 @@ bool validateRecord(const RecordDecl *rd) {
412427 if (fqt->isIncompleteType () || fqt->isDependentType ())
413428 return false ;
414429 if (const RecordType *childType = i->getType ()->getAs <RecordType>())
430+ #if LLVM_VERSION_MAJOR >= 22 // llvmorg-22-init-3166-g91cdd35008e9
431+ if (const RecordDecl *child = childType->getOriginalDecl ())
432+ #else
415433 if (const RecordDecl *child = childType->getDecl ())
434+ #endif
416435 if (!validateRecord (child))
417436 return false ;
418437 }
@@ -686,7 +705,11 @@ class IndexDataConsumer : public index::IndexDataConsumer {
686705 if (fd->getIdentifier ())
687706 type.def .vars .emplace_back (getUsr (fd), offset1);
688707 else if (const auto *rt1 = fd->getType ()->getAs <RecordType>()) {
708+ #if LLVM_VERSION_MAJOR >= 22 // llvmorg-22-init-3166-g91cdd35008e9
709+ if (const RecordDecl *rd1 = rt1->getOriginalDecl ())
710+ #else
689711 if (const RecordDecl *rd1 = rt1->getDecl ())
712+ #endif
690713 if (seen.insert (rd1).second )
691714 stack.push_back ({rd1, offset1});
692715 }
0 commit comments