mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-08 10:44:56 +00:00
Bug 1731801 - Allow ToResult to return other nsresult like error types; r=glandium
Differential Revision: https://phabricator.services.mozilla.com/D126270
This commit is contained in:
parent
846b87a781
commit
ae30add3b8
@ -39,7 +39,8 @@ class [[nodiscard]] GenericErrorResult<nsresult> {
|
||||
};
|
||||
|
||||
// Allow MOZ_TRY to handle `PRStatus` values.
|
||||
inline Result<Ok, nsresult> ToResult(PRStatus aValue);
|
||||
template <typename E = nsresult>
|
||||
inline Result<Ok, E> ToResult(PRStatus aValue);
|
||||
|
||||
} // namespace mozilla
|
||||
|
||||
@ -47,18 +48,28 @@ inline Result<Ok, nsresult> ToResult(PRStatus aValue);
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
inline Result<Ok, nsresult> ToResult(nsresult aValue) {
|
||||
template <typename ResultType>
|
||||
struct ResultTypeTraits;
|
||||
|
||||
template <>
|
||||
struct ResultTypeTraits<nsresult> {
|
||||
static nsresult From(nsresult aValue) { return aValue; }
|
||||
};
|
||||
|
||||
template <typename E>
|
||||
inline Result<Ok, E> ToResult(nsresult aValue) {
|
||||
if (NS_FAILED(aValue)) {
|
||||
return Err(aValue);
|
||||
return Err(ResultTypeTraits<E>::From(aValue));
|
||||
}
|
||||
return Ok();
|
||||
}
|
||||
|
||||
inline Result<Ok, nsresult> ToResult(PRStatus aValue) {
|
||||
template <typename E>
|
||||
inline Result<Ok, E> ToResult(PRStatus aValue) {
|
||||
if (aValue == PR_SUCCESS) {
|
||||
return Ok();
|
||||
}
|
||||
return Err(NS_ERROR_FAILURE);
|
||||
return Err(ResultTypeTraits<E>::From(NS_ERROR_FAILURE));
|
||||
}
|
||||
|
||||
namespace detail {
|
||||
|
@ -243,7 +243,8 @@ template <typename V, typename E>
|
||||
class Result;
|
||||
|
||||
// Allow MOZ_TRY to handle `nsresult` values.
|
||||
inline Result<Ok, nsresult> ToResult(nsresult aValue);
|
||||
template <typename E = nsresult>
|
||||
inline Result<Ok, E> ToResult(nsresult aValue);
|
||||
} // namespace mozilla
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user