[llvm] Unittest for Error forwarding, follow-up to PR #92208 (PR #92314)

Mircea Trofin via llvm-commits llvm-commits at lists.llvm.org
Thu May 16 07:24:28 PDT 2024


https://github.com/mtrofin updated https://github.com/llvm/llvm-project/pull/92314

>From f8de7d27ee42811253c14c72071987098b65069d Mon Sep 17 00:00:00 2001
From: Mircea Trofin <mtrofin at google.com>
Date: Wed, 15 May 2024 13:41:52 -0700
Subject: [PATCH 1/2] Unittest for Error forwarding, follow-up to PR #92208

Added a unittest demonstrating Error -> Expected<T>
forwarding.
---
 llvm/unittests/Support/ErrorTest.cpp | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/llvm/unittests/Support/ErrorTest.cpp b/llvm/unittests/Support/ErrorTest.cpp
index 1229282cf0def..5c0179f256d6e 100644
--- a/llvm/unittests/Support/ErrorTest.cpp
+++ b/llvm/unittests/Support/ErrorTest.cpp
@@ -1158,4 +1158,20 @@ TEST(Error, BadAllocFatalErrorHandlersInteraction) {
   remove_bad_alloc_error_handler();
 }
 
+TEST(Error, ForwardToExpected) {
+  auto ErrorReturningFct = [](bool Fail) {
+    return Fail ? make_error<StringError>(llvm::errc::invalid_argument,
+                                          "Some Error")
+                : Error::success();
+  };
+  auto ExpectedReturningFct = [&](bool Fail) -> Expected<int> {
+    auto Err = ErrorReturningFct(Fail);
+    if (Err)
+      return Err;
+    return 42;
+  };
+  std::optional<int> MaybeV;
+  EXPECT_THAT_ERROR(ExpectedReturningFct(true).moveInto(MaybeV), Failed());
+  EXPECT_EQ(*ExpectedReturningFct(false), 42);
+}
 } // namespace

>From b97642d221617d07a58a901447e65f794ad723b8 Mon Sep 17 00:00:00 2001
From: Mircea Trofin <mtrofin at google.com>
Date: Thu, 16 May 2024 07:24:00 -0700
Subject: [PATCH 2/2] forgot to consume the success error

---
 llvm/unittests/Support/ErrorTest.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/llvm/unittests/Support/ErrorTest.cpp b/llvm/unittests/Support/ErrorTest.cpp
index 5c0179f256d6e..5d866a67c0eaa 100644
--- a/llvm/unittests/Support/ErrorTest.cpp
+++ b/llvm/unittests/Support/ErrorTest.cpp
@@ -13,6 +13,7 @@
 #include "llvm/Support/Errc.h"
 #include "llvm/Support/ErrorHandling.h"
 #include "llvm/Testing/Support/Error.h"
+#include "gmock/gmock.h"
 #include "gtest/gtest-spi.h"
 #include "gtest/gtest.h"
 #include <memory>
@@ -1172,6 +1173,7 @@ TEST(Error, ForwardToExpected) {
   };
   std::optional<int> MaybeV;
   EXPECT_THAT_ERROR(ExpectedReturningFct(true).moveInto(MaybeV), Failed());
-  EXPECT_EQ(*ExpectedReturningFct(false), 42);
+  EXPECT_THAT_ERROR(ExpectedReturningFct(false).moveInto(MaybeV), Succeeded());
+  EXPECT_EQ(*MaybeV, 42);
 }
 } // namespace



More information about the llvm-commits mailing list