================ @@ -345,18 +344,15 @@ TEST_F(OpenMPIRBuilderTest, CreateBarrier) { IRBuilder<> Builder(BB); - OpenMPIRBuilder::InsertPointOrErrorTy BarrierIP1 = - OMPBuilder.createBarrier({IRBuilder<>::InsertPoint()}, OMPD_for); - assert(BarrierIP1 && "unexpected error"); + ASSERT_TRUE(expectedToOptional( + OMPBuilder.createBarrier({IRBuilder<>::InsertPoint()}, OMPD_for))); ---------------- Meinersbur wrote:
`llvm::Expected` as well as `std::optional` are convertable to `bool`, but because `ASSERT_TRUE` actually converts to `AssertionResult`, only the latter works. So this is the shorter version of the same (which I have been using so far): ```suggestion ASSERT_TRUE((bool)OMPBuilder.createBarrier({IRBuilder<>::InsertPoint()}, OMPD_for)); ``` I hoped you could find something nicer. Some tests define their own macro `ASSERT_NO_ERROR`. LLVM itself defines `ASSERT_THAT_EXPECTED` to be used in GTest. None of these return the value in-case of no-error, so ugly to use, but seem to be the canonical way to do the check. How about a helper function similar to `cantFail`, but guaranteed to crash instead of undefined behaviour? ``` template<typename T> T successOrAbort(Expected<T> &&ValOrErr) { if (ValOrErr) return std::move(*ValOrErr); report_fatal_error(ValOrErr.takeError()); } ``` Something really cool would properly integreate into the GTest envorinment. ``` template<typename T> T successOrAbort(Expected<T> &&ValOrErr) { if (ValOrErr) return std::move(*ValOrErr); GTEST_NONFATAL_FAILURE_("Expected<T> contains error value"); // Might be considered internal to GTest. abort(); // Cannot continue without a value to unwrap } ``` or make it a macro such we can customize the message and use `GTEST_MESSAGE_AT_` and report the affected line number. https://github.com/llvm/llvm-project/pull/115863 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits