Revert "[Support][ErrorOr] Add support for convertable types."

This reverts commit a33e1fafac.

This unit test crashes on Darwon. It needs to be temporarily reverted
to unblock the test infrastructure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174458 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Andrew Trick
2013-02-05 22:50:20 +00:00
parent 8c74ecfbdd
commit 2a78bb961a
2 changed files with 3 additions and 16 deletions

View File

@@ -162,7 +162,6 @@ public:
/// T cannot be a rvalue reference. /// T cannot be a rvalue reference.
template<class T> template<class T>
class ErrorOr { class ErrorOr {
template <class OtherT> friend class ErrorOr;
static const bool isRef = is_reference<T>::value; static const bool isRef = is_reference<T>::value;
typedef ReferenceStorage<typename remove_reference<T>::type> wrap; typedef ReferenceStorage<typename remove_reference<T>::type> wrap;
@@ -199,8 +198,7 @@ public:
new (get()) storage_type(moveIfMoveConstructible<storage_type>(Val)); new (get()) storage_type(moveIfMoveConstructible<storage_type>(Val));
} }
template <class OtherT> ErrorOr(const ErrorOr &Other) : IsValid(false) {
ErrorOr(ErrorOr<OtherT> &Other) : IsValid(false) {
// Construct an invalid ErrorOr if other is invalid. // Construct an invalid ErrorOr if other is invalid.
if (!Other.IsValid) if (!Other.IsValid)
return; return;
@@ -228,8 +226,7 @@ public:
} }
#if LLVM_HAS_RVALUE_REFERENCES #if LLVM_HAS_RVALUE_REFERENCES
template <class OtherT> ErrorOr(ErrorOr &&Other) : IsValid(false) {
ErrorOr(ErrorOr<OtherT> &&Other) : IsValid(false) {
// Construct an invalid ErrorOr if other is invalid. // Construct an invalid ErrorOr if other is invalid.
if (!Other.IsValid) if (!Other.IsValid)
return; return;
@@ -311,6 +308,7 @@ private:
return &Val->get(); return &Val->get();
} }
protected:
storage_type *get() { storage_type *get() {
assert(IsValid && "Can't do anything on a default constructed ErrorOr!"); assert(IsValid && "Can't do anything on a default constructed ErrorOr!");
assert(!HasError && "Cannot get value when an error exists!"); assert(!HasError && "Cannot get value when an error exists!");

View File

@@ -53,17 +53,6 @@ TEST(ErrorOr, Types) {
EXPECT_EQ(3, **t3()); EXPECT_EQ(3, **t3());
#endif #endif
} }
struct B {};
struct D : B {};
TEST(ErrorOr, Covariant) {
ErrorOr<B*> b(ErrorOr<D*>(0));
#if LLVM_HAS_CXX11_STDLIB
ErrorOr<std::unique_ptr<B> > b1(ErrorOr<std::unique_ptr<D> >(0));
#endif
}
} // end anon namespace } // end anon namespace
struct InvalidArgError { struct InvalidArgError {