aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/Support/ErrorOrTest.cpp
diff options
context:
space:
mode:
authorMichael J. Spencer <bigcheesegs@gmail.com>2013-01-23 00:18:31 +0000
committerMichael J. Spencer <bigcheesegs@gmail.com>2013-01-23 00:18:31 +0000
commitf71baa84eaca687c06dc44cc1a4349c8a344c48f (patch)
tree4116cb9fc6dcac8f2e2af281e3f48af505566d4d /llvm/unittests/Support/ErrorOrTest.cpp
parent01c7cfa2c058892d0c331711f912d24bbe63dde2 (diff)
downloadllvm-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.cpp11
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