Use the cursor's ASTContext rather than the ASTContext computed from a
declaration, just in case invalid code makes the latter
incorrect. This may be the cause behind <rdar://problem/7777070>.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99179 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/CIndex/CIndex.cpp b/tools/CIndex/CIndex.cpp
index 1000818..5a64caa 100644
--- a/tools/CIndex/CIndex.cpp
+++ b/tools/CIndex/CIndex.cpp
@@ -1737,7 +1737,7 @@
SourceLocation Loc = D->getLocation();
if (ObjCInterfaceDecl *Class = dyn_cast<ObjCInterfaceDecl>(D))
Loc = Class->getClassLoc();
- return cxloc::translateSourceLocation(D->getASTContext(), Loc);
+ return cxloc::translateSourceLocation(getCursorContext(C), Loc);
}
CXSourceRange clang_getCursorExtent(CXCursor C) {
@@ -1800,7 +1800,7 @@
return clang_getNullRange();
Decl *D = getCursorDecl(C);
- return cxloc::translateSourceRange(D->getASTContext(), D->getSourceRange());
+ return cxloc::translateSourceRange(getCursorContext(C), D->getSourceRange());
}
CXCursor clang_getCursorReferenced(CXCursor C) {