[Support] Fix ErrorOr equality operator.
authorMichael J. Spencer <bigcheesegs@gmail.com>
Thu, 21 May 2015 23:15:00 +0000 (23:15 +0000)
committerMichael J. Spencer <bigcheesegs@gmail.com>
Thu, 21 May 2015 23:15:00 +0000 (23:15 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237970 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Support/ErrorOr.h
unittests/Support/ErrorOrTest.cpp

index 3577a12cec300c1df68fd87d35bf315d2f8f6303..589404f9b4eeb6d7347dcc841762f74d85b08acb 100644 (file)
@@ -281,8 +281,8 @@ template <class T, class E>
 typename std::enable_if<std::is_error_code_enum<E>::value ||
                             std::is_error_condition_enum<E>::value,
                         bool>::type
-operator==(ErrorOr<T> &Err, E Code) {
-  return std::error_code(Err) == Code;
+operator==(const ErrorOr<T> &Err, E Code) {
+  return Err.getError() == Code;
 }
 } // end namespace llvm
 
index 82bbe090960ac3384a2f4892f95eddcc10f6faca..5e8d442a703942a55a66aa11b98b9b14aca37075 100644 (file)
@@ -66,6 +66,11 @@ TEST(ErrorOr, Covariant) {
   ErrorOr<std::unique_ptr<int>> b4(b3);
 }
 
+TEST(ErrorOr, Comparison) {
+  ErrorOr<int> x(std::errc::no_such_file_or_directory);
+  EXPECT_EQ(x, std::errc::no_such_file_or_directory);
+}
+
 // ErrorOr<int*> x(nullptr);
 // ErrorOr<std::unique_ptr<int>> y = x; // invalid conversion
 static_assert(