Both debug and non-debug configuration have been tested, through
for debug in DEBUG NDEBUG; do
clang-tidy mfbt/*.h '-config={"Checks": ["-*", "misc-include-cleaner"], "CheckOptions": [{"key": "misc-include-cleaner.IgnoreHeaders", "value": ".*-inl.h;.*.inc;new"}, {"key": "misc-include-cleaner.MissingIncludes", "value": false}]}' --extra-arg-before=-xc++ --extra-arg=-std=c++20 --extra-arg=-I$PWD/obj-x86_64-pc-linux-gnu/dist/include --extra-arg=-DXP_UNIX --extra-arg=-I./nsprpub/pr/include/ --extra-arg=-I./config/external/nspr/ --extra-arg=-D$debug
done
Some IWYU pragma: keep(reason) comments have been added when necessary.
Differential Revision: https://phabricator.services.mozilla.com/D287540
37 lines
1.4 KiB
C
37 lines
1.4 KiB
C
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef mozilla_Try_h
|
|
#define mozilla_Try_h
|
|
|
|
#include "mozilla/Likely.h"
|
|
#include "mozilla/Result.h" // IWYU pragma: keep(used by macro MOZ_TRY)
|
|
|
|
/**
|
|
* MOZ_TRY(expr) is the C++ equivalent of Rust's `target = try!(expr);`, using
|
|
* gcc's statement expressions [0]. First, it evaluates expr, which must produce
|
|
* a Result value. On success, the result's success value is 'returned' as
|
|
* rvalue. On error, immediately returns the error result. This pattern allows
|
|
* to directly assign the success value:
|
|
*
|
|
* ```
|
|
* SuccessValue val = MOZ_TRY(Func());
|
|
* ```
|
|
*
|
|
* Where `Func()` returns a `Result<SuccessValue, E>` and is called in a
|
|
* function that returns `Result<T, E>`.
|
|
*
|
|
* [0]: https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html
|
|
*/
|
|
#define MOZ_TRY(expr) \
|
|
__extension__({ \
|
|
auto mozTryVarTempResult = ::mozilla::ToResult(expr); \
|
|
if (MOZ_UNLIKELY(mozTryVarTempResult.isErr())) { \
|
|
return mozTryVarTempResult.propagateErr(); \
|
|
} \
|
|
mozTryVarTempResult.unwrap(); \
|
|
})
|
|
|
|
#endif // mozilla_Try_h
|