Index: include/clang-c/Index.h =================================================================== --- include/clang-c/Index.h +++ include/clang-c/Index.h @@ -2338,7 +2338,9 @@ CXCursor_VisibilityAttr = 417, CXCursor_DLLExport = 418, CXCursor_DLLImport = 419, - CXCursor_LastAttr = CXCursor_DLLImport, + CXCursor_WeakAttr = 420, + CXCursor_AliasAttr = 421, + CXCursor_LastAttr = CXCursor_AliasAttr, /* Preprocessing */ CXCursor_PreprocessingDirective = 500, @@ -3589,6 +3591,12 @@ CINDEX_LINKAGE CXType clang_getIBOutletCollectionType(CXCursor); /** + * \brief For cursors representing an alias attribute, + * this function returns the aliased symbol name as written. + */ +CINDEX_LINKAGE CXString clang_getAliasTargetSpelling(CXCursor); + +/** * @} */ Index: tools/libclang/CIndex.cpp =================================================================== --- tools/libclang/CIndex.cpp +++ tools/libclang/CIndex.cpp @@ -4698,6 +4698,10 @@ return cxstring::createRef("attribute(dllexport)"); case CXCursor_DLLImport: return cxstring::createRef("attribute(dllimport)"); + case CXCursor_WeakAttr: + return cxstring::createRef("attribute(weak)"); + case CXCursor_AliasAttr: + return cxstring::createRef("attribute(alias)"); case CXCursor_PreprocessingDirective: return cxstring::createRef("preprocessing directive"); case CXCursor_MacroDefinition: @@ -5861,6 +5865,16 @@ return clang_getNullRange(); } +CXString clang_getAliasTargetSpelling(CXCursor C) { + if (C.kind != CXCursor_AliasAttr) + return cxstring::createEmpty(); + + const AliasAttr *A = + cast(cxcursor::getCursorAttr(C)); + + return cxstring::createDup(A->getAliasee()); +} + void clang_enableStackTraces(void) { llvm::sys::PrintStackTraceOnErrorSignal(); } Index: tools/libclang/CXCursor.cpp =================================================================== --- tools/libclang/CXCursor.cpp +++ tools/libclang/CXCursor.cpp @@ -61,6 +61,8 @@ case attr::Visibility: return CXCursor_VisibilityAttr; case attr::DLLExport: return CXCursor_DLLExport; case attr::DLLImport: return CXCursor_DLLImport; + case attr::Weak: return CXCursor_WeakAttr; + case attr::Alias: return CXCursor_AliasAttr; } return CXCursor_UnexposedAttr;