[clang] fix DependentNameType -> UnresolvedUsingType transforms (#153862)
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h
index 1863e7f..055d3cd 100644
--- a/clang/lib/Sema/TreeTransform.h
+++ b/clang/lib/Sema/TreeTransform.h
@@ -7668,8 +7668,11 @@
} else if (isa<TypedefType>(Result)) {
TLB.push<TypedefTypeLoc>(Result).set(TL.getElaboratedKeywordLoc(),
QualifierLoc, TL.getNameLoc());
+ } else if (isa<UnresolvedUsingType>(Result)) {
+ auto NewTL = TLB.push<UnresolvedUsingTypeLoc>(Result);
+ NewTL.set(TL.getElaboratedKeywordLoc(), QualifierLoc, TL.getNameLoc());
} else {
- DependentNameTypeLoc NewTL = TLB.push<DependentNameTypeLoc>(Result);
+ auto NewTL = TLB.push<DependentNameTypeLoc>(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 c96c487..58b3059 100644
--- a/clang/test/SemaCXX/using-decl-templates.cpp
+++ b/clang/test/SemaCXX/using-decl-templates.cpp
@@ -153,3 +153,11 @@
}
} // namespace sss
} // namespace func_templ
+
+namespace DependentName {
+ template <typename T> struct S {
+ using typename T::Ty;
+ static Ty Val;
+ };
+ template <typename T> typename S<T>::Ty S<T>::Val;
+} // DependentName