diff --git a/clang/include/clang-c/Index.h b/clang/include/clang-c/Index.h index 1adaa4861582..51b1a8c2eef8 100644 --- a/clang/include/clang-c/Index.h +++ b/clang/include/clang-c/Index.h @@ -32,7 +32,7 @@ * compatible, thus CINDEX_VERSION_MAJOR is expected to remain stable. */ #define CINDEX_VERSION_MAJOR 0 -#define CINDEX_VERSION_MINOR 19 +#define CINDEX_VERSION_MINOR 20 #define CINDEX_VERSION_ENCODE(major, minor) ( \ ((major) * 10000) \ @@ -413,6 +413,12 @@ CINDEX_LINKAGE CXSourceLocation clang_getLocationForOffset(CXTranslationUnit tu, */ CINDEX_LINKAGE int clang_Location_isInSystemHeader(CXSourceLocation location); +/** + * \brief Returns non-zero if the given source location is in the main file of + * the corresponding translation unit. + */ +CINDEX_LINKAGE int clang_Location_isFromMainFile(CXSourceLocation location); + /** * \brief Retrieve a NULL (invalid) source range. */ diff --git a/clang/tools/libclang/CXSourceLocation.cpp b/clang/tools/libclang/CXSourceLocation.cpp index b7c7622c66b2..71e425d1f7f3 100644 --- a/clang/tools/libclang/CXSourceLocation.cpp +++ b/clang/tools/libclang/CXSourceLocation.cpp @@ -209,6 +209,17 @@ int clang_Location_isInSystemHeader(CXSourceLocation location) { return SM.isInSystemHeader(Loc); } +int clang_Location_isFromMainFile(CXSourceLocation location) { + const SourceLocation Loc = + SourceLocation::getFromRawEncoding(location.int_data); + if (Loc.isInvalid()) + return 0; + + const SourceManager &SM = + *static_cast(location.ptr_data[0]); + return SM.isFromMainFile(Loc); +} + void clang_getExpansionLocation(CXSourceLocation location, CXFile *file, unsigned *line, diff --git a/clang/tools/libclang/libclang.exports b/clang/tools/libclang/libclang.exports index 037f26fcc0d7..92b060a1692f 100644 --- a/clang/tools/libclang/libclang.exports +++ b/clang/tools/libclang/libclang.exports @@ -255,6 +255,7 @@ clang_isVirtualBase clang_isVolatileQualifiedType clang_loadDiagnostics clang_Location_isInSystemHeader +clang_Location_isFromMainFile clang_parseTranslationUnit clang_remap_dispose clang_remap_getFilenames