|
|
|
@ -342,8 +342,9 @@ ResultVal<std::remove_reference_t<Arg>> MakeResult(Arg&& arg) {
|
|
|
|
|
*/
|
|
|
|
|
#define CASCADE_RESULT(target, source) \
|
|
|
|
|
auto CONCAT2(check_result_L, __LINE__) = source; \
|
|
|
|
|
if (CONCAT2(check_result_L, __LINE__).Failed()) \
|
|
|
|
|
if (CONCAT2(check_result_L, __LINE__).Failed()) { \
|
|
|
|
|
return CONCAT2(check_result_L, __LINE__).Code(); \
|
|
|
|
|
} \
|
|
|
|
|
target = std::move(*CONCAT2(check_result_L, __LINE__))
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -351,6 +352,9 @@ ResultVal<std::remove_reference_t<Arg>> MakeResult(Arg&& arg) {
|
|
|
|
|
* non-success, or discarded otherwise.
|
|
|
|
|
*/
|
|
|
|
|
#define CASCADE_CODE(source) \
|
|
|
|
|
auto CONCAT2(check_result_L, __LINE__) = source; \
|
|
|
|
|
if (CONCAT2(check_result_L, __LINE__).IsError()) \
|
|
|
|
|
return CONCAT2(check_result_L, __LINE__);
|
|
|
|
|
do { \
|
|
|
|
|
auto CONCAT2(check_result_L, __LINE__) = source; \
|
|
|
|
|
if (CONCAT2(check_result_L, __LINE__).IsError()) { \
|
|
|
|
|
return CONCAT2(check_result_L, __LINE__); \
|
|
|
|
|
} \
|
|
|
|
|
} while (false)
|
|
|
|
|