diff --git a/roottest/root/meta/naming/execResolveTypedef.cxx b/roottest/root/meta/naming/execResolveTypedef.cxx index 8064b68538070..034021f561c09 100644 --- a/roottest/root/meta/naming/execResolveTypedef.cxx +++ b/roottest/root/meta/naming/execResolveTypedef.cxx @@ -1,5 +1,7 @@ #include #include +#include +#include // See also roottest/meta/naming/execCheckNaming.C @@ -12,6 +14,20 @@ namespace A1 { namespace B2 { namespace C3 { typedef int what; } } } namespace NS { typedef int IntNS_t; } +namespace SG { typedef std::uint32_t sgkey_t; } +namespace RT { +namespace EX { +struct ClusterSize { + using ValueType = std::uint64_t; + ValueType fValue; +}; +using ClusterSize_t = ClusterSize; +} +} + +struct PackedParameters { + SG::sgkey_t m_sgkey; +}; class Object { @@ -207,5 +223,9 @@ int execResolveTypedef() testing("::int",TClassEdit::ResolveTypedef("::Int_t")); // Add an example like pair<...::type_t,int> + testing("unsigned int", TClassEdit::ResolveTypedef("SG::sgkey_t")); + testing("unsigned int", TClass::GetClass("PackedParameters")->GetDataMember("m_sgkey")->GetTrueTypeName()); + testing("SG::sgkey_t", TClass::GetClass("PackedParameters")->GetDataMember("m_sgkey")->GetFullTypeName()); + testing("RT::EX::ClusterSize", TClassEdit::ResolveTypedef("RT::EX::ClusterSize_t")); return 0; } diff --git a/roottest/root/meta/naming/execResolveTypedef.ref b/roottest/root/meta/naming/execResolveTypedef.ref index 9c4ccb3d24bb4..888d0a0881773 100644 --- a/roottest/root/meta/naming/execResolveTypedef.ref +++ b/roottest/root/meta/naming/execResolveTypedef.ref @@ -84,4 +84,8 @@ Test 80 The result is correct: ::int Test 81 The result is correct: ::Unknown Test 82 The result is correct: ::SomeTypedefName_tSF Test 83 The result is correct: ::int +Test 84 The result is correct: unsigned int +Test 85 The result is correct: unsigned int +Test 86 The result is correct: SG::sgkey_t +Test 87 The result is correct: RT::EX::ClusterSize (int) 0