File tree Expand file tree Collapse file tree 1 file changed +21
-3
lines changed Expand file tree Collapse file tree 1 file changed +21
-3
lines changed Original file line number Diff line number Diff line change @@ -874,14 +874,32 @@ static bool IsRecordValid(const clang::RecordDecl* RC)
874874    return  IsRecordValid (RC, Visited);
875875}
876876
877- static  clang::CXXRecordDecl* GetCXXRecordDeclFromBaseType (const  clang::QualType& Ty) {
877+ static  clang::CXXRecordDecl* GetCXXRecordDeclFromTemplateName (const  clang::TemplateName& Name)
878+ {
879+     using  namespace  clang ; 
880+ 
881+     switch  (Name.getKind ()) {
882+     case  clang::TemplateName::Template:
883+         return  dyn_cast<clang::CXXRecordDecl>(
884+             Name.getAsTemplateDecl ()->getTemplatedDecl ());
885+     case  clang::TemplateName::QualifiedTemplate:
886+         return  GetCXXRecordDeclFromTemplateName (
887+             Name.getAsQualifiedTemplateName ()->getUnderlyingTemplate ());
888+     default :
889+         Name.dump ();
890+         assert (0  && " Unknown template name kind"  );
891+         return  nullptr ;
892+     }
893+ }
894+ 
895+ static  clang::CXXRecordDecl* GetCXXRecordDeclFromBaseType (const  clang::QualType& Ty)
896+ {
878897    using  namespace  clang ; 
879898
880899    if  (auto  RT = Ty->getAs <clang::RecordType>())
881900        return  dyn_cast<clang::CXXRecordDecl>(RT->getDecl ());
882901    else  if  (auto  TST = Ty->getAs <clang::TemplateSpecializationType>())
883-         return  dyn_cast<clang::CXXRecordDecl>(
884-             TST->getTemplateName ().getAsTemplateDecl ()->getTemplatedDecl ());
902+         return  GetCXXRecordDeclFromTemplateName (TST->getTemplateName ());
885903    else  if  (auto  Injected = Ty->getAs <clang::InjectedClassNameType>())
886904        return  Injected->getDecl ();
887905
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments