summaryrefslogtreecommitdiffstats
path: root/build/build-clang/query-selector-visibility.patch
diff options
context:
space:
mode:
Diffstat (limited to 'build/build-clang/query-selector-visibility.patch')
-rw-r--r--build/build-clang/query-selector-visibility.patch79
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