|
|
@ -342,8 +342,9 @@ ResultVal<std::remove_reference_t<Arg>> MakeResult(Arg&& arg) { |
|
|
*/ |
|
|
*/ |
|
|
#define CASCADE_RESULT(target, source) \ |
|
|
#define CASCADE_RESULT(target, source) \ |
|
|
auto CONCAT2(check_result_L, __LINE__) = 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(); \ |
|
|
return CONCAT2(check_result_L, __LINE__).Code(); \ |
|
|
|
|
|
} \ |
|
|
target = std::move(*CONCAT2(check_result_L, __LINE__)) |
|
|
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. |
|
|
* non-success, or discarded otherwise. |
|
|
*/ |
|
|
*/ |
|
|
#define CASCADE_CODE(source) \ |
|
|
#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) |