[clang] [llvm] [FlowSensitive] [StatusOr] [1/N] Add mock headers (PR #163261)

Florian Mayer via cfe-commits cfe-commits at lists.llvm.org
Wed Oct 15 12:23:03 PDT 2025


================
@@ -1240,6 +1274,998 @@ constexpr bool operator!=(const T &value, const Optional<U> &opt);
 } // namespace base
 )";
 
+constexpr const char StatusDefsHeader[] =
+    R"cc(
+#ifndef STATUS_H_
+#define STATUS_H_
+
+#include "absl_type_traits.h"
+#include "std_initializer_list.h"
+#include "std_type_traits.h"
+#include "std_utility.h"
+#include "std_string.h"
+
+  namespace absl {
+  struct SourceLocation {
+    static constexpr SourceLocation current();
+    static constexpr SourceLocation DoNotInvokeDirectlyNoSeriouslyDont(
+        int line, const char* file_name);
+  };
+  }  // namespace absl
+  namespace absl {
+  enum class StatusCode : int {
+    kOk,
+    kCancelled,
+    kUnknown,
+    kInvalidArgument,
+    kDeadlineExceeded,
+    kNotFound,
+    kAlreadyExists,
+    kPermissionDenied,
+    kResourceExhausted,
+    kFailedPrecondition,
+    kAborted,
+    kOutOfRange,
+    kUnimplemented,
+    kInternal,
+    kUnavailable,
+    kDataLoss,
+    kUnauthenticated,
+  };
+  }  // namespace absl
+
+  namespace absl {
+  enum class StatusToStringMode : int {
+    kWithNoExtraData = 0,
+    kWithPayload = 1 << 0,
+    kWithSourceLocation = 1 << 1,
+    kWithEverything = ~kWithNoExtraData,
+    kDefault = kWithPayload,
+  };
+  class Status {
+   public:
+    Status();
+    template <typename Enum>
+    Status(Enum code, std::string_view msg);
+    Status(absl::StatusCode code, std::string_view msg,
+           absl::SourceLocation loc = SourceLocation::current());
+    Status(const Status& base_status, absl::SourceLocation loc);
+    Status(Status&& base_status, absl::SourceLocation loc);
+    ~Status() {}
+
+    Status(const Status&);
+    Status& operator=(const Status& x);
+
+    Status(Status&&) noexcept;
+    Status& operator=(Status&&);
+
+    friend bool operator==(const Status&, const Status&);
+    friend bool operator!=(const Status&, const Status&);
+
+    bool ok() const { return true; }
+    void CheckSuccess() const;
+    void IgnoreError() const;
+    int error_code() const;
+    absl::Status ToCanonical() const;
+    std::string ToString(
+        StatusToStringMode m = StatusToStringMode::kDefault) const;
+    void Update(const Status& new_status);
+    void Update(Status&& new_status);
+  };
+
+  bool operator==(const Status& lhs, const Status& rhs);
+  bool operator!=(const Status& lhs, const Status& rhs);
+
+  Status OkStatus();
+  Status InvalidArgumentError(char*);
+#endif  // STATUS_H
+)cc";
+
+constexpr const char StatusOrDefsHeader[] = R"cc(
+#ifndef STATUSOR_H_
+#define STATUSOR_H_
+#include "absl_type_traits.h"
+#include "std_initializer_list.h"
+#include "std_type_traits.h"
+#include "std_utility.h"
+  #include "status_defs.h"
----------------
fmayer wrote:

done

https://github.com/llvm/llvm-project/pull/163261


More information about the cfe-commits mailing list