mirror of
https://github.com/SerenityOS/serenity
synced 2024-07-21 10:05:32 +00:00
AK+LibJS: Simplify MUST() and move it from LibJS to AK/Try.h
This is generally useful so let's move it to AK. Also it seems that we don't need the temporary variable hack anymore, so let's lose that.
This commit is contained in:
parent
5f7d008791
commit
cd49f30bea
7
AK/Try.h
7
AK/Try.h
|
@ -16,3 +16,10 @@
|
|||
return _temporary_result.release_error(); \
|
||||
_temporary_result.release_value(); \
|
||||
})
|
||||
|
||||
#define MUST(expression) \
|
||||
({ \
|
||||
auto _temporary_result = (expression); \
|
||||
VERIFY(!_temporary_result.is_error()); \
|
||||
_temporary_result.release_value(); \
|
||||
})
|
||||
|
|
|
@ -26,19 +26,6 @@ namespace JS {
|
|||
_temporary_result.release_value(); \
|
||||
})
|
||||
|
||||
// MUST() is to the spec's `!` what TRY() is to `?`.
|
||||
// https://tc39.es/ecma262/#sec-returnifabrupt-shorthands
|
||||
#define MUST(expression) \
|
||||
({ \
|
||||
auto _temporary_result = (expression); \
|
||||
VERIFY(!_temporary_result.is_error()); \
|
||||
/* The return value of "! Something()" is commonly */ \
|
||||
/* ignored, so we assign to a temporary variable here */ \
|
||||
/* to avoid having to (void) all the things. */ \
|
||||
auto _temporary_value = _temporary_result.release_value(); \
|
||||
move(_temporary_value); \
|
||||
})
|
||||
|
||||
// 6.2.3 The Completion Record Specification Type, https://tc39.es/ecma262/#sec-completion-record-specification-type
|
||||
class [[nodiscard]] Completion {
|
||||
public:
|
||||
|
|
Loading…
Reference in a new issue