diff options
Diffstat (limited to 'build/build-clang/query-selector-visibility.patch')
-rw-r--r-- | build/build-clang/query-selector-visibility.patch | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/build/build-clang/query-selector-visibility.patch b/build/build-clang/query-selector-visibility.patch new file mode 100644 index 000000000..46a9642bd --- /dev/null +++ b/build/build-clang/query-selector-visibility.patch @@ -0,0 +1,79 @@ +commit 865b9340996f9f9d04b73b187248737dc6fd845e +Author: Michael Wu <mwu@mozilla.com> +Date: Mon Sep 14 17:47:21 2015 -0400 + + Add support for querying the visibility of a cursor + +diff --git a/clang/include/clang-c/Index.h b/clang/include/clang-c/Index.h +index fad9cfa..311bfcb 100644 +--- a/clang/include/clang-c/Index.h ++++ b/clang/include/clang-c/Index.h +@@ -2440,6 +2440,24 @@ enum CXLinkageKind { + CINDEX_LINKAGE enum CXLinkageKind clang_getCursorLinkage(CXCursor cursor); + + /** ++ * \brief Describe the visibility of the entity referred to by a cursor. ++ */ ++enum CXVisibilityKind { ++ /** \brief This value indicates that no visibility information is available ++ * for a provided CXCursor. */ ++ CXVisibility_Invalid, ++ ++ /** \brief Symbol not seen by the linker. */ ++ CXVisibility_Hidden, ++ /** \brief Symbol seen by the linker but resolves to a symbol inside this object. */ ++ CXVisibility_Protected, ++ /** \brief Symbol seen by the linker and acts like a normal symbol. */ ++ CXVisibility_Default, ++}; ++ ++CINDEX_LINKAGE enum CXVisibilityKind clang_getCursorVisibility(CXCursor cursor); ++ ++/** + * \brief Determine the availability of the entity that this cursor refers to, + * taking the current target platform into account. + * +diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp +index 8225a6c..9fa18d3 100644 +--- a/clang/tools/libclang/CIndex.cpp ++++ b/clang/tools/libclang/CIndex.cpp +@@ -6361,6 +6361,27 @@ CXLinkageKind clang_getCursorLinkage(CXCursor cursor) { + } // end: extern "C" + + //===----------------------------------------------------------------------===// ++// Operations for querying visibility of a cursor. ++//===----------------------------------------------------------------------===// ++ ++extern "C" { ++CXVisibilityKind clang_getCursorVisibility(CXCursor cursor) { ++ if (!clang_isDeclaration(cursor.kind)) ++ return CXVisibility_Invalid; ++ ++ const Decl *D = cxcursor::getCursorDecl(cursor); ++ if (const NamedDecl *ND = dyn_cast_or_null<NamedDecl>(D)) ++ switch (ND->getVisibility()) { ++ case HiddenVisibility: return CXVisibility_Hidden; ++ case ProtectedVisibility: return CXVisibility_Protected; ++ case DefaultVisibility: return CXVisibility_Default; ++ }; ++ ++ return CXVisibility_Invalid; ++} ++} // end: extern "C" ++ ++//===----------------------------------------------------------------------===// + // Operations for querying language of a cursor. + //===----------------------------------------------------------------------===// + +diff --git a/clang/tools/libclang/libclang.exports b/clang/tools/libclang/libclang.exports +index f6a7175..a919a8e 100644 +--- a/clang/tools/libclang/libclang.exports ++++ b/clang/tools/libclang/libclang.exports +@@ -173,6 +173,7 @@ clang_getCursorSemanticParent + clang_getCursorSpelling + clang_getCursorType + clang_getCursorUSR ++clang_getCursorVisibility + clang_getDeclObjCTypeEncoding + clang_getDefinitionSpellingAndExtent + clang_getDiagnostic |