AK: Document the non-standard extensions in TRY

I'm not sure there's a material improvement from this patch. However,
I've been reading the error handling code from multiple projects and
was excited to see Serenity being able to handle assignment
(`auto x = TRY(make_x())`) the same way as actions (`TRY(do_x())`).
I think it's worth documenting that this is only possible due to
non-standard extensions.
This commit is contained in:
Paul Herman 2022-10-16 18:54:30 +02:00 committed by Linus Groh
parent 9fad23018a
commit d989c50c90
Notes: sideshowbarker 2024-07-18 03:35:30 +09:00

View file

@ -8,6 +8,11 @@
// NOTE: This macro works with any result type that has the expected APIs. // NOTE: This macro works with any result type that has the expected APIs.
// It's designed with AK::Result and AK::Error in mind. // It's designed with AK::Result and AK::Error in mind.
//
// It depends on a non-standard C++ extension, specifically
// on statement expressions [1]. This is known to be implemented
// by at least clang and gcc.
// [1] https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html
#define TRY(expression) \ #define TRY(expression) \
({ \ ({ \