|
@@ -34,7 +34,10 @@ struct SimpleException {
|
|
template<typename ValueType>
|
|
template<typename ValueType>
|
|
class ExceptionOr {
|
|
class ExceptionOr {
|
|
public:
|
|
public:
|
|
- ExceptionOr() requires(IsSame<ValueType, Empty>) = default;
|
|
|
|
|
|
+ ExceptionOr() requires(IsSame<ValueType, Empty>)
|
|
|
|
+ : m_result(Empty {})
|
|
|
|
+ {
|
|
|
|
+ }
|
|
|
|
|
|
ExceptionOr(const ValueType& result)
|
|
ExceptionOr(const ValueType& result)
|
|
: m_result(result)
|
|
: m_result(result)
|
|
@@ -70,7 +73,7 @@ public:
|
|
return m_result.value();
|
|
return m_result.value();
|
|
}
|
|
}
|
|
|
|
|
|
- ValueType release_value() requires(!IsSame<ValueType, Empty>)
|
|
|
|
|
|
+ ValueType release_value()
|
|
{
|
|
{
|
|
return m_result.release_value();
|
|
return m_result.release_value();
|
|
}
|
|
}
|
|
@@ -85,6 +88,10 @@ public:
|
|
return !m_exception.template has<Empty>();
|
|
return !m_exception.template has<Empty>();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // These are for compatibility with the TRY() macro in AK.
|
|
|
|
+ [[nodiscard]] bool is_error() const { return is_exception(); }
|
|
|
|
+ Variant<SimpleException, NonnullRefPtr<DOMException>> release_error() { return exception(); }
|
|
|
|
+
|
|
private:
|
|
private:
|
|
Optional<ValueType> m_result;
|
|
Optional<ValueType> m_result;
|
|
// https://webidl.spec.whatwg.org/#idl-exceptions
|
|
// https://webidl.spec.whatwg.org/#idl-exceptions
|