diff options
Diffstat (limited to 'clang/tools/libclang/CIndex.cpp')
-rw-r--r-- | clang/tools/libclang/CIndex.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp index 754026eae17..f38d4c2bc87 100644 --- a/clang/tools/libclang/CIndex.cpp +++ b/clang/tools/libclang/CIndex.cpp @@ -6329,6 +6329,26 @@ CXModule clang_Cursor_getModule(CXCursor C) { return 0; } +CXModule clang_getModuleForFile(CXTranslationUnit TU, CXFile File) { + if (isNotUsableTU(TU)) { + LOG_BAD_TU(TU); + return nullptr; + } + if (!File) + return nullptr; + FileEntry *FE = static_cast<FileEntry *>(File); + + ASTUnit &Unit = *cxtu::getASTUnit(TU); + HeaderSearch &HS = Unit.getPreprocessor().getHeaderSearchInfo(); + ModuleMap::KnownHeader Header = HS.findModuleForHeader(FE); + + if (Module *Mod = Header.getModule()) { + if (Header.getRole() != ModuleMap::ExcludedHeader) + return Mod; + } + return nullptr; +} + CXFile clang_Module_getASTFile(CXModule CXMod) { if (!CXMod) return 0; |