diff options
Diffstat (limited to 'clang/tools')
| -rw-r--r-- | clang/tools/libclang/CIndex.cpp | 31 | ||||
| -rw-r--r-- | clang/tools/libclang/CIndexUSRs.cpp | 9 | ||||
| -rw-r--r-- | clang/tools/libclang/CXCursor.cpp | 5 |
3 files changed, 43 insertions, 2 deletions
diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp index 3c4211efdc5..947b3b28262 100644 --- a/clang/tools/libclang/CIndex.cpp +++ b/clang/tools/libclang/CIndex.cpp @@ -319,6 +319,9 @@ public: bool VisitNamespaceDecl(NamespaceDecl *D); bool VisitNamespaceAliasDecl(NamespaceAliasDecl *D); bool VisitUsingDirectiveDecl(UsingDirectiveDecl *D); + bool VisitUsingDecl(UsingDecl *D); + bool VisitUnresolvedUsingValueDecl(UnresolvedUsingValueDecl *D); + bool VisitUnresolvedUsingTypenameDecl(UnresolvedUsingTypenameDecl *D); // Name visitor bool VisitDeclarationNameInfo(DeclarationNameInfo Name); @@ -902,19 +905,41 @@ bool CursorVisitor::VisitNamespaceDecl(NamespaceDecl *D) { } bool CursorVisitor::VisitNamespaceAliasDecl(NamespaceAliasDecl *D) { - // FIXME: Visit nested-name-specifier + // FIXME: Visit nested-name-specifier. return Visit(MakeCursorNamespaceRef(D->getAliasedNamespace(), D->getTargetNameLoc(), TU)); } +bool CursorVisitor::VisitUsingDecl(UsingDecl *D) { + // FIXME: Visit nested-name-specifier. + + // FIXME: Provide a multi-reference of some kind for all of the declarations + // that the using declaration refers to. We don't have this kind of cursor + // yet. + + return VisitDeclarationNameInfo(D->getNameInfo()); +} + bool CursorVisitor::VisitUsingDirectiveDecl(UsingDirectiveDecl *D) { - // FIXME: Visit nested-name-specifier + // FIXME: Visit nested-name-specifier. return Visit(MakeCursorNamespaceRef(D->getNominatedNamespaceAsWritten(), D->getIdentLocation(), TU)); } +bool CursorVisitor::VisitUnresolvedUsingValueDecl(UnresolvedUsingValueDecl *D) { + // FIXME: Visit nested-name-specifier. + + return VisitDeclarationNameInfo(D->getNameInfo()); +} + +bool CursorVisitor::VisitUnresolvedUsingTypenameDecl( + UnresolvedUsingTypenameDecl *D) { + // FIXME: Visit nested-name-specifier. + return false; +} + bool CursorVisitor::VisitDeclarationNameInfo(DeclarationNameInfo Name) { switch (Name.getName().getNameKind()) { case clang::DeclarationName::Identifier: @@ -2268,6 +2293,8 @@ CXString clang_getCursorKindSpelling(enum CXCursorKind Kind) { return createCXString("NamespaceAlias"); case CXCursor_UsingDirective: return createCXString("UsingDirective"); + case CXCursor_UsingDeclaration: + return createCXString("UsingDeclaration"); } llvm_unreachable("Unhandled CXCursorKind"); diff --git a/clang/tools/libclang/CIndexUSRs.cpp b/clang/tools/libclang/CIndexUSRs.cpp index a60d1d3e189..8f3dacfad21 100644 --- a/clang/tools/libclang/CIndexUSRs.cpp +++ b/clang/tools/libclang/CIndexUSRs.cpp @@ -86,6 +86,15 @@ public: void VisitUsingDirectiveDecl(UsingDirectiveDecl *D) { IgnoreResults = true; } + void VisitUsingDecl(UsingDecl *D) { + IgnoreResults = true; + } + void VisitUnresolvedUsingValueDecl(UnresolvedUsingValueDecl *D) { + IgnoreResults = true; + } + void VisitUnresolvedUsingTypenameDecl(UnresolvedUsingTypenameDecl *D) { + IgnoreResults = true; + } /// Generate the string component containing the location of the /// declaration. diff --git a/clang/tools/libclang/CXCursor.cpp b/clang/tools/libclang/CXCursor.cpp index 75806ffa8d7..506033e7663 100644 --- a/clang/tools/libclang/CXCursor.cpp +++ b/clang/tools/libclang/CXCursor.cpp @@ -71,6 +71,11 @@ static CXCursorKind GetCursorKind(Decl *D) { return CXCursor_ClassTemplatePartialSpecialization; case Decl::UsingDirective: return CXCursor_UsingDirective; + case Decl::Using: + case Decl::UnresolvedUsingValue: + case Decl::UnresolvedUsingTypename: + return CXCursor_UsingDeclaration; + default: if (TagDecl *TD = dyn_cast<TagDecl>(D)) { switch (TD->getTagKind()) { |

