@@ -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