[llvm] [orc-rt] Use the Error matchers in SimpleNativeMemoryMapTest (PR #228335)

Lang Hames via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 1 23:32:58 PDT 2026


https://github.com/lhames updated https://github.com/llvm/llvm-project/pull/228335

>From 166cfd3c13942e99a66d920231781ce90113ce36 Mon Sep 17 00:00:00 2001
From: Lang Hames <lhames at gmail.com>
Date: Thu, 1 Oct 2026 09:28:39 +1000
Subject: [PATCH] [orc-rt] Use the Error matchers in SimpleNativeMemoryMapTest

Use the Error matchers introduced in 4c8a437d0487 to clean up error
checks in SimpleNativeMemoryMapTest.
---
 .../bedrock/SimpleNativeMemoryMapTest.cpp     | 116 ++++++++++--------
 1 file changed, 64 insertions(+), 52 deletions(-)

diff --git a/orc-rt/test/unit/bedrock/SimpleNativeMemoryMapTest.cpp b/orc-rt/test/unit/bedrock/SimpleNativeMemoryMapTest.cpp
index 978b8ad4da2ed08..b8a6dcd5f47dd85 100644
--- a/orc-rt/test/unit/bedrock/SimpleNativeMemoryMapTest.cpp
+++ b/orc-rt/test/unit/bedrock/SimpleNativeMemoryMapTest.cpp
@@ -56,7 +56,8 @@ TEST(SimpleNativeMemoryMapTest, CreateAndDestroy) {
   // expected.
   Session S(mockExecutorProcessInfo(), noDispatch, noErrors);
   SimpleSymbolTable ThrowAway;
-  auto SNMM = cantFail(SimpleNativeMemoryMap::Create(S, ThrowAway));
+  EXPECT_THAT_EXPECTED(SimpleNativeMemoryMap::Create(S, ThrowAway),
+                       Succeeded());
 }
 
 TEST(SimpleNativeMemoryMapTest, ReserveAndRelease) {
@@ -64,15 +65,17 @@ TEST(SimpleNativeMemoryMapTest, ReserveAndRelease) {
   // without finalizing any memory within it.
   Session S(mockExecutorProcessInfo(), noDispatch, noErrors);
   SimpleSymbolTable ThrowAway;
-  auto SNMM = cantFail(SimpleNativeMemoryMap::Create(S, ThrowAway));
+  auto SNMM = SimpleNativeMemoryMap::Create(S, ThrowAway);
+  ASSERT_THAT_EXPECTED(SNMM, Succeeded());
 
   std::future<Expected<void *>> ReserveResult;
-  SNMM->reserve(waitFor(ReserveResult), 1024 * 1024 * 1024);
-  void *Addr = cantFail(ReserveResult.get());
+  (*SNMM)->reserve(waitFor(ReserveResult), 1024 * 1024 * 1024);
+  auto Addr = ReserveResult.get();
+  ASSERT_THAT_EXPECTED(Addr, Succeeded());
 
   std::future<Error> ReleaseResult;
-  SNMM->releaseMultiple(waitFor(ReleaseResult), {Addr});
-  cantFail(ReleaseResult.get());
+  (*SNMM)->releaseMultiple(waitFor(ReleaseResult), {*Addr});
+  ASSERT_THAT_ERROR(ReleaseResult.get(), Succeeded());
 }
 
 TEST(SimpleNativeMemoryMapTest, FullPipelineForOneRWSegment) {
@@ -86,14 +89,16 @@ TEST(SimpleNativeMemoryMapTest, FullPipelineForOneRWSegment) {
 
   Session S(mockExecutorProcessInfo(), noDispatch, noErrors);
   SimpleSymbolTable ThrowAway;
-  auto SNMM = cantFail(SimpleNativeMemoryMap::Create(S, ThrowAway));
+  auto SNMM = SimpleNativeMemoryMap::Create(S, ThrowAway);
+  ASSERT_THAT_EXPECTED(SNMM, Succeeded());
 
   std::future<Expected<void *>> ReserveResult;
-  SNMM->reserve(waitFor(ReserveResult), 1024 * 1024 * 1024);
-  void *Addr = cantFail(ReserveResult.get());
+  (*SNMM)->reserve(waitFor(ReserveResult), 1024 * 1024 * 1024);
+  auto Addr = ReserveResult.get();
+  ASSERT_THAT_EXPECTED(Addr, Succeeded());
 
   char *InitializeBase = // Initialize addr at non-zero (64kb) offset from base.
-      reinterpret_cast<char *>(Addr) + 64 * 1024;
+      reinterpret_cast<char *>(*Addr) + 64 * 1024;
   uint64_t SentinelValue1 = 0; // Read from pre-filled content
   uint64_t SentinelValue2 =
       0; // Written in initialize, read back during dealloc.
@@ -138,52 +143,54 @@ TEST(SimpleNativeMemoryMapTest, FullPipelineForOneRWSegment) {
   });
 
   std::future<Expected<void *>> InitializeResult;
-  SNMM->initialize(waitFor(InitializeResult), std::move(IR));
-  void *InitializeKeyAddr = cantFail(InitializeResult.get());
+  (*SNMM)->initialize(waitFor(InitializeResult), std::move(IR));
+  auto InitializeKeyAddr = InitializeResult.get();
+  ASSERT_THAT_EXPECTED(InitializeKeyAddr, Succeeded());
 
   EXPECT_EQ(SentinelValue1, 42U);
   EXPECT_EQ(SentinelValue2, 0U);
   EXPECT_EQ(SentinelValue3, 0U);
 
   std::future<Error> DeallocResult;
-  SNMM->deinitializeMultiple(waitFor(DeallocResult), {InitializeKeyAddr});
-  cantFail(DeallocResult.get());
+  (*SNMM)->deinitializeMultiple(waitFor(DeallocResult), {*InitializeKeyAddr});
+  ASSERT_THAT_ERROR(DeallocResult.get(), Succeeded());
 
   EXPECT_EQ(SentinelValue1, 42U);
   EXPECT_EQ(SentinelValue2, 42U);
   EXPECT_EQ(SentinelValue3, 0U);
 
   std::future<Error> ReleaseResult;
-  SNMM->releaseMultiple(waitFor(ReleaseResult), {Addr});
-  cantFail(ReleaseResult.get());
+  (*SNMM)->releaseMultiple(waitFor(ReleaseResult), {*Addr});
+  ASSERT_THAT_ERROR(ReleaseResult.get(), Succeeded());
 }
 
 TEST(SimpleNativeMemoryMapTest, ReserveRejectsNonPageSizeMultiple) {
   // Verify that reserve rejects sizes that aren't page-size multiples.
   Session S(mockExecutorProcessInfo(), noDispatch, noErrors);
   SimpleSymbolTable ThrowAway;
-  auto SNMM = cantFail(SimpleNativeMemoryMap::Create(S, ThrowAway));
+  auto SNMM = SimpleNativeMemoryMap::Create(S, ThrowAway);
+  ASSERT_THAT_EXPECTED(SNMM, Succeeded());
 
   std::future<Expected<void *>> ReserveResult;
-  SNMM->reserve(waitFor(ReserveResult), S.processInfo().pageSize() + 1);
-  auto Result = ReserveResult.get();
-  EXPECT_FALSE(!!Result);
-  consumeError(Result.takeError());
+  (*SNMM)->reserve(waitFor(ReserveResult), S.processInfo().pageSize() + 1);
+  EXPECT_THAT_EXPECTED(ReserveResult.get(), Failed());
 }
 
 TEST(SimpleNativeMemoryMapTest, ReserveAcceptsPageSizeMultiple) {
   // Verify that reserve accepts a size that's an exact page-size multiple.
   Session S(mockExecutorProcessInfo(), noDispatch, noErrors);
   SimpleSymbolTable ThrowAway;
-  auto SNMM = cantFail(SimpleNativeMemoryMap::Create(S, ThrowAway));
+  auto SNMM = SimpleNativeMemoryMap::Create(S, ThrowAway);
+  ASSERT_THAT_EXPECTED(SNMM, Succeeded());
 
   std::future<Expected<void *>> ReserveResult;
-  SNMM->reserve(waitFor(ReserveResult), S.processInfo().pageSize());
-  void *Addr = cantFail(ReserveResult.get());
+  (*SNMM)->reserve(waitFor(ReserveResult), S.processInfo().pageSize());
+  auto Addr = ReserveResult.get();
+  ASSERT_THAT_EXPECTED(Addr, Succeeded());
 
   std::future<Error> ReleaseResult;
-  SNMM->releaseMultiple(waitFor(ReleaseResult), {Addr});
-  cantFail(ReleaseResult.get());
+  (*SNMM)->releaseMultiple(waitFor(ReleaseResult), {*Addr});
+  ASSERT_THAT_ERROR(ReleaseResult.get(), Succeeded());
 }
 
 TEST(SimpleNativeMemoryMapTest, ReleaseMultipleReportsErrors) {
@@ -192,15 +199,14 @@ TEST(SimpleNativeMemoryMapTest, ReleaseMultipleReportsErrors) {
   std::vector<std::string> Errors;
   Session S(mockExecutorProcessInfo(), noDispatch, AccumulateErrors(Errors));
   SimpleSymbolTable ThrowAway;
-  auto SNMM = cantFail(SimpleNativeMemoryMap::Create(S, ThrowAway));
+  auto SNMM = SimpleNativeMemoryMap::Create(S, ThrowAway);
+  ASSERT_THAT_EXPECTED(SNMM, Succeeded());
 
   // Try to release an address that was never reserved.
   int Dummy;
   std::future<Error> ReleaseResult;
-  SNMM->releaseMultiple(waitFor(ReleaseResult), {&Dummy});
-  auto Err = ReleaseResult.get();
-  EXPECT_TRUE(!!Err);
-  consumeError(std::move(Err));
+  (*SNMM)->releaseMultiple(waitFor(ReleaseResult), {&Dummy});
+  EXPECT_THAT_ERROR(ReleaseResult.get(), Failed());
 
   // The error for the unrecognized address should have been reported
   // via reportError (not silently consumed).
@@ -213,24 +219,26 @@ TEST(SimpleNativeMemoryMapTest, DeinitializeMultipleReportsErrors) {
   std::vector<std::string> Errors;
   Session S(mockExecutorProcessInfo(), noDispatch, AccumulateErrors(Errors));
   SimpleSymbolTable ThrowAway;
-  auto SNMM = cantFail(SimpleNativeMemoryMap::Create(S, ThrowAway));
+  auto SNMM = SimpleNativeMemoryMap::Create(S, ThrowAway);
+  ASSERT_THAT_EXPECTED(SNMM, Succeeded());
 
   // Reserve and initialize a slab so we have a valid context.
   std::future<Expected<void *>> ReserveResult;
-  SNMM->reserve(waitFor(ReserveResult), 1024 * 1024 * 1024);
-  void *Addr = cantFail(ReserveResult.get());
+  (*SNMM)->reserve(waitFor(ReserveResult), 1024 * 1024 * 1024);
+  auto Addr = ReserveResult.get();
+  ASSERT_THAT_EXPECTED(Addr, Succeeded());
 
   // Try to deinitialize an address that was never initialized.
   // This should fail and report the error.
   std::future<Error> DeinitResult;
-  SNMM->deinitializeMultiple(waitFor(DeinitResult), {Addr});
+  (*SNMM)->deinitializeMultiple(waitFor(DeinitResult), {*Addr});
   EXPECT_THAT_ERROR(DeinitResult.get(), Failed());
 
   EXPECT_EQ(Errors.size(), 1U);
 
   std::future<Error> ReleaseResult;
-  SNMM->releaseMultiple(waitFor(ReleaseResult), {Addr});
-  cantFail(ReleaseResult.get());
+  (*SNMM)->releaseMultiple(waitFor(ReleaseResult), {*Addr});
+  ASSERT_THAT_ERROR(ReleaseResult.get(), Succeeded());
 }
 
 TEST(SimpleNativeMemoryMapTest, ReserveInitializeShutdown) {
@@ -239,14 +247,16 @@ TEST(SimpleNativeMemoryMapTest, ReserveInitializeShutdown) {
 
   Session S(mockExecutorProcessInfo(), noDispatch, noErrors);
   SimpleSymbolTable ThrowAway;
-  auto SNMM = cantFail(SimpleNativeMemoryMap::Create(S, ThrowAway));
+  auto SNMM = SimpleNativeMemoryMap::Create(S, ThrowAway);
+  ASSERT_THAT_EXPECTED(SNMM, Succeeded());
 
   std::future<Expected<void *>> ReserveResult;
-  SNMM->reserve(waitFor(ReserveResult), 1024 * 1024 * 1024);
-  void *Addr = cantFail(ReserveResult.get());
+  (*SNMM)->reserve(waitFor(ReserveResult), 1024 * 1024 * 1024);
+  auto Addr = ReserveResult.get();
+  ASSERT_THAT_EXPECTED(Addr, Succeeded());
 
   char *InitializeBase = // Initialize addr at non-zero (64kb) offset from base.
-      reinterpret_cast<char *>(Addr) + 64 * 1024;
+      reinterpret_cast<char *>(*Addr) + 64 * 1024;
   uint64_t SentinelValue = 0;
 
   SimpleNativeMemoryMap::InitializeRequest IR;
@@ -262,13 +272,13 @@ TEST(SimpleNativeMemoryMapTest, ReserveInitializeShutdown) {
            ExecutorAddr::fromPtr(InitializeBase))});
 
   std::future<Expected<void *>> InitializeResult;
-  SNMM->initialize(waitFor(InitializeResult), std::move(IR));
-  cantFail(InitializeResult.get());
+  (*SNMM)->initialize(waitFor(InitializeResult), std::move(IR));
+  ASSERT_THAT_EXPECTED(InitializeResult.get(), Succeeded());
 
   EXPECT_EQ(SentinelValue, 0U);
 
   std::future<void> ShutdownResult;
-  SNMM->onShutdown(waitFor(ShutdownResult));
+  (*SNMM)->onShutdown(waitFor(ShutdownResult));
   ShutdownResult.get();
 
   EXPECT_EQ(SentinelValue, 42);
@@ -280,14 +290,16 @@ TEST(SimpleNativeMemoryMapTest, ReserveInitializeDetachShutdown) {
 
   Session S(mockExecutorProcessInfo(), noDispatch, noErrors);
   SimpleSymbolTable ThrowAway;
-  auto SNMM = cantFail(SimpleNativeMemoryMap::Create(S, ThrowAway));
+  auto SNMM = SimpleNativeMemoryMap::Create(S, ThrowAway);
+  ASSERT_THAT_EXPECTED(SNMM, Succeeded());
 
   std::future<Expected<void *>> ReserveResult;
-  SNMM->reserve(waitFor(ReserveResult), 1024 * 1024 * 1024);
-  void *Addr = cantFail(ReserveResult.get());
+  (*SNMM)->reserve(waitFor(ReserveResult), 1024 * 1024 * 1024);
+  auto Addr = ReserveResult.get();
+  ASSERT_THAT_EXPECTED(Addr, Succeeded());
 
   char *InitializeBase = // Initialize addr at non-zero (64kb) offset from base.
-      reinterpret_cast<char *>(Addr) + 64 * 1024;
+      reinterpret_cast<char *>(*Addr) + 64 * 1024;
   uint64_t SentinelValue = 0;
 
   SimpleNativeMemoryMap::InitializeRequest IR;
@@ -303,19 +315,19 @@ TEST(SimpleNativeMemoryMapTest, ReserveInitializeDetachShutdown) {
            ExecutorAddr::fromPtr(InitializeBase))});
 
   std::future<Expected<void *>> InitializeResult;
-  SNMM->initialize(waitFor(InitializeResult), std::move(IR));
-  cantFail(InitializeResult.get());
+  (*SNMM)->initialize(waitFor(InitializeResult), std::move(IR));
+  ASSERT_THAT_EXPECTED(InitializeResult.get(), Succeeded());
 
   EXPECT_EQ(SentinelValue, 0U);
 
   std::future<void> DetachResult;
-  SNMM->onDetach(waitFor(DetachResult), /* ShutdownRequested */ false);
+  (*SNMM)->onDetach(waitFor(DetachResult), /* ShutdownRequested */ false);
   DetachResult.get();
 
   EXPECT_EQ(SentinelValue, 0);
 
   std::future<void> ShutdownResult;
-  SNMM->onShutdown(waitFor(ShutdownResult));
+  (*SNMM)->onShutdown(waitFor(ShutdownResult));
   ShutdownResult.get();
 
   EXPECT_EQ(SentinelValue, 42);



More information about the llvm-commits mailing list