File tree Expand file tree Collapse file tree 2 files changed +12
-4
lines changed Expand file tree Collapse file tree 2 files changed +12
-4
lines changed Original file line number Diff line number Diff line change @@ -502,18 +502,22 @@ namespace Cpp {
502
502
503
503
TCppScope_t GetScope (const std::string &name, TCppScope_t parent)
504
504
{
505
+ // FIXME: GetScope should be replaced by a general purpose lookup
506
+ // and filter function. The function should be like GetNamed but
507
+ // also take in a filter parameter which determines which results
508
+ // to pass back
505
509
if (name == " " )
506
510
return GetGlobalScope ();
507
511
508
512
auto *ND = (NamedDecl*)GetNamed (name, parent);
509
513
510
- ND = llvm::dyn_cast_or_null<NamedDecl>(GetUnderlyingScope (ND));
511
-
512
514
if (!ND || ND == (NamedDecl *) -1 )
513
515
return 0 ;
514
516
515
- if (llvm::isa<NamespaceDecl>(ND) || llvm::isa<RecordDecl>(ND) ||
516
- llvm::isa<ClassTemplateDecl>(ND))
517
+ if (llvm::isa<NamespaceDecl>(ND) ||
518
+ llvm::isa<RecordDecl>(ND) ||
519
+ llvm::isa<ClassTemplateDecl>(ND) ||
520
+ llvm::isa<TypedefNameDecl>(ND))
517
521
return (TCppScope_t)(ND->getCanonicalDecl ());
518
522
519
523
return 0 ;
Original file line number Diff line number Diff line change @@ -369,17 +369,21 @@ TEST(ScopeReflectionTest, GetScope) {
369
369
enum E { A, B };
370
370
};
371
371
}
372
+
373
+ typedef N::C T;
372
374
)" ;
373
375
374
376
Cpp::CreateInterpreter ();
375
377
Interp->declare (code);
376
378
Cpp::TCppScope_t tu = Cpp::GetScope (" " , 0 );
377
379
Cpp::TCppScope_t ns_N = Cpp::GetScope (" N" , 0 );
378
380
Cpp::TCppScope_t cl_C = Cpp::GetScope (" C" , ns_N);
381
+ Cpp::TCppScope_t td_T = Cpp::GetScope (" T" , 0 );
379
382
380
383
EXPECT_EQ (Cpp::GetQualifiedName (tu), " " );
381
384
EXPECT_EQ (Cpp::GetQualifiedName (ns_N), " N" );
382
385
EXPECT_EQ (Cpp::GetQualifiedName (cl_C), " N::C" );
386
+ EXPECT_EQ (Cpp::GetQualifiedName (td_T), " T" );
383
387
}
384
388
385
389
TEST (ScopeReflectionTest, GetScopefromCompleteName) {
You can’t perform that action at this time.
0 commit comments