diff options
Diffstat (limited to 'tools/libclang')
-rw-r--r-- | tools/libclang/CIndex.cpp | 2 | ||||
-rw-r--r-- | tools/libclang/CIndexCXX.cpp | 11 |
2 files changed, 10 insertions, 3 deletions
diff --git a/tools/libclang/CIndex.cpp b/tools/libclang/CIndex.cpp index a8126315ca..0f0ff85fb3 100644 --- a/tools/libclang/CIndex.cpp +++ b/tools/libclang/CIndex.cpp @@ -3424,6 +3424,8 @@ CXString clang_getCursorKindSpelling(enum CXCursorKind Kind) { return createCXString("ObjCSynthesizeDecl"); case CXCursor_ObjCDynamicDecl: return createCXString("ObjCDynamicDecl"); + case CXCursor_CXXAccessSpecifier: + return createCXString("CXXAccessSpecifier"); } llvm_unreachable("Unhandled CXCursorKind"); diff --git a/tools/libclang/CIndexCXX.cpp b/tools/libclang/CIndexCXX.cpp index 0f49f65c2b..fb0ccb146f 100644 --- a/tools/libclang/CIndexCXX.cpp +++ b/tools/libclang/CIndexCXX.cpp @@ -31,11 +31,16 @@ unsigned clang_isVirtualBase(CXCursor C) { } enum CX_CXXAccessSpecifier clang_getCXXAccessSpecifier(CXCursor C) { - if (C.kind != CXCursor_CXXBaseSpecifier) + AccessSpecifier spec = AS_none; + + if (C.kind == CXCursor_CXXAccessSpecifier) + spec = getCursorDecl(C)->getAccess(); + else if (C.kind == CXCursor_CXXBaseSpecifier) + spec = getCursorCXXBaseSpecifier(C)->getAccessSpecifier(); + else return CX_CXXInvalidAccessSpecifier; - CXXBaseSpecifier *B = getCursorCXXBaseSpecifier(C); - switch (B->getAccessSpecifier()) { + switch (spec) { case AS_public: return CX_CXXPublic; case AS_protected: return CX_CXXProtected; case AS_private: return CX_CXXPrivate; |