diff --git a/src/indexer.cc b/src/indexer.cc index dd3de639..2ffdff32 100644 --- a/src/indexer.cc +++ b/src/indexer.cc @@ -1271,14 +1271,21 @@ Index(SemaManager *manager, WorkingFiles *wfiles, VFS *vfs, std::unique_ptr Action = createIndexingAction( DataConsumer, IndexOpts, std::make_unique(param)); - + std::string reason; { llvm::CrashRecoveryContext CRC; auto parse = [&]() { if (!Action->BeginSourceFile(*Clang, Clang->getFrontendOpts().Inputs[0])) return; +#if LLVM_VERSION_MAJOR >= 9 // rL364464 + if (llvm::Error E = Action->Execute()) { + reason = llvm::toString(std::move(E)); + return; + } +#else if (!Action->Execute()) return; +#endif Action->EndSourceFile(); ok = true; }; @@ -1288,7 +1295,8 @@ Index(SemaManager *manager, WorkingFiles *wfiles, VFS *vfs, } } if (!ok) { - LOG_S(ERROR) << "failed to index " << main; + LOG_S(ERROR) << "failed to index " << main + << (reason.empty() ? "" : ": " + reason); return {}; } diff --git a/src/sema_manager.cc b/src/sema_manager.cc index 0467713e..efc22f90 100644 --- a/src/sema_manager.cc +++ b/src/sema_manager.cc @@ -327,8 +327,15 @@ bool Parse(CompilerInstance &Clang) { SyntaxOnlyAction Action; if (!Action.BeginSourceFile(Clang, Clang.getFrontendOpts().Inputs[0])) return false; +#if LLVM_VERSION_MAJOR >= 9 // rL364464 + if (llvm::Error E = Action.Execute()) { + llvm::consumeError(std::move(E)); + return false; + } +#else if (!Action.Execute()) return false; +#endif Action.EndSourceFile(); return true; }