diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index 1863e7f97e3f1..055d3cd1a8609 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -7668,8 +7668,11 @@ QualType TreeTransform::TransformDependentNameType( } else if (isa(Result)) { TLB.push(Result).set(TL.getElaboratedKeywordLoc(), QualifierLoc, TL.getNameLoc()); + } else if (isa(Result)) { + auto NewTL = TLB.push(Result); + NewTL.set(TL.getElaboratedKeywordLoc(), QualifierLoc, TL.getNameLoc()); } else { - DependentNameTypeLoc NewTL = TLB.push(Result); + auto NewTL = TLB.push(Result); NewTL.setElaboratedKeywordLoc(TL.getElaboratedKeywordLoc()); NewTL.setQualifierLoc(QualifierLoc); NewTL.setNameLoc(TL.getNameLoc()); diff --git a/clang/test/SemaCXX/using-decl-templates.cpp b/clang/test/SemaCXX/using-decl-templates.cpp index c96c4879cb68c..58b30595b148c 100644 --- a/clang/test/SemaCXX/using-decl-templates.cpp +++ b/clang/test/SemaCXX/using-decl-templates.cpp @@ -153,3 +153,11 @@ T foo(T t) { // OK } } // namespace sss } // namespace func_templ + +namespace DependentName { + template struct S { + using typename T::Ty; + static Ty Val; + }; + template typename S::Ty S::Val; +} // DependentName