mirror of
https://github.com/intel/llvm.git
synced 2026-01-16 05:32:28 +08:00
Index: expose visibility attribute
Expose the previously unexposed visibility attribute via the python and C bindings. llvm-svn: 246931
This commit is contained in:
@@ -1100,6 +1100,8 @@ CursorKind.CUDAGLOBAL_ATTR = CursorKind(414)
|
||||
CursorKind.CUDAHOST_ATTR = CursorKind(415)
|
||||
CursorKind.CUDASHARED_ATTR = CursorKind(416)
|
||||
|
||||
CursorKind.VISIBILITY_ATTR = CursorKind(417)
|
||||
|
||||
###
|
||||
# Preprocessing
|
||||
CursorKind.PREPROCESSING_DIRECTIVE = CursorKind(500)
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
* compatible, thus CINDEX_VERSION_MAJOR is expected to remain stable.
|
||||
*/
|
||||
#define CINDEX_VERSION_MAJOR 0
|
||||
#define CINDEX_VERSION_MINOR 30
|
||||
#define CINDEX_VERSION_MINOR 31
|
||||
|
||||
#define CINDEX_VERSION_ENCODE(major, minor) ( \
|
||||
((major) * 10000) \
|
||||
@@ -2279,7 +2279,8 @@ enum CXCursorKind {
|
||||
CXCursor_CUDAGlobalAttr = 414,
|
||||
CXCursor_CUDAHostAttr = 415,
|
||||
CXCursor_CUDASharedAttr = 416,
|
||||
CXCursor_LastAttr = CXCursor_CUDASharedAttr,
|
||||
CXCursor_VisibilityAttr = 417,
|
||||
CXCursor_LastAttr = CXCursor_VisibilityAttr,
|
||||
|
||||
/* Preprocessing */
|
||||
CXCursor_PreprocessingDirective = 500,
|
||||
|
||||
13
clang/test/Index/visibility.c
Normal file
13
clang/test/Index/visibility.c
Normal file
@@ -0,0 +1,13 @@
|
||||
// RUN: c-index-test -index-file %s -target i686-pc-linux \
|
||||
// RUN: | FileCheck %s -check-prefix CHECK -check-prefix CHECK-LINUX
|
||||
// RUN: c-index-test -index-file -Wno-unsupported-visibility %s -target i386-darwin \
|
||||
// RUN: | FileCheck %s -check-prefix CHECK -check-prefix CHECK-DARWIN
|
||||
|
||||
void __attribute__ (( visibility("default") )) default_visibility();
|
||||
// CHECK: <attribute>: attribute(visibility)=default
|
||||
void __attribute__ (( visibility("hidden") )) hidden_visibility();
|
||||
// CHECK: <attribute>: attribute(visibility)=hidden
|
||||
void __attribute__ (( visibility("protected") )) protected_visibility();
|
||||
// CHECK-LINUX: <attribute>: attribute(visibility)=protected
|
||||
// CHECK-DARWIN: <attribute>: attribute(visibility)=default
|
||||
|
||||
@@ -3756,6 +3756,19 @@ CXString clang_getCursorSpelling(CXCursor C) {
|
||||
return cxstring::createRef("packed");
|
||||
}
|
||||
|
||||
if (C.kind == CXCursor_VisibilityAttr) {
|
||||
const VisibilityAttr *AA = cast<VisibilityAttr>(cxcursor::getCursorAttr(C));
|
||||
switch (AA->getVisibility()) {
|
||||
case VisibilityAttr::VisibilityType::Default:
|
||||
return cxstring::createRef("default");
|
||||
case VisibilityAttr::VisibilityType::Hidden:
|
||||
return cxstring::createRef("hidden");
|
||||
case VisibilityAttr::VisibilityType::Protected:
|
||||
return cxstring::createRef("protected");
|
||||
}
|
||||
llvm_unreachable("unknown visibility type");
|
||||
}
|
||||
|
||||
return cxstring::createEmpty();
|
||||
}
|
||||
|
||||
@@ -4237,6 +4250,8 @@ CXString clang_getCursorKindSpelling(enum CXCursorKind Kind) {
|
||||
return cxstring::createRef("attribute(host)");
|
||||
case CXCursor_CUDASharedAttr:
|
||||
return cxstring::createRef("attribute(shared)");
|
||||
case CXCursor_VisibilityAttr:
|
||||
return cxstring::createRef("attribute(visibility)");
|
||||
case CXCursor_PreprocessingDirective:
|
||||
return cxstring::createRef("preprocessing directive");
|
||||
case CXCursor_MacroDefinition:
|
||||
|
||||
@@ -58,6 +58,7 @@ static CXCursorKind GetCursorKind(const Attr *A) {
|
||||
case attr::CUDAGlobal: return CXCursor_CUDAGlobalAttr;
|
||||
case attr::CUDAHost: return CXCursor_CUDAHostAttr;
|
||||
case attr::CUDAShared: return CXCursor_CUDASharedAttr;
|
||||
case attr::Visibility: return CXCursor_VisibilityAttr;
|
||||
}
|
||||
|
||||
return CXCursor_UnexposedAttr;
|
||||
|
||||
Reference in New Issue
Block a user