From 0be988477823f37eb0d05a48100b377e7a1101f8 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Tue, 12 Aug 2025 11:31:47 +0200 Subject: [PATCH 1/5] [meta] test consistency of truetypename Fixes https://github.com/root-project/root/issues/13274 Or rather adds a test for it --- roottest/root/meta/naming/execResolveTypedef.cxx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/roottest/root/meta/naming/execResolveTypedef.cxx b/roottest/root/meta/naming/execResolveTypedef.cxx index 8064b68538070..d7d740dc63be1 100644 --- a/roottest/root/meta/naming/execResolveTypedef.cxx +++ b/roottest/root/meta/naming/execResolveTypedef.cxx @@ -12,6 +12,11 @@ namespace A1 { namespace B2 { namespace C3 { typedef int what; } } } namespace NS { typedef int IntNS_t; } +namespace SG { typedef std::uint32_t sgkey_t; } + +struct PackedParameters { + SG::sgkey_t m_sgkey; +}; class Object { @@ -207,5 +212,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")->GetTrueTypeName()); + testing("SG::sgkey_t", TClass::GetClass("PackedParameters")->GetFullTypeName()); + return 0; } From 8f7a208f38d361ccc0f7df1023f15287c5993dba Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Tue, 12 Aug 2025 11:33:34 +0200 Subject: [PATCH 2/5] [test] add headers --- roottest/root/meta/naming/execResolveTypedef.cxx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/roottest/root/meta/naming/execResolveTypedef.cxx b/roottest/root/meta/naming/execResolveTypedef.cxx index d7d740dc63be1..646cb940ec996 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 From 710a736c005382aad2080fda7734ee45afcdc267 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Tue, 12 Aug 2025 11:34:38 +0200 Subject: [PATCH 3/5] [test] Update execResolveTypedef.ref --- roottest/root/meta/naming/execResolveTypedef.ref | 3 +++ 1 file changed, 3 insertions(+) diff --git a/roottest/root/meta/naming/execResolveTypedef.ref b/roottest/root/meta/naming/execResolveTypedef.ref index 9c4ccb3d24bb4..c8aa7e7cad984 100644 --- a/roottest/root/meta/naming/execResolveTypedef.ref +++ b/roottest/root/meta/naming/execResolveTypedef.ref @@ -84,4 +84,7 @@ 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 (int) 0 From fd76953b63dbd26a5cc39990d9b86a81cf15c5ee Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Tue, 12 Aug 2025 12:01:29 +0200 Subject: [PATCH 4/5] [test] fix accessor --- roottest/root/meta/naming/execResolveTypedef.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/roottest/root/meta/naming/execResolveTypedef.cxx b/roottest/root/meta/naming/execResolveTypedef.cxx index 646cb940ec996..3e702e1e9ff6f 100644 --- a/roottest/root/meta/naming/execResolveTypedef.cxx +++ b/roottest/root/meta/naming/execResolveTypedef.cxx @@ -215,8 +215,8 @@ int execResolveTypedef() // Add an example like pair<...::type_t,int> testing("unsigned int", TClassEdit::ResolveTypedef("SG::sgkey_t")); - testing("unsigned int", TClass::GetClass("PackedParameters")->GetTrueTypeName()); - testing("SG::sgkey_t", TClass::GetClass("PackedParameters")->GetFullTypeName()); + testing("unsigned int", TClass::GetClass("PackedParameters")->GetDataMember("m_sgkey")->GetTrueTypeName()); + testing("SG::sgkey_t", TClass::GetClass("PackedParameters")->GetDataMember("m_sgkey")->GetFullTypeName()); return 0; } From 445cad35a4ce1a3505afbc26f2e9632469d5e9ec Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Tue, 12 Aug 2025 14:43:46 +0200 Subject: [PATCH 5/5] [test] add case with clustersize Fixes https://github.com/root-project/root/issues/12698 Or rather adds a test for it --- roottest/root/meta/naming/execResolveTypedef.cxx | 11 ++++++++++- roottest/root/meta/naming/execResolveTypedef.ref | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/roottest/root/meta/naming/execResolveTypedef.cxx b/roottest/root/meta/naming/execResolveTypedef.cxx index 3e702e1e9ff6f..034021f561c09 100644 --- a/roottest/root/meta/naming/execResolveTypedef.cxx +++ b/roottest/root/meta/naming/execResolveTypedef.cxx @@ -15,6 +15,15 @@ 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; @@ -217,6 +226,6 @@ int execResolveTypedef() 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 c8aa7e7cad984..888d0a0881773 100644 --- a/roottest/root/meta/naming/execResolveTypedef.ref +++ b/roottest/root/meta/naming/execResolveTypedef.ref @@ -87,4 +87,5 @@ 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