Kill some CXDecl-related APIs that have been superceded by
CXCursor-based APIs.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94037 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/clang-c/Index.h b/include/clang-c/Index.h
index 00b4dfe..f1f36e5 100644
--- a/include/clang-c/Index.h
+++ b/include/clang-c/Index.h
@@ -438,9 +438,7 @@
 /*
  * CXDecl Operations.
  */
-CINDEX_LINKAGE CXCursor clang_getCursorFromDecl(CXDecl);
 CINDEX_LINKAGE CXEntity clang_getEntityFromDecl(CXIndex, CXDecl);
-CINDEX_LINKAGE CXString clang_getDeclSpelling(CXDecl);
 
 /**
  * \brief Identifies a specific source location within a translation
@@ -610,13 +608,6 @@
                                           unsigned *endLine,
                                           unsigned *endColumn);
 
-/*
- * If CXCursorKind == Cursor_Reference, then this will return the referenced
- * declaration.
- * If CXCursorKind == Cursor_Declaration, then this will return the declaration.
- */
-CINDEX_LINKAGE CXDecl clang_getCursorDecl(CXCursor);
-
 /**
  * \brief A semantic string that describes a code-completion result.
  *
diff --git a/tools/CIndex/CIndex.cpp b/tools/CIndex/CIndex.cpp
index 485e6c9..b9bd48f 100644
--- a/tools/CIndex/CIndex.cpp
+++ b/tools/CIndex/CIndex.cpp
@@ -594,36 +594,6 @@
 }
 
 //===----------------------------------------------------------------------===//
-// CXDecl Operations.
-//===----------------------------------------------------------------------===//
-
-extern "C" {
-CXString clang_getDeclSpelling(CXDecl AnonDecl) {
-  assert(AnonDecl && "Passed null CXDecl");
-  Decl *D = static_cast<Decl *>(AnonDecl);
-  NamedDecl *ND = dyn_cast<NamedDecl>(D);
-  if (!ND)
-    return CIndexer::createCXString("");
-
-  if (ObjCMethodDecl *OMD = dyn_cast<ObjCMethodDecl>(ND))
-    return CIndexer::createCXString(OMD->getSelector().getAsString().c_str(),
-                                    true);
-
-  if (ObjCCategoryImplDecl *CIMP = dyn_cast<ObjCCategoryImplDecl>(ND))
-    // No, this isn't the same as the code below. getIdentifier() is non-virtual
-    // and returns different names. NamedDecl returns the class name and
-    // ObjCCategoryImplDecl returns the category name.
-    return CIndexer::createCXString(CIMP->getIdentifier()->getNameStart());
-
-  if (ND->getIdentifier())
-    return CIndexer::createCXString(ND->getIdentifier()->getNameStart());
-
-  return CIndexer::createCXString("");
-}
-
-} // end: extern "C"
-
-//===----------------------------------------------------------------------===//
 // CXFile Operations.
 //===----------------------------------------------------------------------===//
 
@@ -692,6 +662,27 @@
   return CursorVis.VisitChildren(parent);
 }
 
+static CXString getDeclSpelling(Decl *D) {
+  NamedDecl *ND = dyn_cast_or_null<NamedDecl>(D);
+  if (!ND)
+    return CIndexer::createCXString("");
+  
+  if (ObjCMethodDecl *OMD = dyn_cast<ObjCMethodDecl>(ND))
+    return CIndexer::createCXString(OMD->getSelector().getAsString().c_str(),
+                                    true);
+  
+  if (ObjCCategoryImplDecl *CIMP = dyn_cast<ObjCCategoryImplDecl>(ND))
+    // No, this isn't the same as the code below. getIdentifier() is non-virtual
+    // and returns different names. NamedDecl returns the class name and
+    // ObjCCategoryImplDecl returns the category name.
+    return CIndexer::createCXString(CIMP->getIdentifier()->getNameStart());
+  
+  if (ND->getIdentifier())
+    return CIndexer::createCXString(ND->getIdentifier()->getNameStart());
+  
+  return CIndexer::createCXString("");
+}
+    
 CXString clang_getCursorSpelling(CXCursor C) {
   assert(getCursorDecl(C) && "CXCursor has null decl");
   if (clang_isTranslationUnit(C.kind))
@@ -720,11 +711,11 @@
   if (clang_isExpression(C.kind)) {
     Decl *D = getDeclFromExpr(getCursorExpr(C));
     if (D)
-      return clang_getDeclSpelling(D);
+      return getDeclSpelling(D);
     return CIndexer::createCXString("");
   }
 
-  return clang_getDeclSpelling(getCursorDecl(C));
+  return getDeclSpelling(getCursorDecl(C));
 }
 
 const char *clang_getCursorKindSpelling(enum CXCursorKind Kind) {
@@ -817,11 +808,6 @@
   return X == Y;
 }
 
-CXCursor clang_getCursorFromDecl(CXDecl AnonDecl) {
-  assert(AnonDecl && "Passed null CXDecl");
-  return MakeCXCursor(static_cast<NamedDecl *>(AnonDecl));
-}
-
 unsigned clang_isInvalid(enum CXCursorKind K) {
   return K >= CXCursor_FirstInvalid && K <= CXCursor_LastInvalid;
 }
@@ -850,23 +836,6 @@
   return C.kind;
 }
 
-CXDecl clang_getCursorDecl(CXCursor C) {
-  if (clang_isDeclaration(C.kind))
-    return getCursorDecl(C);
-
-  if (clang_isReference(C.kind)) {
-    if (getCursorStmt(C))
-      return getDeclFromExpr(getCursorStmt(C));
-
-    return getCursorDecl(C);
-  }
-
-  if (clang_isExpression(C.kind))
-    return getDeclFromExpr(getCursorStmt(C));
-
-  return 0;
-}
-
 static SourceLocation getLocationFromExpr(Expr *E) {
   if (ObjCMessageExpr *Msg = dyn_cast<ObjCMessageExpr>(E))
     return /*FIXME:*/Msg->getLeftLoc();
diff --git a/tools/CIndex/CIndex.exports b/tools/CIndex/CIndex.exports
index 2731549..05e3b61 100644
--- a/tools/CIndex/CIndex.exports
+++ b/tools/CIndex/CIndex.exports
@@ -12,17 +12,14 @@
 _clang_getCompletionChunkKind
 _clang_getCompletionChunkText
 _clang_getCursor
-_clang_getCursorDecl
 _clang_getCursorDefinition
 _clang_getCursorExtent
-_clang_getCursorFromDecl
 _clang_getCursorKind
 _clang_getCursorKindSpelling
 _clang_getCursorLocation
 _clang_getCursorReferenced
 _clang_getCursorSpelling
 _clang_getCursorUSR
-_clang_getDeclSpelling
 _clang_getDeclaration
 _clang_getDefinitionSpellingAndExtent
 _clang_getEntityFromDecl