diff options
author | Michael J. Spencer <bigcheesegs@gmail.com> | 2013-01-23 00:18:31 +0000 |
---|---|---|
committer | Michael J. Spencer <bigcheesegs@gmail.com> | 2013-01-23 00:18:31 +0000 |
commit | f71baa84eaca687c06dc44cc1a4349c8a344c48f (patch) | |
tree | 4116cb9fc6dcac8f2e2af281e3f48af505566d4d /llvm/unittests/Support/ErrorOrTest.cpp | |
parent | 01c7cfa2c058892d0c331711f912d24bbe63dde2 (diff) | |
download | llvm-f71baa84eaca687c06dc44cc1a4349c8a344c48f.zip llvm-f71baa84eaca687c06dc44cc1a4349c8a344c48f.tar.gz llvm-f71baa84eaca687c06dc44cc1a4349c8a344c48f.tar.bz2 |
[Support][ErrorOr] Add optimized specialization of ErrorOr<void>.
ErrorOr<void> represents an operation that returns nothing, but can still fail.
It should be used in cases where you need the aditional user data that ErrorOr
provides over error_code.
llvm-svn: 173209
Diffstat (limited to 'llvm/unittests/Support/ErrorOrTest.cpp')
-rw-r--r-- | llvm/unittests/Support/ErrorOrTest.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/unittests/Support/ErrorOrTest.cpp b/llvm/unittests/Support/ErrorOrTest.cpp index b30895c..a860886 100644 --- a/llvm/unittests/Support/ErrorOrTest.cpp +++ b/llvm/unittests/Support/ErrorOrTest.cpp @@ -45,6 +45,9 @@ TEST(ErrorOr, Types) { *a = 42; EXPECT_EQ(42, x); + EXPECT_FALSE(ErrorOr<void>(make_error_code(errc::broken_pipe))); + EXPECT_TRUE(ErrorOr<void>(make_error_code(errc::success))); + #if LLVM_HAS_CXX11_STDLIB // Move only types. EXPECT_EQ(3, **t3()); @@ -71,10 +74,18 @@ ErrorOr<int> t4() { return InvalidArgError("adena"); } +ErrorOr<void> t5() { + return InvalidArgError("pie"); +} + namespace { TEST(ErrorOr, UserErrorData) { ErrorOr<int> a = t4(); EXPECT_EQ(errc::invalid_argument, a); EXPECT_EQ("adena", t4().getError<InvalidArgError>().ArgName); + + ErrorOr<void> b = t5(); + EXPECT_EQ(errc::invalid_argument, b); + EXPECT_EQ("pie", b.getError<InvalidArgError>().ArgName); } } // end anon namespace |