From 695c23ca4e3fa69c8673ae3f9559e64ff53427db Mon Sep 17 00:00:00 2001 From: Philippe Canal Date: Wed, 8 May 2024 16:46:58 -0500 Subject: [PATCH] TEnum::GetUnderlying add support for typedefs. This fixes #15460. Extend the test accordingly. --- core/meta/test/testTEnum.cxx | 6 ++++++ core/metacling/src/TClingClassInfo.cxx | 2 ++ 2 files changed, 8 insertions(+) diff --git a/core/meta/test/testTEnum.cxx b/core/meta/test/testTEnum.cxx index 60445b21f1823..9b3164e973735 100644 --- a/core/meta/test/testTEnum.cxx +++ b/core/meta/test/testTEnum.cxx @@ -40,6 +40,9 @@ enum class ECull: unsigned long long { kOne }; enum class ECsll: signed long long { kOne }; enum class ECcl: short; + +enum class ECtsll : Long64_t { kEtsllOne }; +enum class ECtss : int16_t { kEtsllOne }; )CODE" ); @@ -63,6 +66,9 @@ enum class ECcl: short; EXPECT_EQ(TEnum::GetEnum("Eull")->GetUnderlyingType(), kULong64_t); EXPECT_EQ(TEnum::GetEnum("Esll")->GetUnderlyingType(), kLong64_t); EXPECT_EQ(TEnum::GetEnum("Ecl")->GetUnderlyingType(), kShort_t); + + EXPECT_EQ(TEnum::GetEnum("ECtsll")->GetUnderlyingType(), kLong64_t); + EXPECT_EQ(TEnum::GetEnum("ECtss")->GetUnderlyingType(), kShort_t); } diff --git a/core/metacling/src/TClingClassInfo.cxx b/core/metacling/src/TClingClassInfo.cxx index 66fdd3c3ab48d..c996e72b42c24 100644 --- a/core/metacling/src/TClingClassInfo.cxx +++ b/core/metacling/src/TClingClassInfo.cxx @@ -844,6 +844,8 @@ EDataType TClingClassInfo::GetUnderlyingType() const if (auto ED = llvm::dyn_cast(GetDecl())) { R__LOCKGUARD(gInterpreterMutex); auto Ty = ED->getIntegerType().getTypePtrOrNull(); + if (Ty) + Ty = Ty->getUnqualifiedDesugaredType(); if (auto BTy = llvm::dyn_cast_or_null(Ty)) { switch (BTy->getKind()) { case BuiltinType::Bool: