mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 07:30:19 +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
Notes:
sideshowbarker
2024-07-18 01:18:17 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/cd49f30bea7
2 changed files with 7 additions and 13 deletions
7
AK/Try.h
7
AK/Try.h
|
@ -16,3 +16,10 @@
|
||||||
return _temporary_result.release_error(); \
|
return _temporary_result.release_error(); \
|
||||||
_temporary_result.release_value(); \
|
_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(); \
|
_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
|
// 6.2.3 The Completion Record Specification Type, https://tc39.es/ecma262/#sec-completion-record-specification-type
|
||||||
class [[nodiscard]] Completion {
|
class [[nodiscard]] Completion {
|
||||||
public:
|
public:
|
||||||
|
|
Loading…
Reference in a new issue