SourceLocation CXIndexDataConsumer::CXXBasesListInfo::getBaseLoc( const CXXBaseSpecifier &Base) const { SourceLocation Loc = Base.getSourceRange().getBegin(); TypeLoc TL; if (Base.getTypeSourceInfo()) TL = Base.getTypeSourceInfo()->getTypeLoc(); if (TL.isNull()) return Loc; if (QualifiedTypeLoc QL = TL.getAs<QualifiedTypeLoc>()) TL = QL.getUnqualifiedLoc(); if (ElaboratedTypeLoc EL = TL.getAs<ElaboratedTypeLoc>()) return EL.getNamedTypeLoc().getBeginLoc(); if (DependentNameTypeLoc DL = TL.getAs<DependentNameTypeLoc>()) return DL.getNameLoc(); if (DependentTemplateSpecializationTypeLoc DTL = TL.getAs<DependentTemplateSpecializationTypeLoc>()) return DTL.getTemplateNameLoc(); return Loc; }
SourceLocation IndexingContext::CXXBasesListInfo::getBaseLoc( const CXXBaseSpecifier &Base) const { SourceLocation Loc = Base.getSourceRange().getBegin(); TypeLoc TL; if (Base.getTypeSourceInfo()) TL = Base.getTypeSourceInfo()->getTypeLoc(); if (TL.isNull()) return Loc; if (const QualifiedTypeLoc *QL = dyn_cast<QualifiedTypeLoc>(&TL)) TL = QL->getUnqualifiedLoc(); if (const ElaboratedTypeLoc *EL = dyn_cast<ElaboratedTypeLoc>(&TL)) return EL->getNamedTypeLoc().getBeginLoc(); if (const DependentNameTypeLoc *DL = dyn_cast<DependentNameTypeLoc>(&TL)) return DL->getNameLoc(); if (const DependentTemplateSpecializationTypeLoc * DTL = dyn_cast<DependentTemplateSpecializationTypeLoc>(&TL)) return DTL->getTemplateNameLoc(); return Loc; }