[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)
llvm-svn: 237970

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

index 3577a12..589404f 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 82bbe09..5e8d442 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(