Skip to content

Commit 3638ac4

Browse files
sudo-pandavgvassilev
authored andcommitted
Support typedefs in GetScopeFromType
1 parent 2ce0b66 commit 3638ac4

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

lib/Interpreter/CppInterOp.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,7 @@ namespace Cpp {
468468
}
469469

470470
static Decl *GetScopeFromType(QualType QT) {
471-
if (auto *Type = QT.getTypePtrOrNull()) {
471+
if (auto* Type = QT.getCanonicalType().getTypePtrOrNull()) {
472472
Type = Type->getPointeeOrArrayElementType();
473473
Type = Type->getUnqualifiedDesugaredType();
474474
if (auto *ET = llvm::dyn_cast<EnumType>(Type))

unittests/CppInterOp/ScopeReflectionTest.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -477,25 +477,31 @@ TEST(ScopeReflectionTest, GetScopeFromType) {
477477
namespace N {
478478
class C {};
479479
struct S {};
480+
typedef C T;
480481
}
481482
482483
N::C c;
483484
484485
N::S s;
485486
486487
int i;
488+
489+
N::T t;
487490
)";
488491

489492
GetAllTopLevelDecls(code, Decls);
490493
QualType QT1 = llvm::dyn_cast<VarDecl>(Decls[1])->getType();
491494
QualType QT2 = llvm::dyn_cast<VarDecl>(Decls[2])->getType();
492495
QualType QT3 = llvm::dyn_cast<VarDecl>(Decls[3])->getType();
496+
QualType QT4 = llvm::dyn_cast<VarDecl>(Decls[4])->getType();
493497
EXPECT_EQ(Cpp::GetQualifiedName(Cpp::GetScopeFromType(QT1.getAsOpaquePtr())),
494498
"N::C");
495499
EXPECT_EQ(Cpp::GetQualifiedName(Cpp::GetScopeFromType(QT2.getAsOpaquePtr())),
496500
"N::S");
497501
EXPECT_EQ(Cpp::GetScopeFromType(QT3.getAsOpaquePtr()),
498502
(Cpp::TCppScope_t) 0);
503+
EXPECT_EQ(Cpp::GetQualifiedName(Cpp::GetScopeFromType(QT4.getAsOpaquePtr())),
504+
"N::C");
499505
}
500506

501507
TEST(ScopeReflectionTest, GetNumBases) {

0 commit comments

Comments
 (0)