File llvm16-optional-deprecation.patch of Package failed_ccls

From 6dc564f2a8608fff778a7d7e8ed0d5acd8d61e6b Mon Sep 17 00:00:00 2001
From: Fangrui Song <i@maskray.me>
Date: Sat, 17 Dec 2022 20:04:54 -0800
Subject: [PATCH] Adapt llvm::Optional deprecation

---
 src/indexer.cc      |  4 +++-
 src/project.cc      | 11 +++++++----
 src/sema_manager.cc |  4 +++-
 3 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/src/indexer.cc b/src/indexer.cc
index d5fe7da2c..83b77a201 100644
--- a/src/indexer.cc
+++ b/src/indexer.cc
@@ -1097,7 +1097,9 @@ class IndexPPCallbacks : public PPCallbacks {
   void InclusionDirective(SourceLocation hashLoc, const Token &tok,
                           StringRef included, bool isAngled,
                           CharSourceRange filenameRange,
-#if LLVM_VERSION_MAJOR >= 15 // llvmorg-15-init-7692-gd79ad2f1dbc2
+#if LLVM_VERSION_MAJOR >= 16 // llvmorg-16-init-15080-g854c10f8d185
+                          OptionalFileEntryRef fileRef,
+#elif LLVM_VERSION_MAJOR >= 15 // llvmorg-15-init-7692-gd79ad2f1dbc2
                           llvm::Optional<FileEntryRef> fileRef,
 #else
                           const FileEntry *file,
diff --git a/src/project.cc b/src/project.cc
index c02bd6b67..b1b7f557c 100644
--- a/src/project.cc
+++ b/src/project.cc
@@ -391,11 +391,14 @@ void Project::loadDirectory(const std::string &root, Project::Folder &folder) {
       fwrite(input.c_str(), input.size(), 1, fout);
       fclose(fout);
     }
-    std::array<Optional<StringRef>, 3> redir{StringRef(stdinPath),
-                                             StringRef(path), StringRef()};
+#if LLVM_VERSION_MAJOR >= 16 // llvmorg-16-init-12589-ge748db0f7f09
+    std::array<std::optional<StringRef>, 3>
+#else
+    std::array<Optional<StringRef>, 3>
+#endif
+        redir{StringRef(stdinPath), StringRef(path), StringRef()};
     std::vector<StringRef> args{g_config->compilationDatabaseCommand, root};
-    if (sys::ExecuteAndWait(args[0], args, llvm::None, redir, 0, 0, &err_msg) <
-        0) {
+    if (sys::ExecuteAndWait(args[0], args, {}, redir, 0, 0, &err_msg) < 0) {
       LOG_S(ERROR) << "failed to execute " << args[0].str() << " "
                    << args[1].str() << ": " << err_msg;
       return;
diff --git a/src/sema_manager.cc b/src/sema_manager.cc
index a7b6f8cab..14f303b5f 100644
--- a/src/sema_manager.cc
+++ b/src/sema_manager.cc
@@ -179,7 +179,9 @@ class StoreInclude : public PPCallbacks {
   void InclusionDirective(SourceLocation hashLoc, const Token &includeTok,
                           StringRef fileName, bool isAngled,
                           CharSourceRange filenameRange,
-#if LLVM_VERSION_MAJOR >= 15 // llvmorg-15-init-7692-gd79ad2f1dbc2
+#if LLVM_VERSION_MAJOR >= 16 // llvmorg-16-init-15080-g854c10f8d185
+                          OptionalFileEntryRef fileRef,
+#elif LLVM_VERSION_MAJOR >= 15 // llvmorg-15-init-7692-gd79ad2f1dbc2
                           llvm::Optional<FileEntryRef> fileRef,
 #else
                           const FileEntry *file,
openSUSE Build Service is sponsored by