diff options
| author | Alex Lorenz <arphaman@gmail.com> | 2017-05-15 10:56:31 +0000 |
|---|---|---|
| committer | Alex Lorenz <arphaman@gmail.com> | 2017-05-15 10:56:31 +0000 |
| commit | 4ab5193735ca202b7c01f3c29765dd35bc573eb1 (patch) | |
| tree | f0c4605021426e39d62baf06af00f8363089392f | |
| parent | f8389656e3e1ad0e49b13f8ff4cf1fc1b2247d9f (diff) | |
| download | bcm5719-llvm-4ab5193735ca202b7c01f3c29765dd35bc573eb1.tar.gz bcm5719-llvm-4ab5193735ca202b7c01f3c29765dd35bc573eb1.zip | |
[index] Visit and store information about namespace alias declarations
rdar://32195226
llvm-svn: 303048
| -rw-r--r-- | clang/lib/Index/IndexDecl.cpp | 8 | ||||
| -rw-r--r-- | clang/test/Index/Core/index-source.cpp | 7 |
2 files changed, 15 insertions, 0 deletions
diff --git a/clang/lib/Index/IndexDecl.cpp b/clang/lib/Index/IndexDecl.cpp index e55dea8e776..203862c46e9 100644 --- a/clang/lib/Index/IndexDecl.cpp +++ b/clang/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<NamedDecl>(DC); diff --git a/clang/test/Index/Core/index-source.cpp b/clang/test/Index/Core/index-source.cpp index 48ca3a9b573..9248e86ff69 100644 --- a/clang/test/Index/Core/index-source.cpp +++ b/clang/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 | <no-cgname> | Decl,RelChild | rel: 1 +// CHECK: [[@LINE-2]]:24 | namespace/C++ | inner | c:@N@ns@N@inner | <no-cgname> | Ref,RelCont | rel: 1 } +namespace namespaceAlias = ::ns::innerAlias; +// CHECK: [[@LINE-1]]:11 | namespace-alias/C++ | namespaceAlias | c:@NA@namespaceAlias | <no-cgname> | Decl | rel: 0 +// CHECK: [[@LINE-2]]:30 | namespace/C++ | ns | c:@N@ns | <no-cgname> | Ref,RelCont | rel: 1 +// CHECK: [[@LINE-3]]:34 | namespace-alias/C++ | innerAlias | c:@N@ns@NA@innerAlias | <no-cgname> | Ref,RelCont | rel: 1 + void ::ns::inner::func() { // CHECK: [[@LINE-1]]:8 | namespace/C++ | ns | c:@N@ns | <no-cgname> | Ref,RelCont | rel: 1 // CHECK: [[@LINE-2]]:12 | namespace/C++ | inner | c:@N@ns@N@inner | <no-cgname> | Ref,RelCont | rel: 1 |

