From c06ddfb05866c4cc5b058976a9c0e8b27c045e9b Mon Sep 17 00:00:00 2001 From: Alex Lorenz Date: Mon, 15 May 2017 10:56:31 +0000 Subject: [PATCH] [index] Visit and store information about namespace alias declarations rdar://32195226 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@303048 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Index/IndexDecl.cpp | 8 ++++++++ test/Index/Core/index-source.cpp | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/lib/Index/IndexDecl.cpp b/lib/Index/IndexDecl.cpp index e55dea8e77..203862c46e 100644 --- a/lib/Index/IndexDecl.cpp +++ b/lib/Index/IndexDecl.cpp @@ -544,6 +544,14 @@ public: return true; } + bool VisitNamespaceAliasDecl(const NamespaceAliasDecl *D) { + TRY_DECL(D, IndexCtx.handleDecl(D)); + IndexCtx.indexNestedNameSpecifierLoc(D->getQualifierLoc(), D); + IndexCtx.handleReference(D->getAliasedNamespace(), D->getTargetNameLoc(), D, + D->getLexicalDeclContext()); + return true; + } + bool VisitUsingDecl(const UsingDecl *D) { const DeclContext *DC = D->getDeclContext()->getRedeclContext(); const NamedDecl *Parent = dyn_cast(DC); diff --git a/test/Index/Core/index-source.cpp b/test/Index/Core/index-source.cpp index 48ca3a9b57..9248e86ff6 100644 --- a/test/Index/Core/index-source.cpp +++ b/test/Index/Core/index-source.cpp @@ -323,8 +323,15 @@ void func(); } namespace innerAlias = inner; +// CHECK: [[@LINE-1]]:11 | namespace-alias/C++ | innerAlias | c:@N@ns@NA@innerAlias | | Decl,RelChild | rel: 1 +// CHECK: [[@LINE-2]]:24 | namespace/C++ | inner | c:@N@ns@N@inner | | Ref,RelCont | rel: 1 } +namespace namespaceAlias = ::ns::innerAlias; +// CHECK: [[@LINE-1]]:11 | namespace-alias/C++ | namespaceAlias | c:@NA@namespaceAlias | | Decl | rel: 0 +// CHECK: [[@LINE-2]]:30 | namespace/C++ | ns | c:@N@ns | | Ref,RelCont | rel: 1 +// CHECK: [[@LINE-3]]:34 | namespace-alias/C++ | innerAlias | c:@N@ns@NA@innerAlias | | Ref,RelCont | rel: 1 + void ::ns::inner::func() { // CHECK: [[@LINE-1]]:8 | namespace/C++ | ns | c:@N@ns | | Ref,RelCont | rel: 1 // CHECK: [[@LINE-2]]:12 | namespace/C++ | inner | c:@N@ns@N@inner | | Ref,RelCont | rel: 1 -- 2.40.0