[clang] [clang-tools-extra] [Clang] Reland support friend declarations with a dependent nested-name-specifier (PR #208345)
Matheus Izvekov via cfe-commits
cfe-commits at lists.llvm.org
Wed Jul 15 09:54:38 PDT 2026
================
@@ -4906,12 +4906,22 @@ TemplateName TreeTransform<Derived>::TransformTemplateName(
return TemplateName();
assert(!UnderlyingQualifier && "unexpected qualifier");
- if (!getDerived().AlwaysRebuild() &&
- QualifierLoc.getNestedNameSpecifier() == QTN->getQualifier() &&
+ NestedNameSpecifier QNNS = QualifierLoc.getNestedNameSpecifier();
+ if (!getDerived().AlwaysRebuild() && QNNS == QTN->getQualifier() &&
NewUnderlyingName == UnderlyingName)
return Name;
CXXScopeSpec SS;
SS.Adopt(QualifierLoc);
+ TemplateDecl *TD = NewUnderlyingName.getAsTemplateDecl();
+ if (TD && TD->getIdentifier() && QNNS != QTN->getQualifier()) {
+ CXXRecordDecl *RD = QNNS.getAsRecordDecl();
+ bool IsInjectedClassName = RD && isa<ClassTemplateDecl>(TD) &&
+ RD->getIdentifier() == TD->getIdentifier();
+ if (!IsInjectedClassName)
+ return getDerived().RebuildTemplateName(
+ SS, TemplateKWLoc, *TD->getIdentifier(), NameLoc, ObjectType,
+ AllowInjectedClassName);
+ }
----------------
mizvekov wrote:
Can you please point to the commit which fixed this?
https://github.com/llvm/llvm-project/pull/208345
More information about the cfe-commits
mailing list