Skip to content

Commit 4ba84a6

Browse files
committed
[cling] Fully desugar UsingType in GetFullyQualifiedType
UT->getUnderlyingType() which only strips one sugar layer, stopping at the first TypedefType rather than reaching the canonical type. Use QT.getCanonicalType() instead to strip all sugar layers at once.
1 parent 4ea85c8 commit 4ba84a6

2 files changed

Lines changed: 3 additions & 3 deletions

File tree

interpreter/cling/lib/Utils/AST.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1725,8 +1725,8 @@ namespace utils {
17251725

17261726
// We don't consider the alias introduced by `using a::X` as a new type.
17271727
// The qualified name is still a::X.
1728-
if (const auto* UT = QT->getAs<UsingType>()) {
1729-
QT = Ctx.getQualifiedType(UT->getUnderlyingType(), prefix_qualifiers);
1728+
if (QT->getAs<UsingType>()) {
1729+
QT = Ctx.getQualifiedType(QT.getCanonicalType(), prefix_qualifiers);
17301730
return GetFullyQualifiedType(QT, Ctx);
17311731
}
17321732

roottest/root/meta/naming/execResolveTypedef.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ int execResolveTypedef()
225225

226226
testing("unsigned int", TClassEdit::ResolveTypedef("SG::sgkey_t"));
227227
testing("unsigned int", TClass::GetClass("PackedParameters")->GetDataMember("m_sgkey")->GetTrueTypeName());
228-
testing("uint32_t", TClass::GetClass("PackedParameters")->GetDataMember("m_sgkey")->GetFullTypeName());
228+
testing("unsigned int", TClass::GetClass("PackedParameters")->GetDataMember("m_sgkey")->GetFullTypeName());
229229
testing("RT::EX::ClusterSize", TClassEdit::ResolveTypedef("RT::EX::ClusterSize_t"));
230230
return 0;
231231
}

0 commit comments

Comments
 (0)